diff -Nrcpad gcc-17-20260531/.forgejo/CODEOWNERS gcc-17-20260607/.forgejo/CODEOWNERS
*** gcc-17-20260531/.forgejo/CODEOWNERS	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/.forgejo/CODEOWNERS	Sun Jun  7 22:32:05 2026
***************
*** 0 ****
--- 1,13 ----
+ # Experimental CODEOWNERS file for GCC.  This is known to be incomplete
+ 
+ # AArch64 Maintainers
+ .*/aarch64/.* @gcc/Maintainers.AArch64
+ 
+ # Arm Maintainers
+ .*/arm/.* @gcc/Maintainers.Arm
+ 
+ # Libstdc++ maintainers
+ libstdc[+][+]v3/.* @gcc/Maintainers.libstdcplusplus
+ 
+ # Forge maintainers
+ (.forgejo|.github)/.* @rdfm
diff -Nrcpad gcc-17-20260531/ChangeLog gcc-17-20260607/ChangeLog
*** gcc-17-20260531/ChangeLog	Sun May 31 22:32:04 2026
--- gcc-17-20260607/ChangeLog	Sun Jun  7 22:32:05 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-06-03  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS: Add all known missing account names to
+ 	write-after.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* Makefile.def: Fix typos.
diff -Nrcpad gcc-17-20260531/LAST_UPDATED gcc-17-20260607/LAST_UPDATED
*** gcc-17-20260531/LAST_UPDATED	Sun May 31 22:32:19 2026
--- gcc-17-20260607/LAST_UPDATED	Sun Jun  7 22:32:20 2026
***************
*** 1 ****
! Obtained from git: master revision f20bc4c2fe00928013c533e241b89ae3a6724ca1
--- 1 ----
! Obtained from git: master revision b5a3b874b8df2ea2ca82bd97fcd5906f7ebe82d8
diff -Nrcpad gcc-17-20260531/MAINTAINERS gcc-17-20260607/MAINTAINERS
*** gcc-17-20260531/MAINTAINERS	Sun May 31 22:32:04 2026
--- gcc-17-20260607/MAINTAINERS	Sun Jun  7 22:32:05 2026
*************** Sterling Augustine              sterling
*** 353,380 ****
  Matt Austern                    austern         <austern@google.com>
  David Ayers                     ayers           <ayers@fsfe.org>
  Prakhar Bahuguna                prakhar         <prakhar.bahuguna@arm.com>
! Giovanni Bajo                   -               <giovannibajo@gcc.gnu.org>
  Simon Baldwin                   simonb          <simonb@google.com>
  Richard Ball                    ricbal02        <richard.ball@arm.com>
! Scott Bambrough                 -               <scottb@netwinder.org>
! Wolfgang Bangerth               -               <bangerth@dealii.org>
  Claudio Bantaloukas             rdfm            <claudio.bantaloukas@arm.com>
! Gergö Barany                    -               <gergo@codesourcery.com>
  Daniel Barboza                  dbarboza        <daniel.barboza@oss.qualcomm.com>
! Thiago Jung Bauermann           -               <thiago.bauermann@linaro.org>
  Charles Baylis                  cbaylis         <charles.baylis@linaro.org>
  Christopher Bazley              chrbaz01        <chris.bazley@arm.com>
  Tejas Belagod                   belagod         <tejas.belagod@arm.com>
  Andrey Belevantsev              abel            <abel@ispras.ru>
! Matthew Beliveau                -               <mbelivea@redhat.com>
! Serge Belyshev                  -               <belyshev@depni.sinp.msu.ru>
  Jon Beniston                    jbeniston       <jon@beniston.com>
! Andrew Bennett                  -               <andrew.bennett@imgtec.com>
  Andrew Benson                   abensonca       <abensonca@gmail.com>
  Peter Bergner                   bergner         <bergner@tenstorrent.com>
  Daniel Berlin                   dberlin         <dberlin@dberlin.org>
! Pat Bernardi                    -               <bernardi@adacore.com>
! Jan Beulich                     -               <jbeulich@suse.com>
  Indu Bhagat                     ibhagat         <indu.bhagat@oracle.com>
  Richard Biener                  rguenth         <rguenther@suse.de>
  David Billinghurst              billingd        <David.Billinghurst@riotinto.com>
--- 353,380 ----
  Matt Austern                    austern         <austern@google.com>
  David Ayers                     ayers           <ayers@fsfe.org>
  Prakhar Bahuguna                prakhar         <prakhar.bahuguna@arm.com>
! Giovanni Bajo                   giovannibajo    <giovannibajo@gcc.gnu.org>
  Simon Baldwin                   simonb          <simonb@google.com>
  Richard Ball                    ricbal02        <richard.ball@arm.com>
! Scott Bambrough                 scottb          <scottb@netwinder.org>
! Wolfgang Bangerth               bangerth        <bangerth@dealii.org>
  Claudio Bantaloukas             rdfm            <claudio.bantaloukas@arm.com>
! Gergö Barany                    gergo           <gergo@codesourcery.com>
  Daniel Barboza                  dbarboza        <daniel.barboza@oss.qualcomm.com>
! Thiago Jung Bauermann           bauermann       <thiago.bauermann@linaro.org>
  Charles Baylis                  cbaylis         <charles.baylis@linaro.org>
  Christopher Bazley              chrbaz01        <chris.bazley@arm.com>
  Tejas Belagod                   belagod         <tejas.belagod@arm.com>
  Andrey Belevantsev              abel            <abel@ispras.ru>
! Matthew Beliveau                mbelivea        <mbelivea@redhat.com>
! Serge Belyshev                  ssb             <belyshev@depni.sinp.msu.ru>
  Jon Beniston                    jbeniston       <jon@beniston.com>
! Andrew Bennett                  abennett        <andrew.bennett@imgtec.com>
  Andrew Benson                   abensonca       <abensonca@gmail.com>
  Peter Bergner                   bergner         <bergner@tenstorrent.com>
  Daniel Berlin                   dberlin         <dberlin@dberlin.org>
! Pat Bernardi                    pbernardi       <bernardi@adacore.com>
! Jan Beulich                     jbeulich        <jbeulich@suse.com>
  Indu Bhagat                     ibhagat         <indu.bhagat@oracle.com>
  Richard Biener                  rguenth         <rguenther@suse.de>
  David Billinghurst              billingd        <David.Billinghurst@riotinto.com>
*************** Uros Bizjak                     uros
*** 384,409 ****
  Eric Blake                      ericb           <ericb@gcc.gnu.org>
  Janne Blomqvist                 jb              <jb@gcc.gnu.org>
  Phil Blundell                   pb              <pb@futuretv.com>
! Hans Boehm                      -               <hboehm@gcc.gnu.org>
  Segher Boessenkool              segher          <segher@kernel.crashing.org>
  Lynn Boger                      boger           <laboger@linux.vnet.ibm.com>
  Ian Bolton                      ibolton         <ian.bolton@arm.com>
  Andrea Bona                     andreabo        <andrea.bona@st.com>
! Paolo Bonzini                   -               <bonzini@gnu.org>
  Neil Booth                      neil            <neil@daikokuya.co.uk>
  Steven Bosscher                 steven          <steven@gcc.gnu.org>
  Eric Botcazou                   ebotcazou       <ebotcazou@libertysurf.fr>
  Per Bothner                     bothner         <per@bothner.com>
! Antoni Boucher                  -               <bouanto@zoho.com>
  Sebastien Bourdeauducq          lekernel        <sebastien@milkymist.org>
  Robert Bowdidge                 bowdidge        <bowdidge@apple.com>
! James Bowman                    -               <james.bowman@ftdichip.com>
! Joel Brobecker                  -               <brobecker@gnat.com>
! Dave Brolley                    -               <brolley@redhat.com>
  Julian Brown                    jules           <julian@codesourcery.com>
  Christian Bruel                 chrbr           <christian.bruel@st.com>
  Iain Buclaw                     ibuclaw         <ibuclaw@gdcproject.org>
! Kevin Buettner                  -               <kevinb@redhat.com>
  Andrew Burgess                  aburgess        <aburgess@redhat.com>
  Tobias Burnus                   burnus          <tburnus@baylibre.com>
  Adam Butcher                    abutcher        <adam@jessamine.co.uk>
--- 384,409 ----
  Eric Blake                      ericb           <ericb@gcc.gnu.org>
  Janne Blomqvist                 jb              <jb@gcc.gnu.org>
  Phil Blundell                   pb              <pb@futuretv.com>
! Hans Boehm                      hboehm          <hboehm@gcc.gnu.org>
  Segher Boessenkool              segher          <segher@kernel.crashing.org>
  Lynn Boger                      boger           <laboger@linux.vnet.ibm.com>
  Ian Bolton                      ibolton         <ian.bolton@arm.com>
  Andrea Bona                     andreabo        <andrea.bona@st.com>
! Paolo Bonzini                   bonzini         <bonzini@gnu.org>
  Neil Booth                      neil            <neil@daikokuya.co.uk>
  Steven Bosscher                 steven          <steven@gcc.gnu.org>
  Eric Botcazou                   ebotcazou       <ebotcazou@libertysurf.fr>
  Per Bothner                     bothner         <per@bothner.com>
! Antoni Boucher                  antoyo          <bouanto@zoho.com>
  Sebastien Bourdeauducq          lekernel        <sebastien@milkymist.org>
  Robert Bowdidge                 bowdidge        <bowdidge@apple.com>
! James Bowman                    jamesbowman     <james.bowman@ftdichip.com>
! Joel Brobecker                  brobecke        <brobecker@gnat.com>
! Dave Brolley                    brolley         <brolley@redhat.com>
  Julian Brown                    jules           <julian@codesourcery.com>
  Christian Bruel                 chrbr           <christian.bruel@st.com>
  Iain Buclaw                     ibuclaw         <ibuclaw@gdcproject.org>
! Kevin Buettner                  kevinb          <kevinb@redhat.com>
  Andrew Burgess                  aburgess        <aburgess@redhat.com>
  Tobias Burnus                   burnus          <tburnus@baylibre.com>
  Adam Butcher                    abutcher        <adam@jessamine.co.uk>
*************** Daniel Carrera                  dcarrera
*** 414,440 ****
  Stephane Carrez                 ciceron         <stcarrez@nerim.fr>
  Gabriel Charette                gchare          <gchare@google.com>
  Arnaud Charlet                  charlet         <charlet@adacore.com>
! 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>
! Lulu Cheng                      -               <chenglulu@loongson.cn>
  Denis Chertykov                 denisc          <chertykov@gmail.com>
! Monk Chiang                     -               <monkchiang@gmail.com>
! Clément Chigot                  -               <chigot@adacore.com>
  Harshit Chopra                  harshit         <harshit@google.com>
! Juergen Christ                  -               <jchrist@linux.ibm.com>
  Tamar Christina                 tnfchris        <tamar.christina@arm.com>
  Eric Christopher                echristo        <echristo@gmail.com>
  Paul Clarke                     pc              <pc@us.ibm.com>
  Nick Clifton                    nickc           <nickc@redhat.com>
  Arthur Cohen                    cohenarthur     <arthur.cohen@embecosm.com>
! William Cohen                   -               <wcohen@redhat.com>
  Michael Collison                collison        <michael.collison@arm.com>
! Alejandro Colomar               -               <alx@kernel.org>
  Josh Conner                     jconner         <joshconner@google.com>
  R. Kelley Cook                  kcook           <kcook@gcc.gnu.org>
  Alex Coplan                     acoplan         <alex.coplan@arm.com>
--- 414,440 ----
  Stephane Carrez                 ciceron         <stcarrez@nerim.fr>
  Gabriel Charette                gchare          <gchare@google.com>
  Arnaud Charlet                  charlet         <charlet@adacore.com>
! Chandra Chavva                  cchavva         <cchavva@redhat.com>
  Dhruv Chawla                    dhruvc          <dhruvc@nvidia.com>
  Dehao Chen                      dehao           <dehao@google.com>
! Zhongyao Chen                   zhongyao        <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>
! Lulu Cheng                      chenglulu       <chenglulu@loongson.cn>
  Denis Chertykov                 denisc          <chertykov@gmail.com>
! Monk Chiang                     monkc           <monkchiang@gmail.com>
! Clément Chigot                  helflym         <chigot@adacore.com>
  Harshit Chopra                  harshit         <harshit@google.com>
! Juergen Christ                  jchrist         <jchrist@linux.ibm.com>
  Tamar Christina                 tnfchris        <tamar.christina@arm.com>
  Eric Christopher                echristo        <echristo@gmail.com>
  Paul Clarke                     pc              <pc@us.ibm.com>
  Nick Clifton                    nickc           <nickc@redhat.com>
  Arthur Cohen                    cohenarthur     <arthur.cohen@embecosm.com>
! William Cohen                   wcohen          <wcohen@redhat.com>
  Michael Collison                collison        <michael.collison@arm.com>
! Alejandro Colomar               alx             <alx@kernel.org>
  Josh Conner                     jconner         <joshconner@google.com>
  R. Kelley Cook                  kcook           <kcook@gcc.gnu.org>
  Alex Coplan                     acoplan         <alex.coplan@arm.com>
*************** Christian Cornelssen            ccorn
*** 443,451 ****
  Ralf Corsepius                  corsepiu        <ralf.corsepius@rtems.org>
  François-Xavier Coudert         fxcoudert       <fxcoudert@gcc.gnu.org>
  Ludovic Courtès                 ludo            <ludo@gnu.org>
! Cary Coutant                    -               <ccoutant@gmail.com>
  Lawrence Crowl                  crowl           <crowl@google.com>
! Lili Cui                        -               <lili.cui@intel.com>
  Giuseppe D'Angelo               peppe           <giuseppe.dangelo@kdab.com>
  Palmer Dabbelt                  palmer          <palmer@dabbelt.com>
  Ian Dall                        iandall         <ian@beware.dropbear.id.au>
--- 443,451 ----
  Ralf Corsepius                  corsepiu        <ralf.corsepius@rtems.org>
  François-Xavier Coudert         fxcoudert       <fxcoudert@gcc.gnu.org>
  Ludovic Courtès                 ludo            <ludo@gnu.org>
! Cary Coutant                    ccoutant        <ccoutant@gmail.com>
  Lawrence Crowl                  crowl           <crowl@google.com>
! Lili Cui                        cuilili         <lili.cui@intel.com>
  Giuseppe D'Angelo               peppe           <giuseppe.dangelo@kdab.com>
  Palmer Dabbelt                  palmer          <palmer@dabbelt.com>
  Ian Dall                        iandall         <ian@beware.dropbear.id.au>
*************** Sameera Deshpande               sameerad
*** 461,473 ****
  Wilco Dijkstra                  wilco           <wilco.dijkstra@arm.com>
  Dimitar Dimitrov                dimitar         <dimitar@dinux.eu>
  Benoit Dupont de Dinechin       bd3             <benoit.dupont-de-dinechin@st.com>
! Lehua Ding                      -               <lehua.ding@rivai.ai>
  Ulrich Drepper                  drepper         <drepper@gmail.com>
  François Dumont                 fdumont         <fdumont@gcc.gnu.org>
  Zdenek Dvorak                   rakdver         <ook@ucw.cz>
  Michael Eager                   eager           <eager@eagercon.com>
  Richard Earnshaw                rearnsha        <richard.earnshaw@arm.com>
! Jason Eckhardt                  -               <jle@rice.edu>
  Erik Edelmann                   eedelman        <erik.edelmann@iki.fi>
  David Edelsohn                  dje             <dje.gcc@gmail.com>
  Bernd Edlinger                  edlinger        <bernd.edlinger@hotmail.de>
--- 461,473 ----
  Wilco Dijkstra                  wilco           <wilco.dijkstra@arm.com>
  Dimitar Dimitrov                dimitar         <dimitar@dinux.eu>
  Benoit Dupont de Dinechin       bd3             <benoit.dupont-de-dinechin@st.com>
! Lehua Ding                      lhtin           <lehua.ding@rivai.ai>
  Ulrich Drepper                  drepper         <drepper@gmail.com>
  François Dumont                 fdumont         <fdumont@gcc.gnu.org>
  Zdenek Dvorak                   rakdver         <ook@ucw.cz>
  Michael Eager                   eager           <eager@eagercon.com>
  Richard Earnshaw                rearnsha        <richard.earnshaw@arm.com>
! Jason Eckhardt                  jle             <jle@rice.edu>
  Erik Edelmann                   eedelman        <erik.edelmann@iki.fi>
  David Edelsohn                  dje             <dje.gcc@gmail.com>
  Bernd Edlinger                  edlinger        <bernd.edlinger@hotmail.de>
*************** Ben Elliston                    bje
*** 478,510 ****
  Mohan Embar                     membar          <gnustuff@thisiscool.com>
  Oleg Endo                       olegendo        <olegendo@gcc.gnu.org>
  Revital Eres                    revitale        <eres@il.ibm.com>
! Marc Espie                      -               <espie@cvs.openbsd.org>
! Ansgar Esztermann               -               <ansgar@thphy.uni-duesseldorf.de>
  Doug Evans                      devans          <dje@google.com>
  Chris Fairles                   cfairles        <cfairles@gcc.gnu.org>
  Alessandro Fanfarillo           afanfa          <fanfarillo.gcc@gmail.com>
  Changpeng Fang                  cfang           <changpeng.fang@amd.com>
  David Faust                     dfaust          <david.faust@oracle.com>
! Sam Feifer                      -               <sfeifer@redhat.com>
  Eric Feng                       efric           <ef2648@columbia.edu>
  Li Feng                         lifeng          <nemokingdom@gmail.com>
  Max Filippov                    jcmvbkbc        <jcmvbkbc@gmail.com>
  Thomas Fitzsimmons              fitzsim         <fitzsim@redhat.com>
  Alexander Fomin                 afomin          <afomin.mailbox@gmail.com>
! Brian Ford                      -               <ford@vss.fsi.com>
  Matthew Fortune                 mpf             <mfortune@gmail.com>
  Daniel Franke                   dfranke         <franke.daniel@gmail.com>
! John Freeman                    -               <jfreeman08@gmail.com>
  Nathan Froyd                    froydnj         <froydnj@gcc.gnu.org>
! Chao-ying Fu                    -               <fu@mips.com>
  Gary Funck                      gfunck          <gary@intrepid.com>
  Pompapathi V Gadad              pompa           <Pompapathi.V.Gadad@nsc.com>
  Eric Gallager                   egallager       <egall@gwmail.gwu.edu>
! Gopalasubramanian Ganesh        -               <Ganesh.Gopalasubramanian@amd.com>
! Fei Gao                         -               <gaofei@eswincomputing.com>
  Kaveh Ghazi                     ghazi           <ghazi@gcc.gnu.org>
  Doug Gilmore                    dgilmore        <Doug.Gilmore@imgtec.com>
! Matthew Gingell                 -               <gingell@gnat.com>
  Tristan Gingold                 gingold         <tgingold@free.fr>
  Jan-Benedict Glaw               jbglaw          <jbglaw@lug-owl.de>
  Marc Glisse                     glisse          <marc.glisse@inria.fr>
--- 478,510 ----
  Mohan Embar                     membar          <gnustuff@thisiscool.com>
  Oleg Endo                       olegendo        <olegendo@gcc.gnu.org>
  Revital Eres                    revitale        <eres@il.ibm.com>
! Marc Espie                      espie           <espie@cvs.openbsd.org>
! Ansgar Esztermann               ansgar          <ansgar@thphy.uni-duesseldorf.de>
  Doug Evans                      devans          <dje@google.com>
  Chris Fairles                   cfairles        <cfairles@gcc.gnu.org>
  Alessandro Fanfarillo           afanfa          <fanfarillo.gcc@gmail.com>
  Changpeng Fang                  cfang           <changpeng.fang@amd.com>
  David Faust                     dfaust          <david.faust@oracle.com>
! Sam Feifer                      sfeifer         <sfeifer@redhat.com>
  Eric Feng                       efric           <ef2648@columbia.edu>
  Li Feng                         lifeng          <nemokingdom@gmail.com>
  Max Filippov                    jcmvbkbc        <jcmvbkbc@gmail.com>
  Thomas Fitzsimmons              fitzsim         <fitzsim@redhat.com>
  Alexander Fomin                 afomin          <afomin.mailbox@gmail.com>
! Brian Ford                      ford            <ford@vss.fsi.com>
  Matthew Fortune                 mpf             <mfortune@gmail.com>
  Daniel Franke                   dfranke         <franke.daniel@gmail.com>
! John Freeman                    jfreeman        <jfreeman08@gmail.com>
  Nathan Froyd                    froydnj         <froydnj@gcc.gnu.org>
! Chao-ying Fu                    chaoyingfu      <fu@mips.com>
  Gary Funck                      gfunck          <gary@intrepid.com>
  Pompapathi V Gadad              pompa           <Pompapathi.V.Gadad@nsc.com>
  Eric Gallager                   egallager       <egall@gwmail.gwu.edu>
! Gopalasubramanian Ganesh        gganesh         <Ganesh.Gopalasubramanian@amd.com>
! Fei Gao                         feigao          <gaofei@eswincomputing.com>
  Kaveh Ghazi                     ghazi           <ghazi@gcc.gnu.org>
  Doug Gilmore                    dgilmore        <Doug.Gilmore@imgtec.com>
! Matthew Gingell                 gingell         <gingell@gnat.com>
  Tristan Gingold                 gingold         <tgingold@free.fr>
  Jan-Benedict Glaw               jbglaw          <jbglaw@lug-owl.de>
  Marc Glisse                     glisse          <marc.glisse@inria.fr>
*************** Vineet Gupta                    vineetg
*** 526,532 ****
  Naveen H.S                      naveenh         <naveen.siddegowda@oss.qualcomm.com>
  Mostafa Hagog                   hagog           <hagog@gcc.gnu.org>
  Olivier Hainque                 hainque         <hainque@adacore.com>
! Jivan Hakobyan                  -               <jivanhakobyan9@gmail.com>
  Andrew Haley                    aph             <aph@redhat.com>
  Demin Han                       deminhan        <demin.han@starfivetech.com>
  Mark Harmstone                  maharmstone     <mark@harmstone.com>
--- 526,532 ----
  Naveen H.S                      naveenh         <naveen.siddegowda@oss.qualcomm.com>
  Mostafa Hagog                   hagog           <hagog@gcc.gnu.org>
  Olivier Hainque                 hainque         <hainque@adacore.com>
! Jivan Hakobyan                  jivan           <jivanhakobyan9@gmail.com>
  Andrew Haley                    aph             <aph@redhat.com>
  Demin Han                       deminhan        <demin.han@starfivetech.com>
  Mark Harmstone                  maharmstone     <mark@harmstone.com>
*************** Li Jia He                       helijia
*** 540,558 ****
  Mark Heffernan                  meheff          <meheff@google.com>
  George Helffrich                george          <george@gcc.gnu.org>
  Daniel Hellstrom                danielh         <daniel@gaisler.com>
! Fergus Henderson                -               <fjh@cs.mu.oz.au>
  Richard Henderson               rth             <rth@gcc.gnu.org>
  Stuart Henderson                shenders        <shenders@gcc.gnu.org>
  Aldy Hernandez                  aldyh           <aldy@quesejoda.com>
  Philip Herron                   redbrain        <herron.philip@googlemail.com>
! Marius Hillenbrand              -               <mhillen@linux.ibm.com>
! Matthew Hiller                  -               <hiller@redhat.com>
  Kazu Hirata                     kazu            <kazu@codesourcery.com>
! Manfred Hollstein               -               <mh@suse.com>
  Stafford Horne                  shorne          <shorne@gmail.com>
  Cong Hou                        congh           <congh@google.com>
! Levy Hsu                        -               <admin@levyhsu.com>
! Lin Hu                          -               <lin1.hu@intel.com>
  Sebastian Huber                 sh              <sebastian.huber@embedded-brains.de>
  Jan Hubicka                     hubicka         <hubicka@ucw.cz>
  Falk Hueffner                   falk            <falk@debian.org>
--- 540,558 ----
  Mark Heffernan                  meheff          <meheff@google.com>
  George Helffrich                george          <george@gcc.gnu.org>
  Daniel Hellstrom                danielh         <daniel@gaisler.com>
! Fergus Henderson                fjh             <fjh@cs.mu.oz.au>
  Richard Henderson               rth             <rth@gcc.gnu.org>
  Stuart Henderson                shenders        <shenders@gcc.gnu.org>
  Aldy Hernandez                  aldyh           <aldy@quesejoda.com>
  Philip Herron                   redbrain        <herron.philip@googlemail.com>
! Marius Hillenbrand              mhillen         <mhillen@linux.ibm.com>
! Matthew Hiller                  hiller          <hiller@redhat.com>
  Kazu Hirata                     kazu            <kazu@codesourcery.com>
! Manfred Hollstein               manfred         <mh@suse.com>
  Stafford Horne                  shorne          <shorne@gmail.com>
  Cong Hou                        congh           <congh@google.com>
! Levy Hsu                        xlwxlw7969      <admin@levyhsu.com>
! Lin Hu                          hulin           <lin1.hu@intel.com>
  Sebastian Huber                 sh              <sebastian.huber@embedded-brains.de>
  Jan Hubicka                     hubicka         <hubicka@ucw.cz>
  Falk Hueffner                   falk            <falk@debian.org>
*************** Dominique d'Humieres            dominiq
*** 561,579 ****
  Andy Hutchinson                 hutchinsonandy  <hutchinsonandy@aim.com>
  Joel Hutton                     joelh           <joel.hutton@arm.com>
  Lewis Hyatt                     lhyatt          <lhyatt@gmail.com>
! Paul Iannetta                   -               <piannetta@kalrayinc.com>
! Roland Illig                    -               <roland.illig@gmx.de>
  Meador Inge                     meadori         <meadori@codesourcery.com>
! Bernardo Innocenti              -               <bernie@develer.com>
! Mihail Ionescu                  -               <mihail.ionescu@arm.com>
! Vladislav Ivanishin             -               <vlad@ispras.ru>
  Alexander Ivchenko              aivchenk        <aivchenk@gmail.com>
  Balaji V. Iyer                  bviyer          <bviyer@gmail.com>
  Pekka Jääskeläinen              visit0r         <pekka.jaaskelainen@parmance.com>
  Daniel Jacobowitz               drow            <drow@false.org>
  Andreas Jaeger                  aj              <aj@suse.de>
  Harsha Jagasia                  hjagasia        <harsha.jagasia@amd.com>
! Fariborz Jahanian               -               <fjahanian@apple.com>
  Martin Jambor                   jamborm         <mjambor@suse.cz>
  Sam James                       sjames          <sam@gentoo.org>
  Surya Kumari Jangala            jskumari        <jskumari@linux.ibm.com>
--- 561,579 ----
  Andy Hutchinson                 hutchinsonandy  <hutchinsonandy@aim.com>
  Joel Hutton                     joelh           <joel.hutton@arm.com>
  Lewis Hyatt                     lhyatt          <lhyatt@gmail.com>
! Paul Iannetta                   piannetta       <piannetta@kalrayinc.com>
! Roland Illig                    rillig          <roland.illig@gmx.de>
  Meador Inge                     meadori         <meadori@codesourcery.com>
! Bernardo Innocenti              bernie          <bernie@develer.com>
! Mihail Ionescu                  mionescu        <mihail.ionescu@arm.com>
! Vladislav Ivanishin             vlad            <vlad@ispras.ru>
  Alexander Ivchenko              aivchenk        <aivchenk@gmail.com>
  Balaji V. Iyer                  bviyer          <bviyer@gmail.com>
  Pekka Jääskeläinen              visit0r         <pekka.jaaskelainen@parmance.com>
  Daniel Jacobowitz               drow            <drow@false.org>
  Andreas Jaeger                  aj              <aj@suse.de>
  Harsha Jagasia                  hjagasia        <harsha.jagasia@amd.com>
! Fariborz Jahanian               fjahanian       <fjahanian@apple.com>
  Martin Jambor                   jamborm         <mjambor@suse.cz>
  Sam James                       sjames          <sam@gentoo.org>
  Surya Kumari Jangala            jskumari        <jskumari@linux.ibm.com>
*************** Avinash Jayakar                 avinashd
*** 581,610 ****
  Jakub Jelinek                   jakub           <jakub@redhat.com>
  Andrew Jenner                   andrewjenner    <andrew@codesourcery.com>
  Saurabh Jha                     saurabhjha      <saurabh.jha@arm.com>
! Haochen Jiang                   -               <haochen.jiang@intel.com>
! Qian Jianhua                    -               <qianjh@fujitsu.com>
  Michal Jires                    mjires          <mjires@suse.cz>
  Janis Johnson                   janis           <janis.marie.johnson@gmail.com>
  Teresa Johnson                  tejohnson       <tejohnson@google.com>
! Kean Johnston                   -               <jkj@sco.com>
  Phillip Jordan                  pmj             <phillip.m.jordan@gmail.com>
  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>
  Richard Kenner                  kenner          <kenner@nyu.edu>
  Yury Khrustalev                 ykhrustalev     <yury.khrustalev@arm.com>
  Andi Kleen                      ak              <andi@firstfloor.org>
  Matthias Klose                  doko            <doko@debian.org>
! Jeff Knaggs                     -               <jknaggs@redhat.com>
! Michael Koch                    -               <konqueror@gmx.de>
  Nicolas Koenig                  koenigni        <koenigni@student.ethz.ch>
  Kaz Kojima                      kkojima         <kkojima@gcc.gnu.org>
  Boris Kolpackov                 boris           <boris@codesynthesis.com>
! Lingling Kong                   -               <lingling.kong@intel.com>
  Thomas König                    tkoenig         <tkoenig@gcc.gnu.org>
  Paul Koning                     pkoning         <ni1d@arrl.net>
  Bruce Korb                      korbb           <bkorb@gnu.org>
--- 581,610 ----
  Jakub Jelinek                   jakub           <jakub@redhat.com>
  Andrew Jenner                   andrewjenner    <andrew@codesourcery.com>
  Saurabh Jha                     saurabhjha      <saurabh.jha@arm.com>
! Haochen Jiang                   jianghc         <haochen.jiang@intel.com>
! Qian Jianhua                    qianjh          <qianjh@fujitsu.com>
  Michal Jires                    mjires          <mjires@suse.cz>
  Janis Johnson                   janis           <janis.marie.johnson@gmail.com>
  Teresa Johnson                  tejohnson       <tejohnson@google.com>
! Kean Johnston                   jkj             <jkj@sco.com>
  Phillip Jordan                  pmj             <phillip.m.jordan@gmail.com>
  Tim Josling                     timjosling      <tej@melbpc.org.au>
  Tomasz Kamiński                 tkaminsk        <tkaminsk@redhat.com>
  Victor Kaplansky                victork         <victork@il.ibm.com>
! Evgeny Karpov                   eukarpov        <evgeny.karpov@arm.com>
  Filip Kastl                     pheeck          <fkastl@suse.cz>
  Geoffrey Keating                geoffk          <geoffk@geoffk.org>
! Brendan Kehoe                   brendan         <brendan@zen.org>
  Richard Kenner                  kenner          <kenner@nyu.edu>
  Yury Khrustalev                 ykhrustalev     <yury.khrustalev@arm.com>
  Andi Kleen                      ak              <andi@firstfloor.org>
  Matthias Klose                  doko            <doko@debian.org>
! Jeff Knaggs                     jknaggs         <jknaggs@redhat.com>
! Michael Koch                    mkoch           <konqueror@gmx.de>
  Nicolas Koenig                  koenigni        <koenigni@student.ethz.ch>
  Kaz Kojima                      kkojima         <kkojima@gcc.gnu.org>
  Boris Kolpackov                 boris           <boris@codesynthesis.com>
! Lingling Kong                   konglin1        <lingling.kong@intel.com>
  Thomas König                    tkoenig         <tkoenig@gcc.gnu.org>
  Paul Koning                     pkoning         <ni1d@arrl.net>
  Bruce Korb                      korbb           <bkorb@gnu.org>
*************** Prathamesh Kulkarni             prathame
*** 620,653 ****
  Venkataramanan Kumar            vekumar         <venkataramanan.kumar@amd.com>
  Maxim Kuvyrkov                  mkuvyrkov       <maxim.kuvyrkov@linaro.org>
  Doug Kwan                       dougkwan        <dougkwan@google.com>
! Aaron W. LaFramboise            -               <aaronavay62@aaronwl.com>
! Scott Robert Ladd               -               <scott.ladd@coyotegulch.com>
  Razya Ladelsky                  razya           <razya@gcc.gnu.org>
  Thierry Lafage                  tlafage         <thierry.lafage@inria.fr>
  Rask Ingemann Lambertsen        rask            <ccc94453@vip.cybercity.dk>
! Jerome Lambourg                 -               <lambourg@adacore.com>
  Tim Lange                       tlange          <mail@tim-lange.me>
  Asher Langton                   langton         <langton2@llnl.gov>
  Chris Lattner                   sabre           <sabre@nondot.org>
  Terry Laurenzo                  tlaurenzo       <tlaurenzo@gmail.com>
  Jeff Law                        law             <jeffreyalaw@gmail.com>
! Alan Lawrence                   -               <alan.lawrence@arm.com>
  Jozef Lawrynowicz               jozefl          <jozef.l@mittosystems.com>
  Georg-Johann Lay                gjl             <avr@gjlay.de>
  Vlad Lazar                      vladlazar       <vlad.lazar@arm.com>
! Marc Lehmann                    -               <pcg@goof.com>
  Bohan Lei                       garthlei        <garthlei@linux.alibaba.com>
  James Lemke                     jwlemke         <jim@lemke.org>
  Ilya Leoshkevich                iii             <iii@linux.ibm.com>
  Kriang Lerdsuwanakij            lerdsuwa        <lerdsuwa@users.sourceforge.net>
! Pan Li                          -               <pan2.li@intel.com>
  Pengfei Li                      pfustc          <pengfei.li2@arm.com>
  Renlin Li                       renlin          <renlin.li@arm.com>
  Xinliang David Li               davidxl         <davidxl@google.com>
  Kewen Lin                       linkw           <linkw@gcc.gnu.org>
  Chen Liqin                      liqin           <liqin.gcc@gmail.com>
  Martin Liska                    marxin          <mliska@suse.cz>
! Hao Liu                         -               <hliu@os.amperecomputing.com>
  Hongtao Liu                     liuhongt        <hongtao.liu@intel.com>
  Jiangning Liu                   liujiangning    <jiangning.liu@arm.com>
  Sa Liu                          saliu           <saliu@de.ibm.com>
--- 620,653 ----
  Venkataramanan Kumar            vekumar         <venkataramanan.kumar@amd.com>
  Maxim Kuvyrkov                  mkuvyrkov       <maxim.kuvyrkov@linaro.org>
  Doug Kwan                       dougkwan        <dougkwan@google.com>
! Aaron W. LaFramboise            aaronwl         <aaronavay62@aaronwl.com>
! Scott Robert Ladd               srladd          <scott.ladd@coyotegulch.com>
  Razya Ladelsky                  razya           <razya@gcc.gnu.org>
  Thierry Lafage                  tlafage         <thierry.lafage@inria.fr>
  Rask Ingemann Lambertsen        rask            <ccc94453@vip.cybercity.dk>
! Jerome Lambourg                 lambourg        <lambourg@adacore.com>
  Tim Lange                       tlange          <mail@tim-lange.me>
  Asher Langton                   langton         <langton2@llnl.gov>
  Chris Lattner                   sabre           <sabre@nondot.org>
  Terry Laurenzo                  tlaurenzo       <tlaurenzo@gmail.com>
  Jeff Law                        law             <jeffreyalaw@gmail.com>
! Alan Lawrence                   alalaw01        <alan.lawrence@arm.com>
  Jozef Lawrynowicz               jozefl          <jozef.l@mittosystems.com>
  Georg-Johann Lay                gjl             <avr@gjlay.de>
  Vlad Lazar                      vladlazar       <vlad.lazar@arm.com>
! Marc Lehmann                    pcg             <pcg@goof.com>
  Bohan Lei                       garthlei        <garthlei@linux.alibaba.com>
  James Lemke                     jwlemke         <jim@lemke.org>
  Ilya Leoshkevich                iii             <iii@linux.ibm.com>
  Kriang Lerdsuwanakij            lerdsuwa        <lerdsuwa@users.sourceforge.net>
! Pan Li                          panli           <pan2.li@intel.com>
  Pengfei Li                      pfustc          <pengfei.li2@arm.com>
  Renlin Li                       renlin          <renlin.li@arm.com>
  Xinliang David Li               davidxl         <davidxl@google.com>
  Kewen Lin                       linkw           <linkw@gcc.gnu.org>
  Chen Liqin                      liqin           <liqin.gcc@gmail.com>
  Martin Liska                    marxin          <mliska@suse.cz>
! Hao Liu                         hliu            <hliu@os.amperecomputing.com>
  Hongtao Liu                     liuhongt        <hongtao.liu@intel.com>
  Jiangning Liu                   liujiangning    <jiangning.liu@arm.com>
  Sa Liu                          saliu           <saliu@de.ibm.com>
*************** Sandra Loosemore                sandra
*** 659,673 ****
  Manuel López-Ibáñez             manu            <manu@gcc.gnu.org>
  Carl Love                       carll           <cel@linux.ibm.com>
  Martin v. Löwis                 loewis          <loewis@informatik.hu-berlin.de>
! Edwin Lu                        -               <ewlu@rivosinc.com>
  H.J. Lu                         hjl             <hjl.tools@gmail.com>
! Xiong Hu Luo                    -               <luoxhu@gcc.gnu.org>
  Bin Bin Lv                      shlb            <shlb@linux.ibm.com>
  Christophe Lyon                 clyon           <christophe.lyon@arm.com>
  Jin Ma                          majin           <jinma@linux.alibaba.com>
  Jun Ma                          junma           <junma@linux.alibaba.com>
! Yuao Ma                         -               <yuao@gcc.gnu.org>
! Andrew MacLeod                  -               <amacleod@redhat.com>
  Luis Machado                    luisgpm         <luis.machado.foss@gmail.com>
  Ziga Mahkovec                   ziga            <ziga.mahkovec@klika.si>
  Vladimir Makarov                vmakarov        <vmakarov@redhat.com>
--- 659,673 ----
  Manuel López-Ibáñez             manu            <manu@gcc.gnu.org>
  Carl Love                       carll           <cel@linux.ibm.com>
  Martin v. Löwis                 loewis          <loewis@informatik.hu-berlin.de>
! Edwin Lu                        ewlu            <ewlu@rivosinc.com>
  H.J. Lu                         hjl             <hjl.tools@gmail.com>
! Xiong Hu Luo                    luoxhu          <luoxhu@gcc.gnu.org>
  Bin Bin Lv                      shlb            <shlb@linux.ibm.com>
  Christophe Lyon                 clyon           <christophe.lyon@arm.com>
  Jin Ma                          majin           <jinma@linux.alibaba.com>
  Jun Ma                          junma           <junma@linux.alibaba.com>
! Yuao Ma                         yuao            <yuao@gcc.gnu.org>
! Andrew MacLeod                  amacleod        <amacleod@redhat.com>
  Luis Machado                    luisgpm         <luis.machado.foss@gmail.com>
  Ziga Mahkovec                   ziga            <ziga.mahkovec@klika.si>
  Vladimir Makarov                vmakarov        <vmakarov@redhat.com>
*************** Ranjit Mathew                   rmathew
*** 683,703 ****
  Paulo Matos                     pmatos          <pmatos@linki.tools>
  Ken Matsui                      kmatsui         <kmatsui@gcc.gnu.org>
  Michael Matz                    matz            <matz@suse.de>
! Greg McGary                     -               <gkm@gnu.org>
  Roland McGrath                  roland          <roland@hack.frob.com>
  Bryce McKinlay                  bryce           <mckinlay@redhat.com>
! Karl Meakin                     -               <karl.meakin@arm.com>
! Adam Megacz                     -               <adam@xwt.org>
  Bingfeng Mei                    meibf           <bmei@broadcom.com>
  Michael Meissner                meissner        <gnu@the-meissners.org>
  Josef Melcr                     jmelcr          <josef.melcr@suse.com>
  Jason Merrill                   jason           <jason@redhat.com>
! Jim Meyering                    -               <jim@meyering.net>
  Martin Michlmayr                tbm             <tbm@cyrius.com>
  David S. Miller                 davem           <davem@redhat.com>
  Lee Millward                    lmillward       <lee.millward@gmail.com>
  Immad Mir                       mir             <mir@sourceware.org>
! Cupertino Miranda               -               <cupertino.miranda@oracle.com>
  Dragan Mladjenovic              draganm         <Dragan.Mladjenovic@syrmia.com>
  Alan Modra                      amodra          <amodra@gmail.com>
  Toon Moene                      toon            <toon@moene.org>
--- 683,703 ----
  Paulo Matos                     pmatos          <pmatos@linki.tools>
  Ken Matsui                      kmatsui         <kmatsui@gcc.gnu.org>
  Michael Matz                    matz            <matz@suse.de>
! Greg McGary                     gkm             <gkm@gnu.org>
  Roland McGrath                  roland          <roland@hack.frob.com>
  Bryce McKinlay                  bryce           <mckinlay@redhat.com>
! Karl Meakin                     karmea01        <karl.meakin@arm.com>
! Adam Megacz                     megacz          <adam@xwt.org>
  Bingfeng Mei                    meibf           <bmei@broadcom.com>
  Michael Meissner                meissner        <gnu@the-meissners.org>
  Josef Melcr                     jmelcr          <josef.melcr@suse.com>
  Jason Merrill                   jason           <jason@redhat.com>
! Jim Meyering                    meyering        <jim@meyering.net>
  Martin Michlmayr                tbm             <tbm@cyrius.com>
  David S. Miller                 davem           <davem@redhat.com>
  Lee Millward                    lmillward       <lee.millward@gmail.com>
  Immad Mir                       mir             <mir@sourceware.org>
! Cupertino Miranda               cupermir        <cupertino.miranda@oracle.com>
  Dragan Mladjenovic              draganm         <Dragan.Mladjenovic@syrmia.com>
  Alan Modra                      amodra          <amodra@gmail.com>
  Toon Moene                      toon            <toon@moene.org>
*************** Phil Muldoon                    pmuldoon
*** 712,718 ****
  Gaius Mulley                    gaius           <gaiusmod2@gmail.com>
  Christoph Müllner               cmuellner       <christoph.muellner@vrull.eu>
  Steven Munroe                   munroesj        <munroesj52@gmail.com>
! Philippe De Muyter              -               <phdm@macqel.be>
  Joseph Myers                    jsm28           <josmyers@redhat.com>
  Nathan Myers                    ncm             <ncm@cantrip.org>
  Szabolcs Nagy                   nsz             <nsz@gcc.gnu.org>
--- 712,718 ----
  Gaius Mulley                    gaius           <gaiusmod2@gmail.com>
  Christoph Müllner               cmuellner       <christoph.muellner@vrull.eu>
  Steven Munroe                   munroesj        <munroesj52@gmail.com>
! Philippe De Muyter              phdm            <phdm@macqel.be>
  Joseph Myers                    jsm28           <josmyers@redhat.com>
  Nathan Myers                    ncm             <ncm@cantrip.org>
  Szabolcs Nagy                   nsz             <nsz@gcc.gnu.org>
*************** Quentin Neill                   qneill
*** 721,738 ****
  Adam Nemet                      nemet           <adambnemet@gmail.com>
  Nathanael Nerode                neroden         <neroden@gcc.gnu.org>
  Thomas Neumann                  tneumann        <tneumann@users.sourceforge.net>
! Dan Nicolaescu                  -               <dann@ics.uci.edu>
  Kelvin Nilsen                   kelvin          <kelvin.nilsen@gmail.com>
  Hans-Peter Nilsson              hp              <hp@axis.com>
  James Norris
  Diego Novillo                   dnovillo        <dnovillo@google.com>
  Dorit Nuzman                    dorit           <dorit@il.ibm.com>
! David O'Brien                   -               <obrien@FreeBSD.org>
  Carlos O'Donell                 carlos          <carlos@redhat.com>
  Peter O'Gorman                  pogma           <pogma@thewrittenword.com>
! Patrick O'Neill                 -               <patrick@rivosinc.com>
  Braden Obrzut                   blzut3          <admin@maniacsvault.net>
! Tsukasa Oi                      -               <research_trasio@irq.a4lg.com>
  Alexandre Oliva                 aoliva          <aoliva@gcc.gnu.org>
  Andrea Ornstein                 andreao         <andrea.ornstein@st.com>
  Rainer Orth                     ro              <ro@CeBiTec.Uni-Bielefeld.DE>
--- 721,738 ----
  Adam Nemet                      nemet           <adambnemet@gmail.com>
  Nathanael Nerode                neroden         <neroden@gcc.gnu.org>
  Thomas Neumann                  tneumann        <tneumann@users.sourceforge.net>
! Dan Nicolaescu                  dann            <dann@ics.uci.edu>
  Kelvin Nilsen                   kelvin          <kelvin.nilsen@gmail.com>
  Hans-Peter Nilsson              hp              <hp@axis.com>
  James Norris
  Diego Novillo                   dnovillo        <dnovillo@google.com>
  Dorit Nuzman                    dorit           <dorit@il.ibm.com>
! David O'Brien                   obrien          <obrien@FreeBSD.org>
  Carlos O'Donell                 carlos          <carlos@redhat.com>
  Peter O'Gorman                  pogma           <pogma@thewrittenword.com>
! Patrick O'Neill                 poneill         <patrick@rivosinc.com>
  Braden Obrzut                   blzut3          <admin@maniacsvault.net>
! Tsukasa Oi                      a4lg            <research_trasio@irq.a4lg.com>
  Alexandre Oliva                 aoliva          <aoliva@gcc.gnu.org>
  Andrea Ornstein                 andreao         <andrea.ornstein@st.com>
  Rainer Orth                     ro              <ro@CeBiTec.Uni-Bielefeld.DE>
*************** Devang Patel                    dpatel
*** 746,752 ****
  Andris Pavenis                  andris          <andris.pavenis@iki.fi>
  Fernando Pereira                pronesto        <pronesto@gmail.com>
  Nicola Pero                     nicola          <nicola.pero@meta-innovation.com>
! Sebastian Perta                 -               <sebastian.perta@renesas.com>
  Sebastian Peryt                 speryt          <sebastian.peryt@intel.com>
  Mikael Pettersson               mikpe           <mikpelinux@gmail.com>
  Johannes Pfau                   jpfau           <johannespfau@gmail.com>
--- 746,752 ----
  Andris Pavenis                  andris          <andris.pavenis@iki.fi>
  Fernando Pereira                pronesto        <pronesto@gmail.com>
  Nicola Pero                     nicola          <nicola.pero@meta-innovation.com>
! Sebastian Perta                 sebastianperta  <sebastian.perta@renesas.com>
  Sebastian Peryt                 speryt          <sebastian.peryt@intel.com>
  Mikael Pettersson               mikpe           <mikpelinux@gmail.com>
  Johannes Pfau                   jpfau           <johannespfau@gmail.com>
*************** Sebastian Pop                   spop
*** 762,796 ****
  Marc Poulhiès                   dkm             <poulhies@adacore.com>
  Siddhesh Poyarekar              siddhesh        <siddhesh@gotplt.org>
  Vidya Praveen                   vp              <vidyapraveen@arm.com>
! Thomas Preud'homme              -               <thomas.preudhomme@celest.fr>
  Benjamin Priour                 vultkayn        <priour.be@gmail.com>
  Vladimir Prus                   vprus           <vladimir@codesourcery.com>
  Hafiz Abid Qadeer               abidh           <abidh@codesourcery.com>
  Yao Qi                          qiyao           <yao@codesourcery.com>
! Xianmiao Qu                     -               <cooper.qu@linux.alibaba.com>
  Jerry Quinn                     jlquinn         <jlquinn@optonline.net>
  Ramana Radhakrishnan            ramana          <ramanara@nvidia.com>
  Navid Rahimi                    navidr          <navidr@gcc.gnu.org>
! Rishi Raj                       -               <rishiraj45035@gmail.com>
  Easwaran Raman                  eraman          <eraman@google.com>
  Joe Ramsay                      joeramsay       <joe.ramsay@arm.com>
! Rolf Rasmussen                  -               <rolfwr@gcc.gnu.org>
  Fritz Reese                     foreese         <fritzoreese@gmail.com>
  Volker Reichelt                 reichelt        <v.reichelt@netcologne.de>
  Joern Rennecke                  amylaar         <gnu@amylaar.uk>
  Bernhard Reutner-Fischer        aldot           <rep.dot.nop@gmail.com>
! Alfie Richards                  -               <alfie.richards@arm.com>
  Torvald Riegel                  torvald         <triegel@redhat.com>
! Tom Rix                         -               <trix@redhat.com>
  Pierre-Marie de Rodat           pmderodat       <derodat@adacore.com>
  Thomas Rodgers                  rodgertq        <trodgers@redhat.com>
  Craig Rodrigues                 rodrigc         <rodrigc@gcc.gnu.org>
  Erven Rohou                     erven           <erven.rohou@inria.fr>
  Ira Rosen                       irar            <irar@il.ibm.com>
  Yvan Roux                       yroux           <yvan.roux@linaro.org>
! Eugene Rozenfeld                -               <erozen@microsoft.com>
! Maciej W. Rozycki               -               <macro@orcam.me.uk>
! Douglas Rupp                    -               <douglas.b.rupp@gmail.com>
  Silvius Rus                     rus             <rus@google.com>
  Matthew Sachs                   matthewg        <msachs@apple.com>
  Ankur Saini                     arsenic         <arsenic@sourceware.org>
--- 762,796 ----
  Marc Poulhiès                   dkm             <poulhies@adacore.com>
  Siddhesh Poyarekar              siddhesh        <siddhesh@gotplt.org>
  Vidya Praveen                   vp              <vidyapraveen@arm.com>
! Thomas Preud'homme              thopre01        <thomas.preudhomme@celest.fr>
  Benjamin Priour                 vultkayn        <priour.be@gmail.com>
  Vladimir Prus                   vprus           <vladimir@codesourcery.com>
  Hafiz Abid Qadeer               abidh           <abidh@codesourcery.com>
  Yao Qi                          qiyao           <yao@codesourcery.com>
! Xianmiao Qu                     xianmiao        <cooper.qu@linux.alibaba.com>
  Jerry Quinn                     jlquinn         <jlquinn@optonline.net>
  Ramana Radhakrishnan            ramana          <ramanara@nvidia.com>
  Navid Rahimi                    navidr          <navidr@gcc.gnu.org>
! Rishi Raj                       rshraj45035     <rishiraj45035@gmail.com>
  Easwaran Raman                  eraman          <eraman@google.com>
  Joe Ramsay                      joeramsay       <joe.ramsay@arm.com>
! Rolf Rasmussen                  rolfwr          <rolfwr@gcc.gnu.org>
  Fritz Reese                     foreese         <fritzoreese@gmail.com>
  Volker Reichelt                 reichelt        <v.reichelt@netcologne.de>
  Joern Rennecke                  amylaar         <gnu@amylaar.uk>
  Bernhard Reutner-Fischer        aldot           <rep.dot.nop@gmail.com>
! Alfie Richards                  alfierichards   <alfie.richards@arm.com>
  Torvald Riegel                  torvald         <triegel@redhat.com>
! Tom Rix                         trix            <trix@redhat.com>
  Pierre-Marie de Rodat           pmderodat       <derodat@adacore.com>
  Thomas Rodgers                  rodgertq        <trodgers@redhat.com>
  Craig Rodrigues                 rodrigc         <rodrigc@gcc.gnu.org>
  Erven Rohou                     erven           <erven.rohou@inria.fr>
  Ira Rosen                       irar            <irar@il.ibm.com>
  Yvan Roux                       yroux           <yvan.roux@linaro.org>
! Eugene Rozenfeld                erozen          <erozen@microsoft.com>
! Maciej W. Rozycki               macro           <macro@orcam.me.uk>
! Douglas Rupp                    rupp            <douglas.b.rupp@gmail.com>
  Silvius Rus                     rus             <rus@google.com>
  Matthew Sachs                   matthewg        <msachs@apple.com>
  Ankur Saini                     arsenic         <arsenic@sourceware.org>
*************** Tilo Schwarz                    tiloschw
*** 812,821 ****
  Thomas Schwinge                 tschwinge       <thomas@schwinge.name>
  Martin Sebor                    msebor          <msebor@gcc.gnu.org>
  Dodji Seketeli                  dodji           <dodji@redhat.com>
! Svein Seldal                    -               <svein@dev.seldal.com>
  Senthil Kumar Selvaraj          saaadhu         <saaadhu@gcc.gnu.org>
  Kostya Serebryany               kcc             <kcc@google.com>
! Thiemo Seufer                   -               <ths@networkno.de>
  Bill Seurer                     seurer          <seurer@linux.vnet.ibm.com>
  Nathaniel Shead                 nshead          <nathanieloshead@gmail.com>
  Tim Shen                        timshen         <timshen@google.com>
--- 812,821 ----
  Thomas Schwinge                 tschwinge       <thomas@schwinge.name>
  Martin Sebor                    msebor          <msebor@gcc.gnu.org>
  Dodji Seketeli                  dodji           <dodji@redhat.com>
! Svein Seldal                    sveinse         <svein@dev.seldal.com>
  Senthil Kumar Selvaraj          saaadhu         <saaadhu@gcc.gnu.org>
  Kostya Serebryany               kcc             <kcc@google.com>
! Thiemo Seufer                   ths             <ths@networkno.de>
  Bill Seurer                     seurer          <seurer@linux.vnet.ibm.com>
  Nathaniel Shead                 nshead          <nathanieloshead@gmail.com>
  Tim Shen                        timshen         <timshen@google.com>
*************** Jan Sjodin                      jsjodin
*** 829,838 ****
  Trevor Smigiel                  tsmigiel        <trevor_smigiel@playstation.sony.com>
  Edward Smith-Rowland            emsr            <esmithrowland@gmail.com>
  Anatoly Sokolov                 aesok           <aesok@dol.ru>
! Michael Sokolov                 -               <msokolov@ivan.Harhan.ORG>
  Jayant Sonar                    jayants         <rsonar.jayant@gmail.com>
! Fangrui Song                    -               <maskray@gcc.gnu.org>
! Richard Stallman                -               <rms@gnu.org>
  Basile Starynkevitch            bstarynk        <basile@starynkevitch.net>
  Jakub Staszak                   kuba            <kuba@et.pl>
  Graham Stott                    grahams         <graham.stott@btinternet.com>
--- 829,838 ----
  Trevor Smigiel                  tsmigiel        <trevor_smigiel@playstation.sony.com>
  Edward Smith-Rowland            emsr            <esmithrowland@gmail.com>
  Anatoly Sokolov                 aesok           <aesok@dol.ru>
! Michael Sokolov                 msokolov        <msokolov@ivan.Harhan.ORG>
  Jayant Sonar                    jayants         <rsonar.jayant@gmail.com>
! Fangrui Song                    maskray         <maskray@gcc.gnu.org>
! Richard Stallman                rms             <rms@gnu.org>
  Basile Starynkevitch            bstarynk        <basile@starynkevitch.net>
  Jakub Staszak                   kuba            <kuba@et.pl>
  Graham Stott                    grahams         <graham.stott@btinternet.com>
*************** Andrew Sutton                   asutton
*** 846,852 ****
  Gabriele Svelto                 gsvelto         <gabriele.svelto@st.com>
  Torbjörn Svensson               azoff           <torbjorn.svensson@foss.st.com>
  Toma Tabacu                     tomtab          <toma.tabacu@gmail.com>
! Omar Tahir                      -               <omar.tahir@arm.com>
  Sriraman Tallam                 tmsriram        <tmsriram@google.com>
  Chung-Lin Tang                  cltang          <cltang@baylibre.com>
  Samuel Tardieu                  sam             <sam@rfc1149.net>
--- 846,852 ----
  Gabriele Svelto                 gsvelto         <gabriele.svelto@st.com>
  Torbjörn Svensson               azoff           <torbjorn.svensson@foss.st.com>
  Toma Tabacu                     tomtab          <toma.tabacu@gmail.com>
! Omar Tahir                      omatah          <omar.tahir@arm.com>
  Sriraman Tallam                 tmsriram        <tmsriram@google.com>
  Chung-Lin Tang                  cltang          <cltang@baylibre.com>
  Samuel Tardieu                  sam             <sam@rfc1149.net>
*************** Vijay Telidevulapalli           vtelidev
*** 856,872 ****
  Dinar Temirbulatov              dinar           <dtemirbulatov@gmail.com>
  Matt Thomas                     matt            <matt@3am-software.com>
  Paul Thomas                     pault           <pault@gcc.gnu.org>
! Philipp Thomas                  -               <pth@suse.de>
  Jason Thorpe                    thorpej         <thorpej@netbsd.org>
! Kresten Krab Thorup             -               <krab@gcc.gnu.org>
  Caroline Tice                   ctice           <cmtice@google.com>
  Kai Tietz                       ktietz          <ktietz70@googlemail.com>
  Kyrylo Tkachov                  ktkachov        <ktkachov@nvidia.com>
  Andreas Tobler                  andreast        <andreast@gcc.gnu.org>
  Ilya Tocar                      tocarip         <tocarip@gmail.com>
! Petter Tomner                   -               <tomner@bahnhof.se>
  Philipp Tomsich                 ptomsich        <philipp.tomsich@vrull.eu>
! Daniel Towner                   -               <dant@picochip.com>
  Konrad Trifunovic               trifunovic      <konrad.trifunovic@inria.fr>
  Markus Trippelsdorf             trippels        <markus@trippelsdorf.de>
  Sergei Trofimovich              slyfox          <slyfox@gcc.gnu.org>
--- 856,872 ----
  Dinar Temirbulatov              dinar           <dtemirbulatov@gmail.com>
  Matt Thomas                     matt            <matt@3am-software.com>
  Paul Thomas                     pault           <pault@gcc.gnu.org>
! Philipp Thomas                  pthomas         <pth@suse.de>
  Jason Thorpe                    thorpej         <thorpej@netbsd.org>
! Kresten Krab Thorup             krab            <krab@gcc.gnu.org>
  Caroline Tice                   ctice           <cmtice@google.com>
  Kai Tietz                       ktietz          <ktietz70@googlemail.com>
  Kyrylo Tkachov                  ktkachov        <ktkachov@nvidia.com>
  Andreas Tobler                  andreast        <andreast@gcc.gnu.org>
  Ilya Tocar                      tocarip         <tocarip@gmail.com>
! Petter Tomner                   tomner          <tomner@bahnhof.se>
  Philipp Tomsich                 ptomsich        <philipp.tomsich@vrull.eu>
! Daniel Towner                   dwtowner        <dant@picochip.com>
  Konrad Trifunovic               trifunovic      <konrad.trifunovic@inria.fr>
  Markus Trippelsdorf             trippels        <markus@trippelsdorf.de>
  Sergei Trofimovich              slyfox          <slyfox@gcc.gnu.org>
*************** Igor Tsimbalist                 itsimbal
*** 875,890 ****
  Martin Uecker                   uecker          <uecker@gcc.gnu.org>
  David Ung                       davidu          <davidu@mips.com>
  Neil Vachharajani               nvachhar        <nvachhar@gmail.com>
! Kris Van Hees                   -               <kris.van.hees@oracle.com>
  Joost VandeVondele              vondele         <joost.vandevondele@mat.ethz.ch>
  Andre Vehreschild               vehre           <vehre@gmx.de>
  Alex Velenko                    avelenko        <alex.velenko@arm.com>
  Ilya Verbin                     iverbin         <iverbin@gmail.com>
  Andre Vieira                    avieira         <andre.simoesdiasvieira@arm.com>
! Rasmus Villemoes                -               <rv@rasmusvillemoes.dk>
  Kugan Vivekanandarajah          kugan           <kvivekananda@nvidia.com>
  Artemiy Volkov                  artemiyv        <artemiy.volkov@arm.com>
! Marcel Vollweiler               -               <marcel@codesourcery.com>
  Ville Voutilainen               ville           <ville.voutilainen@gmail.com>
  Tom de Vries                    vries           <tdevries@suse.de>
  Nenad Vukicevic                 nenadv          <nenad@intrepid.com>
--- 875,890 ----
  Martin Uecker                   uecker          <uecker@gcc.gnu.org>
  David Ung                       davidu          <davidu@mips.com>
  Neil Vachharajani               nvachhar        <nvachhar@gmail.com>
! Kris Van Hees                   kvanhees        <kris.van.hees@oracle.com>
  Joost VandeVondele              vondele         <joost.vandevondele@mat.ethz.ch>
  Andre Vehreschild               vehre           <vehre@gmx.de>
  Alex Velenko                    avelenko        <alex.velenko@arm.com>
  Ilya Verbin                     iverbin         <iverbin@gmail.com>
  Andre Vieira                    avieira         <andre.simoesdiasvieira@arm.com>
! Rasmus Villemoes                villemoes       <rv@rasmusvillemoes.dk>
  Kugan Vivekanandarajah          kugan           <kvivekananda@nvidia.com>
  Artemiy Volkov                  artemiyv        <artemiy.volkov@arm.com>
! Marcel Vollweiler               marcel          <marcel@codesourcery.com>
  Ville Voutilainen               ville           <ville.voutilainen@gmail.com>
  Tom de Vries                    vries           <tdevries@suse.de>
  Nenad Vukicevic                 nenadv          <nenad@intrepid.com>
*************** Waffl3x                         waffl3x
*** 893,924 ****
  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>
! John Wehle                      -               <john@feith.com>
  Ulrich Weigand                  uweigand        <uweigand@de.ibm.com>
  Janus Weil                      janus           <janus@gcc.gnu.org>
  Florian Weimer                  fw              <fweimer@redhat.com>
! Zack Weinberg                   -               <zackw@panix.com>
  Alexander Westbrooks            alexanderw      <alexanderw@gcc.gnu.org>
  Mark Wielaard                   mark            <mark@gcc.gnu.org>
  Edmar Wienskoski                edmarwjr        <edmar@freescale.com>
! Ollie Wild                      -               <aaw@google.com>
  Ralf Wildenhues                 rwild           <Ralf.Wildenhues@gmx.de>
  Kevin Williams                  kwilliam        <kevin.williams@inria.fr>
  Jim Wilson                      wilson          <jim.wilson.gcc@gmail.com>
  Przemyslaw Wirkus               wirkus          <przemyslaw.wirkus@arm.com>
  Carlo Wood                      carlo           <carlo@alinoe.com>
  Jackson Woodruff                jcw             <jackson.woodruff@arm.com>
! Jonathan Wright                 -               <jonathan.wright@arm.com>
  Chung-Ju Wu                     jasonwucj       <jasonwucj@gmail.com>
  Le-Chun Wu                      lcwu            <lcwu@google.com>
  Ruoyao Xi                       xry111          <xry111@xry111.site>
  Mingjie Xing                    xmj             <mingjie.xing@gmail.com>
  Chenghua Xu                     paulhua         <paul.hua.gm@gmail.com>
! Li Xu                           -               <xuli1@eswincomputing.com>
  Feng Xue                        fxue            <fxue@os.amperecomputing.com>
  Canqun Yang                     canqun          <canqun@nudt.edu.cn>
  Fei Yang                        fyang           <felix.yang@huawei.com>
--- 893,924 ----
  Jonathan Wakely                 redi            <jwakely@redhat.com>
  Krister Walfridsson             kristerw        <krister.walfridsson@gmail.com>
  Feng Wang                       fengwang        <fengwang@nudt.edu.cn>
! Feng Wang                       fengwang1792    <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>
! John Wehle                      wehle           <john@feith.com>
  Ulrich Weigand                  uweigand        <uweigand@de.ibm.com>
  Janus Weil                      janus           <janus@gcc.gnu.org>
  Florian Weimer                  fw              <fweimer@redhat.com>
! Zack Weinberg                   zack            <zackw@panix.com>
  Alexander Westbrooks            alexanderw      <alexanderw@gcc.gnu.org>
  Mark Wielaard                   mark            <mark@gcc.gnu.org>
  Edmar Wienskoski                edmarwjr        <edmar@freescale.com>
! Ollie Wild                      aaw             <aaw@google.com>
  Ralf Wildenhues                 rwild           <Ralf.Wildenhues@gmx.de>
  Kevin Williams                  kwilliam        <kevin.williams@inria.fr>
  Jim Wilson                      wilson          <jim.wilson.gcc@gmail.com>
  Przemyslaw Wirkus               wirkus          <przemyslaw.wirkus@arm.com>
  Carlo Wood                      carlo           <carlo@alinoe.com>
  Jackson Woodruff                jcw             <jackson.woodruff@arm.com>
! Jonathan Wright                 jonwri01        <jonathan.wright@arm.com>
  Chung-Ju Wu                     jasonwucj       <jasonwucj@gmail.com>
  Le-Chun Wu                      lcwu            <lcwu@google.com>
  Ruoyao Xi                       xry111          <xry111@xry111.site>
  Mingjie Xing                    xmj             <mingjie.xing@gmail.com>
  Chenghua Xu                     paulhua         <paul.hua.gm@gmail.com>
! Li Xu                           xuli            <xuli1@eswincomputing.com>
  Feng Xue                        fxue            <fxue@os.amperecomputing.com>
  Canqun Yang                     canqun          <canqun@nudt.edu.cn>
  Fei Yang                        fyang           <felix.yang@huawei.com>
*************** Greta Yorsh                     gretay
*** 930,947 ****
  Kirill Yukhin                   kyukhin         <kirill.yukhin@gmail.com>
  David Yuste                     dyuste          <david.yuste@gmail.com>
  Kenneth Zadeck                  zadeck          <zadeck@naturalbridge.com>
! Adhemerval Zanella              -               <azanella@linux.vnet.ibm.com>
! Xiao Zeng                       -               <zengxiao@eswincomputing.com>
! Dennis Zhang                    -               <dennis.zhang@arm.com>
  Jie Zhang                       jiez            <jzhang918@gmail.com>
  Yufeng Zhang                    yufeng          <yufeng.zhang@arm.com>
  Qing Zhao                       qinzhao         <qing.zhao69@gmail.com>
  Shujing Zhao                    pzhao           <pearly.zhao@oracle.com>
  Pengxuan Zheng                  pzheng          <pengxuan.zheng@oss.qualcomm.com>
! Juzhe Zhong                     -               <juzhe.zhong@rivai.ai>
  Roman Zhuykov                   zhroma          <zhroma@ispras.ru>
  Jon Ziegler                     jonz            <jonz@apple.com>
! Raphael Zinsly                  -               <rzinsly@qti.qualcomm.com>
  Roman Zippel                    zippel          <zippel@linux-m68k.org>
  Claudiu Zissulescu              claziss         <claziss@gmail.com>
  Josef Zlomek                    zlomek          <josef.zlomek@email.cz>
--- 930,947 ----
  Kirill Yukhin                   kyukhin         <kirill.yukhin@gmail.com>
  David Yuste                     dyuste          <david.yuste@gmail.com>
  Kenneth Zadeck                  zadeck          <zadeck@naturalbridge.com>
! Adhemerval Zanella              azanella        <azanella@linux.vnet.ibm.com>
! Xiao Zeng                       zeng            <zengxiao@eswincomputing.com>
! Dennis Zhang                    xczhang         <dennis.zhang@arm.com>
  Jie Zhang                       jiez            <jzhang918@gmail.com>
  Yufeng Zhang                    yufeng          <yufeng.zhang@arm.com>
  Qing Zhao                       qinzhao         <qing.zhao69@gmail.com>
  Shujing Zhao                    pzhao           <pearly.zhao@oracle.com>
  Pengxuan Zheng                  pzheng          <pengxuan.zheng@oss.qualcomm.com>
! Juzhe Zhong                     juzhe           <juzhe.zhong@rivai.ai>
  Roman Zhuykov                   zhroma          <zhroma@ispras.ru>
  Jon Ziegler                     jonz            <jonz@apple.com>
! Raphael Zinsly                  rzinsly         <rzinsly@qti.qualcomm.com>
  Roman Zippel                    zippel          <zippel@linux-m68k.org>
  Claudiu Zissulescu              claziss         <claziss@gmail.com>
  Josef Zlomek                    zlomek          <josef.zlomek@email.cz>
diff -Nrcpad gcc-17-20260531/MD5SUMS gcc-17-20260607/MD5SUMS
*** gcc-17-20260531/MD5SUMS	Sun May 31 22:32:24 2026
--- gcc-17-20260607/MD5SUMS	Sun Jun  7 22:32:25 2026
***************
*** 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
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-17-20260607.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
***************
*** 11,16 ****
--- 11,17 ----
  e8eeef33ef071516ce3f689e9c71e0b5  .b4-config
  fd78d02fa55fcdb78ddb2f37a7868dbb  .dir-locals.el
  36adccc3b45bf15b55eca368b1717231  .editorconfig
+ de7dc21e015b0c29001fa7a1e3d4a2ac  .forgejo/CODEOWNERS
  b91d600742b62d1860809cb184055a3d  .forgejo/PULL_REQUEST_TEMPLATE.md
  9a22a68c0484f3f139296a8e26cdf746  .forgejo/workflows/build-containers.yaml
  4b254279920374351da794ea1ef21fae  .forgejo/workflows/format-checks.yaml
*************** ac5a8807f431d3dab46a7425b96379e4  .gitig
*** 24,35 ****
  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
--- 25,36 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! c5eab24d1b00e9c358fe336ca7b9706c  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! ef390172d56745b643bd75dd2a4d1ae7  LAST_UPDATED
! f27773e6426ef2d5a3983d0515e39733  MAINTAINERS
  f1b0fe5b41f7272f173407bd21947846  Makefile.def
  fbda720c413d124746752b72dbcfff21  Makefile.in
  1c50f15d0e3e9ca32ee2b28db19f45bd  Makefile.tpl
*************** dd20b4aa952e750070486e3525cba7bd  config
*** 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
--- 161,167 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  07f145e2ab73fc50d9557c0c0e8db303  configure
  2950c8550289b6a39cf4fd0697c88aae  configure.ac
! ddf94e90f15add5959e27c6195e834df  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  0928ae42250fbb57246cf6e9bff2276b  contrib/analyze_brprob.py
*************** c3217001bd26d7357f97d76467773e6d  contri
*** 205,211 ****
  4e50fd99a99e20a0c72a4074b767438d  contrib/dg-out-generator.pl
  c453348f88ec592d49be554008473ba8  contrib/dglib.pm
  1a43c19edffafd7cca44c23265ada323  contrib/diffsummary.py
! 8dc14393e30704e0fd1913e770ceda5b  contrib/download_prerequisites
  5c8261e6d09ac7baf6ee12720e265aca  contrib/filter-clang-warnings.py
  332fd0835826d637b5b6cf8db14358a5  contrib/filter_gcc_for_doxygen
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
--- 206,212 ----
  4e50fd99a99e20a0c72a4074b767438d  contrib/dg-out-generator.pl
  c453348f88ec592d49be554008473ba8  contrib/dglib.pm
  1a43c19edffafd7cca44c23265ada323  contrib/diffsummary.py
! 99fd453a962522445be4c5fabf2540e7  contrib/download_prerequisites
  5c8261e6d09ac7baf6ee12720e265aca  contrib/filter-clang-warnings.py
  332fd0835826d637b5b6cf8db14358a5  contrib/filter_gcc_for_doxygen
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
*************** d577ea19d05f19a8364f73c9901223b7  contri
*** 214,220 ****
  1462df56c813a6a6cdf97c7baa877d7c  contrib/gcc-changelog/git_commit.py
  4f7f7ef965f965a23efd54be62ace12d  contrib/gcc-changelog/git_email.py
  c9b38a05e2da6bd427df5301db56e913  contrib/gcc-changelog/git_repository.py
! 6744a895b621aacfcf1e3222f9ff82f0  contrib/gcc-changelog/git_update_version.py
  6e731268209cc6d4936196233e28bae9  contrib/gcc-changelog/setup.cfg
  7f6fb197e7f7926991055526054c2240  contrib/gcc-changelog/test_email.py
  6662a65218b0a11d673a65656b98d821  contrib/gcc-changelog/test_patches.txt
--- 215,221 ----
  1462df56c813a6a6cdf97c7baa877d7c  contrib/gcc-changelog/git_commit.py
  4f7f7ef965f965a23efd54be62ace12d  contrib/gcc-changelog/git_email.py
  c9b38a05e2da6bd427df5301db56e913  contrib/gcc-changelog/git_repository.py
! ace74d5e12895fc58653a086bf2d88ac  contrib/gcc-changelog/git_update_version.py
  6e731268209cc6d4936196233e28bae9  contrib/gcc-changelog/setup.cfg
  7f6fb197e7f7926991055526054c2240  contrib/gcc-changelog/test_email.py
  6662a65218b0a11d673a65656b98d821  contrib/gcc-changelog/test_patches.txt
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 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
--- 532,538 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! e346fdfbd68c8cc073c46ec64af14049  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 569,575 ****
  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
--- 570,576 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 35e5b002c0f21c6f27678761beac11b5  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/RE
*** 581,587 ****
  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
--- 582,588 ----
  cbbaecdd6decdf00007bbdb344d2b282  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! a8b41eec0276c2c011fdc2a3f8c4135c  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** eea9961506181531b5f7f1a7f62fe428  gcc/ad
*** 612,626 ****
  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
  69ca25415e164dd731aba3fc03ffa639  gcc/ada/ali-util.ads
--- 613,627 ----
  1ddbf3755fbef2d964b15c7104b9937d  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
  e3036b8607f7eefdbf796a5849c8bcd1  gcc/ada/Makefile.rtl
! 42d45da329180f7b887737f0e09d6391  gcc/ada/accessibility.adb
! 3e8c278617e0fab8c5975a1d1b431c1c  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
! 1466393d00196632041e610076a72d28  gcc/ada/adaint.c
! 4f219c63c0efe4ac4863880bddf643c0  gcc/ada/adaint.h
  a82184f30accc8ed33746fffe377a4ed  gcc/ada/affinity.c
  0ed459e0096285586fcd5221bb4cfb52  gcc/ada/ali-util.adb
  69ca25415e164dd731aba3fc03ffa639  gcc/ada/ali-util.ads
*************** c2c2ce0ac85db6276eb58438ed0655a7  gcc/ad
*** 676,682 ****
  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
--- 677,683 ----
  d2a12f8da1ccd5803e4480a5584ec4be  gcc/ada/cio.c
  87a1a7be553e1cbb5ccf25ba67166d4c  gcc/ada/clean.adb
  b7678d8e7ea8aa0a70e24b3fb885db3c  gcc/ada/clean.ads
! 68301a14436a8cd3e37cdce4d23ee231  gcc/ada/comperr.adb
  8b48cff165002adce60df535498f6650  gcc/ada/comperr.ads
  f21d3b1fb30a592ea0d55cc24e7ed262  gcc/ada/config-lang.in
  e2b0ca96d6c2bec9e3dc953201e6048e  gcc/ada/contracts.adb
*************** b3a5bb5354c2c4c1961b72fcee81f353  gcc/ad
*** 687,693 ****
  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
--- 688,694 ----
  944994f4a64b41fee9f6c266a4bfcadf  gcc/ada/cstand.ads
  82336562eabb075acd39ff529ea2ba64  gcc/ada/cstreams.c
  1b1d07fd9c1cbe3c9065636585ec2034  gcc/ada/ctrl_c.c
! 1ef6b00af4ceffc72977720fd6f2750d  gcc/ada/debug.adb
  bc28c5c733c954c4dadb6e046d5d77cf  gcc/ada/debug.ads
  91acc2d4bbb0a9ded0450945658cfcc8  gcc/ada/debug_a.adb
  8b28af55ba26dac0275b8a7fc8e0389b  gcc/ada/debug_a.ads
*************** b2e701a565d6f7f9874142228be0e4dc  gcc/ad
*** 699,706 ****
  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
--- 700,707 ----
  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
! 644dda2d15dc20aeb601b8eb7575e223  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! 9049d3b299d7481521d14fab2ed136f1  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
*************** a8608ebf71444d2564728c8a41283e03  gcc/ad
*** 717,723 ****
  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
--- 718,724 ----
  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
! 558e5919358154a71a8a2e93a9c6078e  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
*************** f1c71b64e1c84e240c7b5aea7331a32a  gcc/ad
*** 737,749 ****
  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
--- 738,750 ----
  53ad5bbe1307592cb0b72abbd090be7c  gcc/ada/einfo-utils.adb
  7d8424f0fa1f5c55e62289d1bb109135  gcc/ada/einfo-utils.ads
  97ce2e179e42e649dfe8affca8e3c302  gcc/ada/einfo.adb
! 7b1197ec1589e99d87033e5c412a1de0  gcc/ada/einfo.ads
  fef3bb4012357f98b9b104dfa3daee51  gcc/ada/elists.adb
  52dc293e77a753c73be5d02f2661369f  gcc/ada/elists.ads
  30a82f1a7c5bfcc4e8be8d79dc60e23e  gcc/ada/elists.h
! 3c03625bb1a1ec618321388ecd8493df  gcc/ada/env.c
  c12fb1605300d1f30fd6df091378f210  gcc/ada/env.h
! 768d7a578e9068474f50ad8be28da10c  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
*************** cca5ee0694320e014df12c82cb9f56f0  gcc/ad
*** 751,779 ****
  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
  22056d93ee3af80b1661baaced1fed25  gcc/ada/exp_ch10.ads
! 7d6e304b6761dd9969bc85a0461689b5  gcc/ada/exp_ch11.adb
  bf3743ac83ce052257e4841cf92462f0  gcc/ada/exp_ch11.ads
  16c8917305213e88c4ba212ba6b9785a  gcc/ada/exp_ch12.adb
  de7a9caf4d0fd7fdbd90fe08aabba91a  gcc/ada/exp_ch12.ads
--- 752,780 ----
  33f47902242afa2110a6def083b718fd  gcc/ada/errid.adb
  1af164987170f38613191d2dbe084d15  gcc/ada/errid.ads
  84f28219501ec3f2ace259cad6375b8a  gcc/ada/errno.c
! 7374ee33295ac4402a56b21c583024ea  gcc/ada/errout.adb
! fb2e9135160244490d6f60efaeeb2993  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
! 74b52b81cd17123a3d79c7814ba66be9  gcc/ada/erroutc.adb
! 838469bc2ff77818eec77cfe3a538862  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
! 9449a73e7e6a1dbd5075571bb21173e7  gcc/ada/exp_aggr.adb
  8d6933ec0ee945c50b4e8c114b1221b6  gcc/ada/exp_aggr.ads
  045a2ef4e4932ea2c0b17910db37af46  gcc/ada/exp_atag.adb
  2a027dfad5944cc346ee7c94c022d302  gcc/ada/exp_atag.ads
! 6fcbff476b55d43d38b9ef73fd60552c  gcc/ada/exp_attr.adb
  4b748ed1db282b666860ed488c4ff28d  gcc/ada/exp_attr.ads
  cda4ccedf4fc1e7d7dbe6864ee5bf8ad  gcc/ada/exp_cg.adb
  a188d43ef2eb5780d4b7f98731302640  gcc/ada/exp_cg.ads
  22056d93ee3af80b1661baaced1fed25  gcc/ada/exp_ch10.ads
! 108886c34ca5209536eb59d9f66381ca  gcc/ada/exp_ch11.adb
  bf3743ac83ce052257e4841cf92462f0  gcc/ada/exp_ch11.ads
  16c8917305213e88c4ba212ba6b9785a  gcc/ada/exp_ch12.adb
  de7a9caf4d0fd7fdbd90fe08aabba91a  gcc/ada/exp_ch12.ads
*************** a84d191dad3158db125ec48c285b9667  gcc/ad
*** 781,805 ****
  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
--- 782,806 ----
  371cc0c543b5d2502352758eb7b73e8f  gcc/ada/exp_ch13.ads
  ace7dfdd53834601d964efef9557e0f4  gcc/ada/exp_ch2.adb
  aec86f795b370fca1379a25f37651fdf  gcc/ada/exp_ch2.ads
! 0f5646394aa403d5da742848179f2bfc  gcc/ada/exp_ch3.adb
  52ca7939bd6b0e1da9e20d902813d109  gcc/ada/exp_ch3.ads
! a714d09e2620cb4c720340116fc1e932  gcc/ada/exp_ch4.adb
  2d9cf8b148fdc7a07edde2cf9fbb59f8  gcc/ada/exp_ch4.ads
! f2ee63cc3c5f9f1809803f876187e83a  gcc/ada/exp_ch5.adb
  962c51f1fad8395553b843179ba06b79  gcc/ada/exp_ch5.ads
! be94ad218b63a5a5b17085a3c0975d69  gcc/ada/exp_ch6.adb
  06c642df831eac4b8b06e06e0cc2672b  gcc/ada/exp_ch6.ads
! 209d78b894ee84003b9eb29efd6e6911  gcc/ada/exp_ch7.adb
  0328c88aa1134f7af3891cb24a0b27c8  gcc/ada/exp_ch7.ads
  8801787aa12c6cff916c7659aa60ec45  gcc/ada/exp_ch8.adb
  9955bf7551ef5f537f9031c59fb73db8  gcc/ada/exp_ch8.ads
! eed3a19516e7659bde4768b12a9c69e1  gcc/ada/exp_ch9.adb
! 45a11420b5d0b55ee54b16d0aba80802  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
! f63626f667da542e69736ae15de0ff87  gcc/ada/exp_disp.adb
  4a4f2db1ce2689b32aa03195644a6fd0  gcc/ada/exp_disp.ads
  4a4b9d7a9f03004c8a15a64b412515aa  gcc/ada/exp_dist.adb
  ce990621220fd6489426c319eb93cec4  gcc/ada/exp_dist.ads
*************** abc4adbcfcc5aec49e61dfe787dc8274  gcc/ad
*** 827,835 ****
  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
  96ea1db659522f0433ba0ed3d7d3b6c6  gcc/ada/fe.h
--- 828,836 ----
  3372f4711ba5978adb3c0b71a6836ba0  gcc/ada/exp_tss.ads
  615035164b85c41e0511b0964debffb3  gcc/ada/exp_unst.adb
  36837947cf32d9b44ffd59a3faf56050  gcc/ada/exp_unst.ads
! 3f0705a62a425d5cb1237d0fcc4f791b  gcc/ada/exp_util.adb
  43d879ef4447d808c855fab353d66eb3  gcc/ada/exp_util.ads
! f51440b512c9ade5ec2b018b1126e40a  gcc/ada/expander.adb
  ca321269d17552e01fce3be99a0a3452  gcc/ada/expander.ads
  da666491b0d26eef3aa08ba31f054d9b  gcc/ada/expect.c
  96ea1db659522f0433ba0ed3d7d3b6c6  gcc/ada/fe.h
*************** a33f6ce50ea5f6239bb943392e892d17  gcc/ad
*** 842,848 ****
  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
--- 843,849 ----
  69ddf39d57c6fcb7c5a317cae7c09f58  gcc/ada/fname-uf.ads
  aafcb91317d2b95ebf55c3e8bbc030e0  gcc/ada/fname.adb
  8a4878ab4881e98ec589708dfeabb6da  gcc/ada/fname.ads
! a631ccede5fe7f61c9176d983e58946e  gcc/ada/freeze.adb
  466eafe8c23a8bae84609ef5079ce927  gcc/ada/freeze.ads
  c8c5844ba2c26bdc1b7c004e5b806668  gcc/ada/frontend.adb
  03bc5c5bdf3e467c3fa035201ba507d2  gcc/ada/frontend.ads
*************** e4204795e682e9a19f2c26c4b2410fc3  gcc/ad
*** 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
--- 856,876 ----
  8d951ad5f91f626d3cc7ba6585129d29  gcc/ada/gcc-interface/ada.h
  f3edeff30f2d71e01f705dbeeea40b77  gcc/ada/gcc-interface/config-lang.in
  61292b93aaa82b358b5b4e2310c77d5b  gcc/ada/gcc-interface/cuintp.cc
! acc80d822fe8bfed94d7c151a2a1ad08  gcc/ada/gcc-interface/decl.cc
  07d1f164dc85932ebe1eab7ad2117218  gcc/ada/gcc-interface/gadaint.h
! 0160223b92cc31ddb4ab99b5fd6a6cc8  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
! 0f5dcb04296023a69000e9b3ab633c7c  gcc/ada/gcc-interface/targtyps.cc
! 80aa889cbda3eae1d793f281c543ec99  gcc/ada/gcc-interface/trans.cc
! 9d36d8c03bd0a96c8694e0f4d47adf56  gcc/ada/gcc-interface/utils.cc
! 61f921a0b83e0276983ebc2cfb11dc05  gcc/ada/gcc-interface/utils2.cc
! 92a8308c9fc1d84f1dca2aaaf80ccd21  gcc/ada/gen_il-fields.ads
! 3a4b9dde5d8848ba5fcce73c6ad2e40f  gcc/ada/gen_il-gen-gen_entities.adb
! 4015023ef953e8e24e123f1b6d62ce03  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
*** 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
--- 884,899 ----
  087bcf710ff99554041ac9b656b7498d  gcc/ada/get_scos.ads
  c9a79d9a9ae90f3aa712a05fac2a292d  gcc/ada/get_targ.adb
  d6c10405a90333a12764946307dc0f65  gcc/ada/get_targ.ads
! 244a89202c0f9131cb5e14bf0070333c  gcc/ada/ghost.adb
  65a717e72149b03fce989eae4a597a62  gcc/ada/ghost.ads
  3e6d37543e1d3935a9987bbe1c5e7bf1  gcc/ada/gnat-style.texi
! c1f99a3d6e17232df36803792506b6f8  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
! e3755aeb2d0c3d7b09167ae08e024b62  gcc/ada/gnat_rm.texi
! ab379d61794fd806214bd7b948c41e10  gcc/ada/gnat_ugn.texi
  97a151562fa533cd370413751bd18564  gcc/ada/gnatbind.adb
  cf407dc104ddb2d242f8c79a9b8166ec  gcc/ada/gnatbind.ads
  8a451200e3c6277c33c04b60c1c63fff  gcc/ada/gnatchop.adb
*************** eb3b6f429c0b93cc8e9788ea4ac4e8c6  gcc/ad
*** 928,941 ****
  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
  a6f9c85f1be9a68712686738e2181c81  gcc/ada/json_utils.ads
  baa0b98c38f214ae12efbda6ae64d876  gcc/ada/krunch.adb
! e6ab30389d1d8992db409d4ad64f8ade  gcc/ada/krunch.ads
  86b323e60815784ff0895117d4d41de0  gcc/ada/layout.adb
  16fd58323459ff08fde71a5df6b890d2  gcc/ada/layout.ads
  d38d84794d585011fdcb98c38e29abe0  gcc/ada/lib-list.adb
--- 929,942 ----
  18250f749f24e01ba1da7cf90a1d60c2  gcc/ada/indepsw.ads
  e90d589fb32fbd65ef6727e79d8ca1a8  gcc/ada/init.c
  bc9cb67c7c529d85eae0a62d8155e31e  gcc/ada/initialize.c
! 5d4395a48911c8ee727af86992fe4bc3  gcc/ada/inline.adb
! 3dd5bae636367e30ea8d186d903cd54a  gcc/ada/inline.ads
  e9cdc0c5c27e9fc2f7c18857dde261a7  gcc/ada/itypes.adb
  f907b184de1987a24c20c953fa9d64ef  gcc/ada/itypes.ads
  e6d42cc6f1315f1a219a6c2b64c0b3a6  gcc/ada/json_utils.adb
  a6f9c85f1be9a68712686738e2181c81  gcc/ada/json_utils.ads
  baa0b98c38f214ae12efbda6ae64d876  gcc/ada/krunch.adb
! 140f56cb1d09abe9e0d20e64ce6f2a4e  gcc/ada/krunch.ads
  86b323e60815784ff0895117d4d41de0  gcc/ada/layout.adb
  16fd58323459ff08fde71a5df6b890d2  gcc/ada/layout.ads
  d38d84794d585011fdcb98c38e29abe0  gcc/ada/lib-list.adb
*************** de45287830ab446df243950edf6167cc  gcc/ad
*** 1190,1196 ****
  ed8488b1c86a1dd83ebf91b390806d8e  gcc/ada/libgnat/a-calcon.ads
  4bd0df8a635783da8a3b23c59187d9c5  gcc/ada/libgnat/a-caldel.adb
  2648be2ff60dc1ef436e96caf0512833  gcc/ada/libgnat/a-caldel.ads
! 08327352680f9579c6da8b5137c845e4  gcc/ada/libgnat/a-calend.adb
  d671d37383c2ca0fbc456a001cf8eaba  gcc/ada/libgnat/a-calend.ads
  82c431d2b3e80e0776233a3226c452c2  gcc/ada/libgnat/a-calfor.adb
  c187e61d9b3c7977bd3411a95f0dd32a  gcc/ada/libgnat/a-calfor.ads
--- 1191,1197 ----
  ed8488b1c86a1dd83ebf91b390806d8e  gcc/ada/libgnat/a-calcon.ads
  4bd0df8a635783da8a3b23c59187d9c5  gcc/ada/libgnat/a-caldel.adb
  2648be2ff60dc1ef436e96caf0512833  gcc/ada/libgnat/a-caldel.ads
! 3aeee7b8ced552c359598f4a836ef955  gcc/ada/libgnat/a-calend.adb
  d671d37383c2ca0fbc456a001cf8eaba  gcc/ada/libgnat/a-calend.ads
  82c431d2b3e80e0776233a3226c452c2  gcc/ada/libgnat/a-calfor.adb
  c187e61d9b3c7977bd3411a95f0dd32a  gcc/ada/libgnat/a-calfor.ads
*************** aa8ee7a04e292a14d18da20ed5efb983  gcc/ad
*** 1202,1208 ****
  457b034b9c4584c13c18c5f2a233569e  gcc/ada/libgnat/a-cbhama.ads
  165d3e530f0d803babc9616be10f5268  gcc/ada/libgnat/a-cbhase.adb
  70c99263d65d2c51fbd0f81e9c9b1b51  gcc/ada/libgnat/a-cbhase.ads
! c41b1654d088600008e58adb41802071  gcc/ada/libgnat/a-cbinho.adb
  ed7f47c9a26fcdd4c58cad080f19cf05  gcc/ada/libgnat/a-cbinho.ads
  c838aeade3bfa5ba17350ceb65b09e00  gcc/ada/libgnat/a-cbmutr.adb
  d58f87c0492c3db9ca1a3678408eb206  gcc/ada/libgnat/a-cbmutr.ads
--- 1203,1209 ----
  457b034b9c4584c13c18c5f2a233569e  gcc/ada/libgnat/a-cbhama.ads
  165d3e530f0d803babc9616be10f5268  gcc/ada/libgnat/a-cbhase.adb
  70c99263d65d2c51fbd0f81e9c9b1b51  gcc/ada/libgnat/a-cbhase.ads
! fd26529274277ef4d171db9e0ea45fca  gcc/ada/libgnat/a-cbinho.adb
  ed7f47c9a26fcdd4c58cad080f19cf05  gcc/ada/libgnat/a-cbinho.ads
  c838aeade3bfa5ba17350ceb65b09e00  gcc/ada/libgnat/a-cbmutr.adb
  d58f87c0492c3db9ca1a3678408eb206  gcc/ada/libgnat/a-cbmutr.ads
*************** c4c82abff1dd8f6604582844f0db30a9  gcc/ad
*** 1596,1605 ****
  7a86f567c895fd1c9ba9bf2fca77811d  gcc/ada/libgnat/a-szuzti.ads
  1c8985852a877b54b12673194e44e781  gcc/ada/libgnat/a-szuzti__shared.adb
  649c1ba13e76ae5b270ac6e40b5c72fe  gcc/ada/libgnat/a-tags.adb
! 9c786b984bf0145479e5a8e011a5b611  gcc/ada/libgnat/a-tags.ads
  18a4c6eaf4a71398b19427182b133eca  gcc/ada/libgnat/a-teioed.adb
  557f2e82df4e73bea0ee43f6a2d6fbf6  gcc/ada/libgnat/a-teioed.ads
! 2a0ae500a53b6a6c97a57ecff16ffbed  gcc/ada/libgnat/a-textio.adb
  8ab0eabbc4678cba0583a700698d0847  gcc/ada/libgnat/a-textio.ads
  c74a673b222c3d0037a22fb766c67488  gcc/ada/libgnat/a-tgdico.ads
  fb39064662a6ab88ec4192b4d6340afd  gcc/ada/libgnat/a-tiboio.adb
--- 1597,1606 ----
  7a86f567c895fd1c9ba9bf2fca77811d  gcc/ada/libgnat/a-szuzti.ads
  1c8985852a877b54b12673194e44e781  gcc/ada/libgnat/a-szuzti__shared.adb
  649c1ba13e76ae5b270ac6e40b5c72fe  gcc/ada/libgnat/a-tags.adb
! 2efc94a393e281a5e8f4f05347319b19  gcc/ada/libgnat/a-tags.ads
  18a4c6eaf4a71398b19427182b133eca  gcc/ada/libgnat/a-teioed.adb
  557f2e82df4e73bea0ee43f6a2d6fbf6  gcc/ada/libgnat/a-teioed.ads
! 47142fa11e1e09097f9cb44bcd1a8caa  gcc/ada/libgnat/a-textio.adb
  8ab0eabbc4678cba0583a700698d0847  gcc/ada/libgnat/a-textio.ads
  c74a673b222c3d0037a22fb766c67488  gcc/ada/libgnat/a-tgdico.ads
  fb39064662a6ab88ec4192b4d6340afd  gcc/ada/libgnat/a-tiboio.adb
*************** fb55cf15e668159b5c1114772700ff4e  gcc/ad
*** 1795,1807 ****
  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
  438f42e28c5562fa912e0f585508911c  gcc/ada/libgnat/g-cpp.ads
! cb35c44377bc36f2626625f2cd7e02fc  gcc/ada/libgnat/g-cppexc.adb
! 8b242d6547c2b5366f57d9666164bbec  gcc/ada/libgnat/g-cppexc.ads
  e0ad3dece18f25d2fbc95f089c7a9348  gcc/ada/libgnat/g-cppstd.adb
  1c07c19bfa9db7532f2ceefbac76292a  gcc/ada/libgnat/g-cppstd.ads
  373afe3a2919d281ae7c3d18a5f8b1d7  gcc/ada/libgnat/g-crc32.adb
--- 1796,1808 ----
  0bd476d839404ac275c3be7276d394e9  gcc/ada/libgnat/g-cgicoo.ads
  241af677b9822d2934b11fc4eb0e9a7c  gcc/ada/libgnat/g-cgideb.adb
  da0bfa4251b3510b51674069bf69f2a3  gcc/ada/libgnat/g-cgideb.ads
! caad8ff2b0bd06973dc15c0536bdf924  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
  438f42e28c5562fa912e0f585508911c  gcc/ada/libgnat/g-cpp.ads
! a57c79e0edef071c4000b3847c48cc51  gcc/ada/libgnat/g-cppexc.adb
! e028d7bac3318b8d4f0cf4007b4893f7  gcc/ada/libgnat/g-cppexc.ads
  e0ad3dece18f25d2fbc95f089c7a9348  gcc/ada/libgnat/g-cppstd.adb
  1c07c19bfa9db7532f2ceefbac76292a  gcc/ada/libgnat/g-cppstd.ads
  373afe3a2919d281ae7c3d18a5f8b1d7  gcc/ada/libgnat/g-crc32.adb
*************** c5bfdcbf4937b7132da7b6efcee7b608  gcc/ad
*** 2305,2311 ****
  1490c4815f1ec19868873d38e6e46dba  gcc/ada/libgnat/s-objrea.adb
  f55e613fad450190ad15dd6d0f422d8c  gcc/ada/libgnat/s-objrea.ads
  b69c7901aee2edc8cf4a8493076c2aa2  gcc/ada/libgnat/s-optide.adb
! c7c5c8ad54945e8f32150b0178792724  gcc/ada/libgnat/s-os_lib.adb
  1565696a40e80decf7ba156baca14158  gcc/ada/libgnat/s-os_lib.ads
  03bc482ee69c65fe92b39f1ce7930d6a  gcc/ada/libgnat/s-oslock__darwin.ads
  5c83eda90f70fe408555120ab0bf8c49  gcc/ada/libgnat/s-oslock__dummy.ads
--- 2306,2312 ----
  1490c4815f1ec19868873d38e6e46dba  gcc/ada/libgnat/s-objrea.adb
  f55e613fad450190ad15dd6d0f422d8c  gcc/ada/libgnat/s-objrea.ads
  b69c7901aee2edc8cf4a8493076c2aa2  gcc/ada/libgnat/s-optide.adb
! 0c64ab442f46964d146481cbd7c200f7  gcc/ada/libgnat/s-os_lib.adb
  1565696a40e80decf7ba156baca14158  gcc/ada/libgnat/s-os_lib.ads
  03bc482ee69c65fe92b39f1ce7930d6a  gcc/ada/libgnat/s-oslock__darwin.ads
  5c83eda90f70fe408555120ab0bf8c49  gcc/ada/libgnat/s-oslock__dummy.ads
*************** a8237a5f9714b630574d896b5e0cd539  gcc/ad
*** 2617,2624 ****
  8950b416ffb3d46b9123599120e0e205  gcc/ada/libgnat/s-soflin.ads
  421bd75d6ae6dd6a5a7f1fbfc380b64c  gcc/ada/libgnat/s-soliin.adb
  426bf0fd57e5a21d4377b18928a9b592  gcc/ada/libgnat/s-soliin.ads
! df5844f44897a9cac9219da774f81068  gcc/ada/libgnat/s-spsufi.adb
! 3f5ed5e2526a1d38422b20e6e23bcc23  gcc/ada/libgnat/s-spsufi.ads
  62d9d85c11773a1fe341e1777b94dc54  gcc/ada/libgnat/s-stache.adb
  918040bda0285edf66d5891bbc36f055  gcc/ada/libgnat/s-stache.ads
  0a63a11b0a32bd5565ede74d3f08f12b  gcc/ada/libgnat/s-stalib.adb
--- 2618,2625 ----
  8950b416ffb3d46b9123599120e0e205  gcc/ada/libgnat/s-soflin.ads
  421bd75d6ae6dd6a5a7f1fbfc380b64c  gcc/ada/libgnat/s-soliin.adb
  426bf0fd57e5a21d4377b18928a9b592  gcc/ada/libgnat/s-soliin.ads
! de13ce80c494c473860bf0e75251e9f4  gcc/ada/libgnat/s-spsufi.adb
! e9632a1300b855c5a08abfd1198583a8  gcc/ada/libgnat/s-spsufi.ads
  62d9d85c11773a1fe341e1777b94dc54  gcc/ada/libgnat/s-stache.adb
  918040bda0285edf66d5891bbc36f055  gcc/ada/libgnat/s-stache.ads
  0a63a11b0a32bd5565ede74d3f08f12b  gcc/ada/libgnat/s-stalib.adb
*************** e1bdf706ccd0578145b38b7b03736e71  gcc/ad
*** 2635,2642 ****
  16f331627c4eebd50a835766d2df3ce6  gcc/ada/libgnat/s-stoele.ads
  ba2973d61db23357a0f81a56f3f4f26f  gcc/ada/libgnat/s-stopoo.adb
  f11dd8f1d2e0fc0e90b0ba785102ab20  gcc/ada/libgnat/s-stopoo.ads
! b5b860129204b0e9bba9351b365ea734  gcc/ada/libgnat/s-stposu.adb
! 2266106d36e75d21ed2584ae1fadf908  gcc/ada/libgnat/s-stposu.ads
  cd7089e32cda42a93c17470807173c77  gcc/ada/libgnat/s-stratt.adb
  a8359ce9a70af6ac75d03afdb522fb6e  gcc/ada/libgnat/s-stratt.ads
  e02c7a2f6db8743652acb8c8c7a862a7  gcc/ada/libgnat/s-stratt__cheri.adb
--- 2636,2643 ----
  16f331627c4eebd50a835766d2df3ce6  gcc/ada/libgnat/s-stoele.ads
  ba2973d61db23357a0f81a56f3f4f26f  gcc/ada/libgnat/s-stopoo.adb
  f11dd8f1d2e0fc0e90b0ba785102ab20  gcc/ada/libgnat/s-stopoo.ads
! e57bd4e301ba464df284313ba91e4b00  gcc/ada/libgnat/s-stposu.adb
! 6600f1a8cfe2451a530ab7d1087e389d  gcc/ada/libgnat/s-stposu.ads
  cd7089e32cda42a93c17470807173c77  gcc/ada/libgnat/s-stratt.adb
  a8359ce9a70af6ac75d03afdb522fb6e  gcc/ada/libgnat/s-stratt.ads
  e02c7a2f6db8743652acb8c8c7a862a7  gcc/ada/libgnat/s-stratt__cheri.adb
*************** b153e7d2cc4a598977832c17cafb7c4f  gcc/ad
*** 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
--- 2808,2814 ----
  cf7b146f9fc62f24c3787351e5ba9e68  gcc/ada/local_restrict.adb
  891f22987471ea4759185d4c5a9ee069  gcc/ada/local_restrict.ads
  465547ff3f8704052438d58126dabdc0  gcc/ada/locales.c
! 7f4260d5fdac023cc9263ea342937eb8  gcc/ada/make.adb
  3f70017061d6107352a4f0851268c926  gcc/ada/make.ads
  b37df6cded8b76d59493983c393af07b  gcc/ada/make_util.adb
  1254c81cb1c93f3097720a97f51da0d7  gcc/ada/make_util.ads
*************** e6e20209cad9c43a0c9e098f3429fdb6  gcc/ad
*** 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
--- 2833,2839 ----
  4fcbbba0f9690723f59ad615e6a0a017  gcc/ada/nlists.ads
  ede196142f051ce40a763d452c74c998  gcc/ada/nlists.h
  b7a4ce5c6e4753fcc4e09f7c8ef90b12  gcc/ada/opt.adb
! bb8a5264a87dde91dbb223da681d7caa  gcc/ada/opt.ads
  9df196852e294224ecf27a573848f3be  gcc/ada/osint-b.adb
  45a0f826bc919f6c3d5283a3970115d4  gcc/ada/osint-b.ads
  0c60ea9217bc90dfe2d9b4649b2f3915  gcc/ada/osint-c.adb
*************** bf52dfdb3b0ad7b46acd6b6ec476611c  gcc/ad
*** 2850,2858 ****
  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
--- 2851,2859 ----
  ba0e112ae1cbefadd145a4e7c06f1642  gcc/ada/par-ch12.adb
  9f715bca934e45ee4db7bbd2858d54e1  gcc/ada/par-ch13.adb
  fc57966056b0077a0fadd4887212d6bd  gcc/ada/par-ch2.adb
! b1d4afc6808a25c1e061c645f6a9f98e  gcc/ada/par-ch3.adb
! 63a2db0c45fffcb07ad9774a590ba474  gcc/ada/par-ch4.adb
! 0585d7a7aad5f825e2f48c263b0e0ee8  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,2870 ****
  1f70b7cd17a7598b624b2901c6cea77c  gcc/ada/par-endh.adb
  4631e5d0cb69105860231a799366b230  gcc/ada/par-labl.adb
  7d004b6b482794a85e318cb7452f55ef  gcc/ada/par-load.adb
! 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
--- 2861,2871 ----
  1f70b7cd17a7598b624b2901c6cea77c  gcc/ada/par-endh.adb
  4631e5d0cb69105860231a799366b230  gcc/ada/par-labl.adb
  7d004b6b482794a85e318cb7452f55ef  gcc/ada/par-load.adb
! 1ab5f8bb9861c400169d377b2066f139  gcc/ada/par-prag.adb
  4f0a80ae4dcac15e0ae11b61ce2a351a  gcc/ada/par-sync.adb
  fd52cb07f6816c9f989d767432353844  gcc/ada/par-tchk.adb
! 6a85b390d0cf809f2acc202c41a1e295  gcc/ada/par-util.adb
! e73dae35669f0fc6454371455d0d5064  gcc/ada/par.adb
  dec03d93846b2cf0f195f599e6ebe085  gcc/ada/par.ads
  397a8c4eaae8d55eb7e4accd4d09745f  gcc/ada/par_sco.adb
  a2fb0d304cec6a62b7a0096915bbacc4  gcc/ada/par_sco.ads
*************** e5010ee8b4286a5e99d1258267b68113  gcc/ad
*** 2889,2895 ****
  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
--- 2890,2896 ----
  6b9811e6ddf7d989b3ad01ebf5430e99  gcc/ada/rident.ads
  6741c00af04e8dce4efb35a65a842fe6  gcc/ada/rtfinal.c
  5934ee793c29da1585df983ea9f993e1  gcc/ada/rtinit.c
! c8acf6ac7093b282e3980ed88f489048  gcc/ada/rtsfind.adb
  607bb6d037f3ec4452ddf3801e54be81  gcc/ada/rtsfind.ads
  f2d824e32fdafcf6970c1e1e66ea59f8  gcc/ada/runtime.h
  5c68caea711566c64edb3308f5a70992  gcc/ada/s-oscons-tmplt.c
*************** fdcaec81316658a2b692951117ab8bd6  gcc/ad
*** 2908,2921 ****
  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
  8380d3577b9f637d6e110b2f500d0e0b  gcc/ada/sem_cat.ads
--- 2909,2922 ----
  44ec5e7f902de4eac2d430f6088fd579  gcc/ada/sdefault.ads
  5ee6198a5e5ee0a555cdbe65fd9ea6f4  gcc/ada/seh_init.c
  acf67cc2ad3c40fe466a03f76c6450e1  gcc/ada/sem.adb
! 65869457d1676879dc545835475f7421  gcc/ada/sem.ads
! 1f1ea5b059ab31ee369cc51ba1071c8c  gcc/ada/sem_aggr.adb
  d5ddab4fcf440bf2f49a9a190fd12829  gcc/ada/sem_aggr.ads
! d1089a551a6dd24762fb0ab2af7e6e7b  gcc/ada/sem_attr.adb
  f5a25d26b815f5d376e2873f3ab69359  gcc/ada/sem_attr.ads
! 39892cb912c9fe4b0d512cfc104e5bd7  gcc/ada/sem_aux.adb
! 5df4642fb17b29da9f787e48f24551b9  gcc/ada/sem_aux.ads
! 79c7d7bbccdecd45e11c9af2ebd49228  gcc/ada/sem_case.adb
  f682892145d1a369cdc5b3f73935f8d9  gcc/ada/sem_case.ads
  40833d5de1791e4a88cb023d6bd0ddb5  gcc/ada/sem_cat.adb
  8380d3577b9f637d6e110b2f500d0e0b  gcc/ada/sem_cat.ads
*************** bd02733d13b54612fc6d4cd0e340b3ea  gcc/ad
*** 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
--- 2924,2968 ----
  ad2bb60b9c4c67653f4da4b0e70277d7  gcc/ada/sem_ch10.ads
  e3dc2d270994bba222e70ec02479ac37  gcc/ada/sem_ch11.adb
  7efb6a0f371113d8b55b421ee56dd1dd  gcc/ada/sem_ch11.ads
! 6c5fd261341bc70e511f15fb05d369c4  gcc/ada/sem_ch12.adb
  2622dbf1c1774a89ada3cba34f1da316  gcc/ada/sem_ch12.ads
! 1e787d43f7088571b8e7a4f3cae0d2f2  gcc/ada/sem_ch13.adb
! ec60ecc54472eacb95e7a2bc99058514  gcc/ada/sem_ch13.ads
  260948dd8c7af25b5acaa288032c9327  gcc/ada/sem_ch2.adb
  ea86a0345845800d7aaf07f22bb4bf6c  gcc/ada/sem_ch2.ads
! 5b2f80d06b50e00b989fe35b5973698d  gcc/ada/sem_ch3.adb
  2d8f83bc46638356bc311ccd50015b1f  gcc/ada/sem_ch3.ads
! 2656c66e51cd968130b08cd344827a00  gcc/ada/sem_ch4.adb
  fdd750bd30c3186d912dfed4717a2c0c  gcc/ada/sem_ch4.ads
! a9398364ab25c6bd5af8f323cb3a4763  gcc/ada/sem_ch5.adb
  0851668baacc82a6125a6cdd3254a804  gcc/ada/sem_ch5.ads
! 431665c8a9d9a12bededee164b3aead7  gcc/ada/sem_ch6.adb
  9ac8c4c57213097618cdb7c0b7b4f47b  gcc/ada/sem_ch6.ads
! 8086821850ed806d5f4d283e00da6ec3  gcc/ada/sem_ch7.adb
  b15ba6dec89e775b188e9d07764efc63  gcc/ada/sem_ch7.ads
  50f3d574967de682b7cf73fc690bf063  gcc/ada/sem_ch8.adb
  5bcf24e9f3725dd07ba44097469a5101  gcc/ada/sem_ch8.ads
! 705c86e7eb2e8956f7753dbcb1619557  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
! 9fde85ee11163049f614690191efa464  gcc/ada/sem_dist.adb
  59a3d1317e6d4dd1fdf74f377c86bb9a  gcc/ada/sem_dist.ads
! a48d59cfa56144da8759d8d431bd6fd2  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
! 5ef986294af3b836874fe21cf32daaf0  gcc/ada/sem_intr.adb
  01d971c16ae04f83f122ff2b4854e30d  gcc/ada/sem_intr.ads
  60c61925626b00c286ee1c92562b17ef  gcc/ada/sem_mech.adb
  39b96f04803db97ae1f7376d30a0cfec  gcc/ada/sem_mech.ads
! be4b566896825626429b7d3975d0cead  gcc/ada/sem_prag.adb
  61f67b82bf0abfa83eb7e4927498285c  gcc/ada/sem_prag.ads
! 747a66d605cecfc255c988ceb62e0ca4  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
*** 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
--- 2970,2978 ----
  21afb93e10bb9446fcbf7577bbf39c7f  gcc/ada/sem_smem.ads
  1de99683c6514c34448d2bbc7ddb8856  gcc/ada/sem_type.adb
  65653b347d1d3f800e49cd916a551d1c  gcc/ada/sem_type.ads
! 331d30a6890e6095b90bc0fb15d73009  gcc/ada/sem_util.adb
! b0c235c18760d7cef10dd854a924d2b0  gcc/ada/sem_util.ads
! 4bf398858e4692ff6bd88081ab99701c  gcc/ada/sem_warn.adb
  1952fbda97ea4c6506f452eac9934bb4  gcc/ada/sem_warn.ads
  75ee1e8bae201fd70d666856c4dbb8e5  gcc/ada/set_targ.adb
  9be350008098fd37edd51e4c3977c64d  gcc/ada/set_targ.ads
*************** c354c16b3d545f16b99be6618073100e  gcc/ad
*** 2990,2996 ****
  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
--- 2991,2997 ----
  080aea4da0993c49dfd80c8789fed307  gcc/ada/sinfo-utils.adb
  34ff18d034a08b0c9d5d6d61fc92d189  gcc/ada/sinfo-utils.ads
  1cfe9bd70a04767965df45d859d8e7c1  gcc/ada/sinfo.adb
! 66f533dc906bd1ab885103e787fd7602  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
*** 3000,3006 ****
  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
--- 3001,3007 ----
  4c47a09e0165de090d03fa2396d99a7a  gcc/ada/sinput.adb
  29e03402590e97abf9061944873aaacf  gcc/ada/sinput.ads
  83660dce94bca57b58843b48abc86554  gcc/ada/snames.adb-tmpl
! c462b89754486d1c3ee00e3ff884624d  gcc/ada/snames.ads-tmpl
  0eae6e077005b627eacdbc0d53788ac6  gcc/ada/snames.h-tmpl
  96b1e5efcfe4df7fd150f5a977046c58  gcc/ada/socket.c
  2b5db13cfe242efb9e224cb722660071  gcc/ada/spark_xrefs.adb
*************** b5b62770606ca8dc474f59070cd4a35f  gcc/ad
*** 3009,3015 ****
  b2471956e093001afd1b073590729f89  gcc/ada/sprint.ads
  2ce08b4ac1b7d7331da8a29d6e581d60  gcc/ada/stand.ads
  92b212203b4f1d5f4e7ff59f594e55e4  gcc/ada/standard.ads.h
! b4073f96d80684c896365e7a436df06c  gcc/ada/stringt.adb
  830c86db23070ef15493931a23788a7f  gcc/ada/stringt.ads
  dd04be650bb81a915ab3d16cf03e1286  gcc/ada/stringt.h
  5022f93495388fa09eb795bc2927a3b5  gcc/ada/strub.adb
--- 3010,3016 ----
  b2471956e093001afd1b073590729f89  gcc/ada/sprint.ads
  2ce08b4ac1b7d7331da8a29d6e581d60  gcc/ada/stand.ads
  92b212203b4f1d5f4e7ff59f594e55e4  gcc/ada/standard.ads.h
! 5664f8207eddb35eb806abe66748694f  gcc/ada/stringt.adb
  830c86db23070ef15493931a23788a7f  gcc/ada/stringt.ads
  dd04be650bb81a915ab3d16cf03e1286  gcc/ada/stringt.h
  5022f93495388fa09eb795bc2927a3b5  gcc/ada/strub.adb
*************** d4c62c18b55de39b11cfe472a0e4561b  gcc/ad
*** 3022,3040 ****
  788b4e8961e327f221894cc404ea94a6  gcc/ada/stylesw.ads
  023c310d2e871580bbd3530d72160fda  gcc/ada/switch-b.adb
  3a294499383230d201c683ace52138c0  gcc/ada/switch-b.ads
! 3540d5c1b8346f461d3d2aff8035c91f  gcc/ada/switch-c.adb
  3aaa54adb4298ce080915c03e026099f  gcc/ada/switch-c.ads
  ebcfe6e250e511cc835acc1a5b9d9acc  gcc/ada/switch-m.adb
  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
--- 3023,3041 ----
  788b4e8961e327f221894cc404ea94a6  gcc/ada/stylesw.ads
  023c310d2e871580bbd3530d72160fda  gcc/ada/switch-b.adb
  3a294499383230d201c683ace52138c0  gcc/ada/switch-b.ads
! 32597c60d42578042959d76ba4cf91bb  gcc/ada/switch-c.adb
  3aaa54adb4298ce080915c03e026099f  gcc/ada/switch-c.ads
  ebcfe6e250e511cc835acc1a5b9d9acc  gcc/ada/switch-m.adb
  604f9cd7c5002a973423169c487b7672  gcc/ada/switch-m.ads
  4c8a0d7e461a01701b735523abd65cca  gcc/ada/switch.adb
  e8253b4b684c1281f31c431c59801850  gcc/ada/switch.ads
! 271994ce99f50d91449a25e2f2c55650  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
! 7d3f0ad91a40c454a9bcf4bbcd5dee41  gcc/ada/tbuild.adb
  d9026bdc2cb7c2a1fdb52eefe1467c6c  gcc/ada/tbuild.ads
  a8c81c0efe5427a150cfb60b39a14bb0  gcc/ada/terminals.c
  81c60cbc8e67f80af6f53afb5ca5e8e7  gcc/ada/tracebak.c
*************** eeb6ea2feb12c39a0ea2095fca6e3d2a  gcc/ad
*** 3052,3058 ****
  c19c2a871c32fc6aff1e0c6aab0d550f  gcc/ada/urealp.adb
  b17f72ec54df78b4b67b979813d3f97f  gcc/ada/urealp.ads
  317b5a188697bfc0e6040fa648e9d9da  gcc/ada/urealp.h
! 27905040bd49b3ea5db6081f15e9ba12  gcc/ada/usage.adb
  c578b41f0c8f6c40b46c78a81e87209b  gcc/ada/usage.ads
  1c7d75f8eb8caeca71fd9920c9467dd2  gcc/ada/validsw.adb
  77865d92c04269dc2ac7fed0e437db40  gcc/ada/validsw.ads
--- 3053,3059 ----
  c19c2a871c32fc6aff1e0c6aab0d550f  gcc/ada/urealp.adb
  b17f72ec54df78b4b67b979813d3f97f  gcc/ada/urealp.ads
  317b5a188697bfc0e6040fa648e9d9da  gcc/ada/urealp.h
! bee74c4633b27f2d8d5eb8c423fb3cd7  gcc/ada/usage.adb
  c578b41f0c8f6c40b46c78a81e87209b  gcc/ada/usage.ads
  1c7d75f8eb8caeca71fd9920c9467dd2  gcc/ada/validsw.adb
  77865d92c04269dc2ac7fed0e437db40  gcc/ada/validsw.ads
*************** d22c314f3748309f812d78f5217dda61  gcc/ad
*** 3074,3080 ****
  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
--- 3075,3081 ----
  06b46bffb1b84e16a6f48b29177f42c4  gcc/ada/xutil.ads
  faeebcb240c1559aceb7d9c18c8e6b89  gcc/addresses.h
  ebd823843d8793364a7f82ee9f833c88  gcc/adjust-alignment.cc
! f40462c3f2fd3463c5492d2ec75c3180  gcc/algol68/ChangeLog
  66ab60a51bd61854d9b2898856651b15  gcc/algol68/Make-lang.in
  3d3f2f95b917d0f77d57d977f3eb93d8  gcc/algol68/README
  43ae40e82c1a7a144e905d40b101214e  gcc/algol68/a68-diagnostics.cc
*************** c8f59e26255a9bc185068084b4135289  gcc/al
*** 3113,3124 ****
  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
  fc7ae86022255700f5866b320d5b195d  gcc/algol68/a68-parser-keywords.cc
! a4c0eb1b198b6316de80141fb16e341f  gcc/algol68/a68-parser-modes.cc
  774cd52cc0e92f16e4f0ef07f921f74a  gcc/algol68/a68-parser-moids-check.cc
  eb200628692c30c1ade0eaeabcddf008  gcc/algol68/a68-parser-moids-coerce.cc
  3789b4b4b2b84341d4e2c050f5f10acf  gcc/algol68/a68-parser-moids-equivalence.cc
--- 3114,3125 ----
  943207507077d65185cd6d089f1249da  gcc/algol68/a68-moids-sorting.cc
  93ab5a30cda3f697bee77eba313c66d6  gcc/algol68/a68-moids-to-string.cc
  5cba262e501051ca9bc9e3c0cec33e74  gcc/algol68/a68-parser-attrs.def
! 4d3a4269579e33a09d28a703d263c6b4  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
  fc7ae86022255700f5866b320d5b195d  gcc/algol68/a68-parser-keywords.cc
! 5bbba75ebe9acd6ae6db622beca20818  gcc/algol68/a68-parser-modes.cc
  774cd52cc0e92f16e4f0ef07f921f74a  gcc/algol68/a68-parser-moids-check.cc
  eb200628692c30c1ade0eaeabcddf008  gcc/algol68/a68-parser-moids-coerce.cc
  3789b4b4b2b84341d4e2c050f5f10acf  gcc/algol68/a68-parser-moids-equivalence.cc
*************** ca4abac71b91773df74abdea22798551  gcc/al
*** 3142,3149 ****
  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
--- 3143,3150 ----
  de57cb0c251c683118113d7512fb484c  gcc/algol68/ga68-coding-guidelines.texi
  9c3d535a7da271c49e76b9709e556383  gcc/algol68/ga68-exports.pk
  f150e2c760036b980e94ec7bb14e1172  gcc/algol68/ga68-internals.texi
! 9e575ac412a858aa8a5379d25d2c31f4  gcc/algol68/ga68.texi
! 95e36714ad60d57199b1727eb7970bea  gcc/algol68/ga68.vw
  0a91d85c360d5ee3eb6258aecdab4636  gcc/algol68/lang-specs.h
  55e32b4ac4d7a159a683785bd5ee4c7a  gcc/algol68/lang.opt
  411f26970a0d93b07c697a1bcfeda50c  gcc/algol68/lang.opt.urls
*************** bd317e24faffad6f2106396f1c3401b1  gcc/au
*** 3283,3311 ****
  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
--- 3284,3312 ----
  fc353966a860a12cbc161a87f5619b51  gcc/auto-obstack.h
  b27892a8f728df598e54273272b34115  gcc/auto-profile.cc
  d290a68be0a787113b46b8c5ec98f710  gcc/auto-profile.h
! 597d34808ffeb923b6497701a8c8380b  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
! 1ec51392e386df3a784016fd915692de  gcc/bitmap.cc
! 8bcfe8e53c7811d339aa0efc4671eca1  gcc/bitmap.h
  8ba8cc55d4c38f126d32b3291cec4312  gcc/btfout.cc
  6da486aac72d8ac53fc6618dea4dcf2e  gcc/builtin-attrs.def
  199995f5aa749f6b6a1170f2307d8e3b  gcc/builtin-types.def
! c6e78ac148b4eadc30dfea92c3414885  gcc/builtins.cc
  d5db4c3fd8f2f6328a72905271146ce0  gcc/builtins.def
! 4f577c1f20985f1ba3c1672476f1a2da  gcc/builtins.h
! 512933d5e1411ed83649d3c76d9af06d  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
! fba23d68ba623c33aef279b93a24ee01  gcc/c-family/c-attribs.cc
! abc75c3bf4cdfc2d9a6bb6075cf16204  gcc/c-family/c-common.cc
  6522339cd83ff225a1ff9e0eab971eab  gcc/c-family/c-common.def
! 37bf7c4b5fa17dd054423201b1566b5b  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
*************** f7be2688a5d3b3987de70c31a6a5e374  gcc/c-
*** 3331,3368 ****
  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
--- 3332,3369 ----
  38a6ba552ef0b2855739836a1238dc30  gcc/c-family/c-target.h
  d5acf2497b583d0fedcf4e2ac5f4ac4a  gcc/c-family/c-type-mismatch.cc
  ea821c9d267c64dd8b74aad9d0189834  gcc/c-family/c-type-mismatch.h
! eb0fcc324140f72001698df8e19f05c4  gcc/c-family/c-ubsan.cc
  298f1278576690ff4398c33310700f52  gcc/c-family/c-ubsan.h
! 309adcb76e5a3c3f022c2d30b3bbda93  gcc/c-family/c-warn.cc
  300e42a44dddd72ac08a890e4cbf3649  gcc/c-family/c.opt
! 625ce108c3e61a98b26097f6e07f2a8b  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
! fe4260a7be7fde2b57ccc228ca8227a9  gcc/c/ChangeLog
  cbffb341640e7c4b16792e0951fffeca  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
! 0714c1ad09a4fa0053ca1069b9a8b3dc  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
! 9060a005ff6781631b822625f97c08fe  gcc/c/c-parser.cc
  f6b634d7c0204c419cf4fb7b48193fad  gcc/c/c-parser.h
  4db955734effe2d0c9aac0379d2e6a8c  gcc/c/c-tree.def
  3ee5aefcb5c9ebc5fed7991af22b0426  gcc/c/c-tree.h
! df79298b0d300ec63895bb8efebc3c3c  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
! 17314c6f078cb5b1e588cc8600755d32  gcc/calls.cc
  ff5a0cd0f881aae35e405e715150405b  gcc/calls.h
  2bf0bdaa177d2092acb7fd3d479879ab  gcc/ccmp.cc
  85bc42a6e56aadf2cf248e0090f7726d  gcc/ccmp.h
*************** d765375085ae6a7be91925c440afd3a9  gcc/cf
*** 3373,3379 ****
  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
--- 3374,3380 ----
  0d787a64241d6b4077f0204523b9ae83  gcc/cfganal.h
  c620b176c09eda90b566ae49703a8346  gcc/cfgbuild.cc
  1759b500ef3ebaa71f165d1004be0c28  gcc/cfgbuild.h
! 4c93b442fb2c3908e2b49dbd5e1d5d2c  gcc/cfgcleanup.cc
  19b842f671a6c6284b654d712d52e513  gcc/cfgcleanup.h
  35c86c649a626306de23fc6c5342c55a  gcc/cfgexpand.cc
  7bcce78536f3bff0e046d9a3ece5ea9a  gcc/cfgexpand.h
*************** b50dcacbe77c96809023aa599a556717  gcc/cg
*** 3393,3409 ****
  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
--- 3394,3410 ----
  a9229e8ac3f0d366e296e57756becd23  gcc/cgraphunit.cc
  45b21ab7ea818c3a3ce60bf8d3cbd252  gcc/channels.h
  f2981f79a749a2269d7ea349ab37ca3e  gcc/cif-code.def
! 09d03988a217ad74ced7ea971b200646  gcc/cobol/ChangeLog
! 1cc98de8038acf4c192c2b120e805db9  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
! 6f0781c00ff23cb0dc92a545a8a9feb0  gcc/cobol/cobol1.cc
! 945916532b949c7f8e22fa515c1ed395  gcc/cobol/compare.cc
! 30fe1e768a76bb15b7d6d2d12bb53a3a  gcc/cobol/compare.h
  8b7f26d4855e5bb69a66eecc586d9742  gcc/cobol/config-lang.in
  7e43ef597462b3ceabf3c197b4017e7c  gcc/cobol/convert.cc
  73aabe0b0206b600444dad3b27e417d7  gcc/cobol/copybook.h
*************** d5c6387d56f84eecf1320e4209ae02fe  gcc/co
*** 3413,3436 ****
  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
--- 3414,3437 ----
  946ac0c941d437c329116221cf313838  gcc/cobol/gcobc
  823e15969bf48eb2465696dd3b2fc1c3  gcc/cobol/gcobol.1
  7a73ffe93cdd304879a42f225aa554ee  gcc/cobol/gcobol.3
! 21b840090e9923bdd5cb47e4468e3fd9  gcc/cobol/gcobolspec.cc
! efb1d42406d81bfa33a352f000420394  gcc/cobol/genapi.cc
! 2e6da18e4bf1ccaa1f6061db39d669ce  gcc/cobol/genapi.h
  c87389cfc6fe8c9243821fc14007eb15  gcc/cobol/gengen.cc
  49309164cfe6837cc514856eb3f7dbc9  gcc/cobol/gengen.h
  df7a30acd01b4385a0a156b968940c44  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
! 425dd3ae0fb1468a2859f0a1b6695cc8  gcc/cobol/genutil.cc
! e67e0626e5f62e00cb3968c9c4765b78  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
! 05f191861e37d52870bb5257c188632f  gcc/cobol/lang-specs.h
! abf14a41da24b49f1ed7ace2b7002f0a  gcc/cobol/lang.opt
! 072e19d0d414c9e919d6cc2c811a3944  gcc/cobol/lang.opt.urls
  0a7ca538b7588a3c6ae13c38480fe3c9  gcc/cobol/lexio.cc
  c691e8bb52e1a438ce2f510250bbf4d9  gcc/cobol/lexio.h
  3a7636dc3c5f3bdc376ccf55cf668b11  gcc/cobol/messages.cc
! bab5d8166395e80ce399a59a4818521c  gcc/cobol/parse.y
  c41675cbbb5dbab3510fa2bfee9118cc  gcc/cobol/parse_ante.h
  658e59750efa818db284c44387330580  gcc/cobol/parse_util.h
  52c1a2af86ace48e713840e3d7efa796  gcc/cobol/scan.l
*************** c41675cbbb5dbab3510fa2bfee9118cc  gcc/co
*** 3440,3446 ****
  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
--- 3441,3447 ----
  75161ca42023dad15cbea413b6d34380  gcc/cobol/structs.cc
  e82b261f1753be53d32fb056a39f498b  gcc/cobol/structs.h
  841253c34eb5a5b0983f87031b5dea49  gcc/cobol/symbols.cc
! 39a5ea8be6305f4a14e45d84c9390e13  gcc/cobol/symbols.h
  2052d3215a215928b26c5296b9e2eea1  gcc/cobol/symfind.cc
  2f32d8b900fd38fa259875ca2ca5c9a1  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
*************** d48c86bc52a7b8ee38281d6069d3eb6a  gcc/co
*** 3456,3474 ****
  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
  d8f7142c05c4102806a8b26817df17a6  gcc/common/common-target.h
  dfc09a8e551202c9c0a110afa5ecea07  gcc/common/common-targhooks.cc
  c118f6e609bff904f31476e74ab45479  gcc/common/common-targhooks.h
! 79da69552bc79b2de72438f3983221b4  gcc/common/config/aarch64/aarch64-common.cc
! e4c10015d61b0c0179e4214dbd85d19f  gcc/common/config/aarch64/cpuinfo.h
  3a5ce2d619f3e16155b647a743a1c1c2  gcc/common/config/alpha/alpha-common.cc
  62d17fa2c618153bcc9f0eabb9a8e88c  gcc/common/config/arc/arc-common.cc
! eeec3960c042d6088d75c12c57396852  gcc/common/config/arm/arm-common.cc
! 485b24121b6b0590c10d23699acea97f  gcc/common/config/avr/avr-common.cc
  01bfdbc404319ecaeaaf9400e490cded  gcc/common/config/bfin/bfin-common.cc
  7163ff82097caea7c45ba50bc3827cd2  gcc/common/config/bpf/bpf-common.cc
  0f0b65e1026a46ad767e0354be2f0529  gcc/common/config/c6x/c6x-common.cc
--- 3457,3475 ----
  903401554d90de06743fb9a836e6a45b  gcc/combine-stack-adj.cc
  8b3e9ec255e00dd68f29f98fc66e092b  gcc/combine.cc
  9f2835a8fa18cfce2249127014eb7edd  gcc/common.md
! 76ac3f1825a415d9de15ced4c35fb1bb  gcc/common.opt
  0b6694826773455ec174f3dc52a1a3a1  gcc/common.opt.urls
  d3b28fb0d49a8d683dde6011400fd7e7  gcc/common/common-target-def.h
  93cf11d6a27d42f73799ae012d2f876e  gcc/common/common-target.def
  d8f7142c05c4102806a8b26817df17a6  gcc/common/common-target.h
  dfc09a8e551202c9c0a110afa5ecea07  gcc/common/common-targhooks.cc
  c118f6e609bff904f31476e74ab45479  gcc/common/common-targhooks.h
! 12f28565f09d63f7c9dcdbba1020ff32  gcc/common/config/aarch64/aarch64-common.cc
! 57bc49c6fc4f28f0e0aa28bcac6f123f  gcc/common/config/aarch64/cpuinfo.h
  3a5ce2d619f3e16155b647a743a1c1c2  gcc/common/config/alpha/alpha-common.cc
  62d17fa2c618153bcc9f0eabb9a8e88c  gcc/common/config/arc/arc-common.cc
! 75091fb226907ee0c421380ad0d55922  gcc/common/config/arm/arm-common.cc
! 35a96b3438b0a330529b5a3fab6a3541  gcc/common/config/avr/avr-common.cc
  01bfdbc404319ecaeaaf9400e490cded  gcc/common/config/bfin/bfin-common.cc
  7163ff82097caea7c45ba50bc3827cd2  gcc/common/config/bpf/bpf-common.cc
  0f0b65e1026a46ad767e0354be2f0529  gcc/common/config/c6x/c6x-common.cc
*************** b57f2c45cd9fa53f4fc1621a194e693e  gcc/co
*** 3497,3509 ****
  ca7a0b2f0a3d5cd8dfe4b1fae7a51c25  gcc/common/config/mmix/mmix-common.cc
  934c63448a4b9c2a1594d7ae2b0a4380  gcc/common/config/mn10300/mn10300-common.cc
  b1b166d42b0cd3e8a21a0ad1a418bab7  gcc/common/config/msp430/msp430-common.cc
! d8186ca60d88fc455c403eb87d6e59e7  gcc/common/config/nds32/nds32-common.cc
  3e14b719f563acb68d6d9df79031fed6  gcc/common/config/nvptx/nvptx-common.cc
  33d0cf15b116fd9439fdb91c3c8a206c  gcc/common/config/or1k/or1k-common.cc
  67a4e50b29a50485cecd1c144965e97d  gcc/common/config/pa/pa-common.cc
  500435c25f1e8769a7838c3e187195c1  gcc/common/config/pdp11/pdp11-common.cc
  3fe10d934c16b0a06d492096be6d8ee1  gcc/common/config/pru/pru-common.cc
! 57eaad2fb617ff24b49f3eae71662a6a  gcc/common/config/riscv/riscv-common.cc
  d0f5525bd704195674a68288e7443aad  gcc/common/config/riscv/riscv-ext-bitmask.def
  c5805e3cf6610b64324ce388e3f5f855  gcc/common/config/rs6000/rs6000-common.cc
  b6c011cb2596e87fbedc97081867b691  gcc/common/config/rx/rx-common.cc
--- 3498,3510 ----
  ca7a0b2f0a3d5cd8dfe4b1fae7a51c25  gcc/common/config/mmix/mmix-common.cc
  934c63448a4b9c2a1594d7ae2b0a4380  gcc/common/config/mn10300/mn10300-common.cc
  b1b166d42b0cd3e8a21a0ad1a418bab7  gcc/common/config/msp430/msp430-common.cc
! 4ded680f4885ade43c1a1be4949b0982  gcc/common/config/nds32/nds32-common.cc
  3e14b719f563acb68d6d9df79031fed6  gcc/common/config/nvptx/nvptx-common.cc
  33d0cf15b116fd9439fdb91c3c8a206c  gcc/common/config/or1k/or1k-common.cc
  67a4e50b29a50485cecd1c144965e97d  gcc/common/config/pa/pa-common.cc
  500435c25f1e8769a7838c3e187195c1  gcc/common/config/pdp11/pdp11-common.cc
  3fe10d934c16b0a06d492096be6d8ee1  gcc/common/config/pru/pru-common.cc
! aa4c031bca8ea305d0c824ab328e4212  gcc/common/config/riscv/riscv-common.cc
  d0f5525bd704195674a68288e7443aad  gcc/common/config/riscv/riscv-ext-bitmask.def
  c5805e3cf6610b64324ce388e3f5f855  gcc/common/config/rs6000/rs6000-common.cc
  b6c011cb2596e87fbedc97081867b691  gcc/common/config/rx/rx-common.cc
*************** c47b4191f7bac0196ab63ca2c66bfa98  gcc/co
*** 3527,3541 ****
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  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
  3d35dd7bbc8358248117e8edb6f6895f  gcc/config/aarch64/aarch64-d.h
! 9fe1a08700a99af1ed161e0634875bd2  gcc/config/aarch64/aarch64-early-ra.cc
  0f04d4db0b98d93d624f6bf49c0b2c61  gcc/config/aarch64/aarch64-elf-metadata.cc
  3d5c9a06fc3373401b1a496b0c2d812a  gcc/config/aarch64/aarch64-elf-metadata.h
  cfe06f94751bf9d5dc61fd5b0184ba2c  gcc/config/aarch64/aarch64-elf-raw.h
--- 3528,3542 ----
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
! 4812b8e24c8ff9b327fe47eed325bc7f  gcc/config/aarch64/aarch64-builtins.cc
  a1a7d26ecab3d6681a1d3f5c2cb77275  gcc/config/aarch64/aarch64-builtins.h
! 25b86c8124c381580d324edae15f0634  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
  3d35dd7bbc8358248117e8edb6f6895f  gcc/config/aarch64/aarch64-d.h
! a0598a8d595ee9a5ab98ce05c46c365f  gcc/config/aarch64/aarch64-early-ra.cc
  0f04d4db0b98d93d624f6bf49c0b2c61  gcc/config/aarch64/aarch64-elf-metadata.cc
  3d5c9a06fc3373401b1a496b0c2d812a  gcc/config/aarch64/aarch64-elf-metadata.h
  cfe06f94751bf9d5dc61fd5b0184ba2c  gcc/config/aarch64/aarch64-elf-raw.h
*************** ad46aa5e72a5c2c30247bb3cf2ed9f20  gcc/co
*** 3557,3583 ****
  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
--- 3558,3584 ----
  b5673de84eb78885b56917c7b8b92e97  gcc/config/aarch64/aarch64-ldp-fusion.cc
  66724803f21104e637c395aa5cad8a59  gcc/config/aarch64/aarch64-ldpstp.md
  bfa2432e1ec80f8de2e43f3f3ba8da0e  gcc/config/aarch64/aarch64-linux.h
! 842fb07798922cfc4114312c092bd08f  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
! 387ff45b0c85ee31db12f38e8f73c2b5  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
! 801f94e7c8faf6de3cc4f9c43a2e9140  gcc/config/aarch64/aarch64-simd.md
  f27b31555e077ce25b7e0120a532cfdf  gcc/config/aarch64/aarch64-sme.md
! 49d4ace4311e9b1d77ff31b3b8883769  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
! 3b74ccb1bb630368ce4bcb319e098b43  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! c25b1ec2067960f97deb943a3a5d4f05  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
*************** b7970cc46633371d0ac4e877297d804a  gcc/co
*** 3585,3609 ****
  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
! e8d32471149337fb86504c9b287a6aef  gcc/config/aarch64/arm_bf16.h
  b156014d3463d59daa50c73ab8e10b54  gcc/config/aarch64/arm_fp16.h
! 5853aca7ed1116ecb7cad53e0fe8c73b  gcc/config/aarch64/arm_neon.h
  f2108dbfce0ac8bc8e9d922391b75555  gcc/config/aarch64/arm_neon_sve_bridge.h
  f30a98583d7c2cf50310b317a5f959be  gcc/config/aarch64/arm_private_fp8.h
  05ff50623c2d55e39715f09f1b461320  gcc/config/aarch64/arm_private_neon_types.h
--- 3586,3610 ----
  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
! 4b18b1308753ec5ff20bee8d6e7953d6  gcc/config/aarch64/aarch64-sve-builtins.cc
  0aaa296fe7e877e67b85468885fdb8b5  gcc/config/aarch64/aarch64-sve-builtins.def
  88f4473ff255da227dee1dbc66c11a5f  gcc/config/aarch64/aarch64-sve-builtins.h
! 55c4112678d0a0410412c7ce1fcfdb1d  gcc/config/aarch64/aarch64-sve.md
! 57fa53db2f0ce52b4dd1477942159a72  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
! bf4c7ba8ff7427e1317bf786edc322ec  gcc/config/aarch64/aarch64.cc
! c0656e1598f753658efcc03045461ce5  gcc/config/aarch64/aarch64.h
! cb30e420928458bf74960d77afde4b13  gcc/config/aarch64/aarch64.md
! dabea943ce1adc1cd1db5e4de971fbeb  gcc/config/aarch64/aarch64.opt
  5bc2d62d910e1c00bd6eed6ffaa5a18d  gcc/config/aarch64/aarch64.opt.urls
  854a2fd8965d477c5b064388ed354bf1  gcc/config/aarch64/arm_acle.h
! bbf568122f7d6758ec96f71a60e862d8  gcc/config/aarch64/arm_bf16.h
  b156014d3463d59daa50c73ab8e10b54  gcc/config/aarch64/arm_fp16.h
! 03187872864f2917ff217b0dde1e489f  gcc/config/aarch64/arm_neon.h
  f2108dbfce0ac8bc8e9d922391b75555  gcc/config/aarch64/arm_neon_sve_bridge.h
  f30a98583d7c2cf50310b317a5f959be  gcc/config/aarch64/arm_private_fp8.h
  05ff50623c2d55e39715f09f1b461320  gcc/config/aarch64/arm_private_neon_types.h
*************** cf1987e5ab132733d06bfee8c03fcb96  gcc/co
*** 3613,3628 ****
  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/config/aarch64/fractional-cost.h
  651bbb7890869a090e394b18403b9f44  gcc/config/aarch64/gcc-auto-profile
  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
--- 3614,3629 ----
  b80cf07c2c72294b3852130ec8c93494  gcc/config/aarch64/biarchilp32.h
  532332ff4f3d492231a7c392cda8d879  gcc/config/aarch64/biarchlp64.h
  eb03dfcd266d8fc8f127a62e436447db  gcc/config/aarch64/check-sve-md.awk
! 4a5b21c6d45c2fcbdb27f8cc37811d0b  gcc/config/aarch64/constraints.md
! 36793d3c45f01e48f803e37494b108f0  gcc/config/aarch64/cortex-a57-fma-steering.cc
  dc252994bb63e3b3bb9aa44e233b100d  gcc/config/aarch64/cygming.h
! 483b45a54151291d986c42addcb125d1  gcc/config/aarch64/driver-aarch64.cc
  f16190eb3167c87740aaff80ebc646b5  gcc/config/aarch64/fractional-cost.h
  651bbb7890869a090e394b18403b9f44  gcc/config/aarch64/gcc-auto-profile
  190b8ad2102cd90ce935883b736ff024  gcc/config/aarch64/geniterators.sh
  b8dedf1142526bb86368b620384f877a  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! c25d8d3784b995e835c558cb80473119  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  b382a70dce13e2b3d554e31443c0dbf0  gcc/config/aarch64/olympus.md
  56d541392b6fc0157c039891f4d3f863  gcc/config/aarch64/predicates.md
*************** cbfacc8a400417ba418bcf35c9924095  gcc/co
*** 3634,3642 ****
  7e5e5f86679b2cd3564d95ac33603bc1  gcc/config/aarch64/t-aarch64-netbsd
  036cc14e1c985a894bd470837e610f31  gcc/config/aarch64/t-aarch64-rtems
  4b1d74da5afd2cbec8affff49eb13293  gcc/config/aarch64/t-aarch64-vxworks
! 09fdcca57e13f8d92a7493e14551324a  gcc/config/aarch64/thunderx.md
  b4fea9bc9192136140380d88dce79fa9  gcc/config/aarch64/thunderx2t99.md
! 6d97ce5136beca035ff0415f2d3e8cfb  gcc/config/aarch64/thunderx3t110.md
  e05dc280f1503a1c41082725d94d62d7  gcc/config/aarch64/tsv110.md
  90072f357d3de33ba9390e2634c9d11b  gcc/config/aarch64/tuning_models/a64fx.h
  670f913d53c6a1f880244576faf330b4  gcc/config/aarch64/tuning_models/ampere1.h
--- 3635,3643 ----
  7e5e5f86679b2cd3564d95ac33603bc1  gcc/config/aarch64/t-aarch64-netbsd
  036cc14e1c985a894bd470837e610f31  gcc/config/aarch64/t-aarch64-rtems
  4b1d74da5afd2cbec8affff49eb13293  gcc/config/aarch64/t-aarch64-vxworks
! 22142faf1c81e5120e9e89d5e147969e  gcc/config/aarch64/thunderx.md
  b4fea9bc9192136140380d88dce79fa9  gcc/config/aarch64/thunderx2t99.md
! dedb6623cd3073a98711776bb3e1d95e  gcc/config/aarch64/thunderx3t110.md
  e05dc280f1503a1c41082725d94d62d7  gcc/config/aarch64/tsv110.md
  90072f357d3de33ba9390e2634c9d11b  gcc/config/aarch64/tuning_models/a64fx.h
  670f913d53c6a1f880244576faf330b4  gcc/config/aarch64/tuning_models/ampere1.h
*************** ee1645bd7e049365c9b52b774f3e8324  gcc/co
*** 3663,3669 ****
  0e884947a64edcd1a0ab1c2d7f79ecc3  gcc/config/aarch64/tuning_models/neoversev2.h
  850f4e265f4d69a8db04fb6b9a509a73  gcc/config/aarch64/tuning_models/neoversev3.h
  da9eaf909c14d1ac8802b858a796dd0b  gcc/config/aarch64/tuning_models/neoversev3ae.h
! d697f4c32319e1c4a7bd9173bc45a0db  gcc/config/aarch64/tuning_models/olympus.h
  abe9f0139f34302abf43f42fc034f8a4  gcc/config/aarch64/tuning_models/qdf24xx.h
  f4bb7074b559d7a9ada65e9f1ea7e76e  gcc/config/aarch64/tuning_models/saphira.h
  79b67a066ee629e9a5d00e7dbc5da7b3  gcc/config/aarch64/tuning_models/thunderx.h
--- 3664,3670 ----
  0e884947a64edcd1a0ab1c2d7f79ecc3  gcc/config/aarch64/tuning_models/neoversev2.h
  850f4e265f4d69a8db04fb6b9a509a73  gcc/config/aarch64/tuning_models/neoversev3.h
  da9eaf909c14d1ac8802b858a796dd0b  gcc/config/aarch64/tuning_models/neoversev3ae.h
! 45f7d8d8c8f90694a2721e27d6347703  gcc/config/aarch64/tuning_models/olympus.h
  abe9f0139f34302abf43f42fc034f8a4  gcc/config/aarch64/tuning_models/qdf24xx.h
  f4bb7074b559d7a9ada65e9f1ea7e76e  gcc/config/aarch64/tuning_models/saphira.h
  79b67a066ee629e9a5d00e7dbc5da7b3  gcc/config/aarch64/tuning_models/thunderx.h
*************** a07ee362a4961e9d41cb0ab83553de74  gcc/co
*** 3677,3683 ****
  83cd5c97b8f09c9606ad9f2c50fb18a0  gcc/config/alpha/alpha-modes.def
  b4eac8c564e104cf3cc48269868be196  gcc/config/alpha/alpha-passes.def
  3fde351a6bc8386bb57921a1e5589ffa  gcc/config/alpha/alpha-protos.h
! f359ed330f5d216f7f04f393d645fe95  gcc/config/alpha/alpha.cc
  d9ed1faf0e8c75d119c4c2bd11d0f7a8  gcc/config/alpha/alpha.h
  785f504d1be6413dec066cb278f0c8ec  gcc/config/alpha/alpha.md
  9d7aba6e4e2821c0d801e5c6cba73763  gcc/config/alpha/alpha.opt
--- 3678,3684 ----
  83cd5c97b8f09c9606ad9f2c50fb18a0  gcc/config/alpha/alpha-modes.def
  b4eac8c564e104cf3cc48269868be196  gcc/config/alpha/alpha-passes.def
  3fde351a6bc8386bb57921a1e5589ffa  gcc/config/alpha/alpha-protos.h
! 47882084eaa3c7296c579a554ef122c4  gcc/config/alpha/alpha.cc
  d9ed1faf0e8c75d119c4c2bd11d0f7a8  gcc/config/alpha/alpha.h
  785f504d1be6413dec066cb278f0c8ec  gcc/config/alpha/alpha.md
  9d7aba6e4e2821c0d801e5c6cba73763  gcc/config/alpha/alpha.opt
*************** f22fdd4d471574ef98e36872e129650c  gcc/co
*** 3694,3711 ****
  5c1d279515f3abdfbd9da1690bbd156e  gcc/config/alpha/linux.h
  a18b28bb70fe81dd80dd95de06b21946  gcc/config/alpha/netbsd.h
  40d784330bb009e2c848eee8fd65345c  gcc/config/alpha/openbsd.h
! 687e804b7ff2dc05bdae8b5236428328  gcc/config/alpha/predicates.md
  316e1292e8f07405f6ce6df49d8d4cd3  gcc/config/alpha/sync.md
  ee57bf3155723ff4ef4147ea3423856f  gcc/config/alpha/t-alpha
  6e8dd648b9668f18b1dfd9f1203c9885  gcc/config/alpha/t-linux
  0ef67130560959298889c422d85409ad  gcc/config/alpha/t-vms
  89357c18963ffd89cd9fca174d451495  gcc/config/alpha/vms.h
  b3c50e1f46a9bdacf84333c01cb8ec66  gcc/config/alpha/x-alpha
! 09179611bcad203b7c92934051c17347  gcc/config/arc/arc-arch.h
  b73a4342e4aa10e148c8163edc67cc54  gcc/config/arc/arc-arches.def
  4da63b7cdc4122e4f3cc613537c2781a  gcc/config/arc/arc-c.cc
  5119a0bb8341011b9de78c1a20831638  gcc/config/arc/arc-c.def
! 2e7229a0dcde47397b627bbaa49b0d27  gcc/config/arc/arc-cpus.def
  5fb145f668d1dd7230d16449e0d2f99a  gcc/config/arc/arc-modes.def
  fd3ed0ec4ce1a668f606ae172e003681  gcc/config/arc/arc-options.def
  69982786ad0a291a566c520adc6351f3  gcc/config/arc/arc-opts.h
--- 3695,3712 ----
  5c1d279515f3abdfbd9da1690bbd156e  gcc/config/alpha/linux.h
  a18b28bb70fe81dd80dd95de06b21946  gcc/config/alpha/netbsd.h
  40d784330bb009e2c848eee8fd65345c  gcc/config/alpha/openbsd.h
! 1df7337253464d87e09bb1c2cd510b45  gcc/config/alpha/predicates.md
  316e1292e8f07405f6ce6df49d8d4cd3  gcc/config/alpha/sync.md
  ee57bf3155723ff4ef4147ea3423856f  gcc/config/alpha/t-alpha
  6e8dd648b9668f18b1dfd9f1203c9885  gcc/config/alpha/t-linux
  0ef67130560959298889c422d85409ad  gcc/config/alpha/t-vms
  89357c18963ffd89cd9fca174d451495  gcc/config/alpha/vms.h
  b3c50e1f46a9bdacf84333c01cb8ec66  gcc/config/alpha/x-alpha
! eabc78df37af85f23888a4dbccad6047  gcc/config/arc/arc-arch.h
  b73a4342e4aa10e148c8163edc67cc54  gcc/config/arc/arc-arches.def
  4da63b7cdc4122e4f3cc613537c2781a  gcc/config/arc/arc-c.cc
  5119a0bb8341011b9de78c1a20831638  gcc/config/arc/arc-c.def
! 4eeb3d6cc533571e482656eaa419af98  gcc/config/arc/arc-cpus.def
  5fb145f668d1dd7230d16449e0d2f99a  gcc/config/arc/arc-modes.def
  fd3ed0ec4ce1a668f606ae172e003681  gcc/config/arc/arc-options.def
  69982786ad0a291a566c520adc6351f3  gcc/config/arc/arc-opts.h
*************** ed370a07e382245b4edbac85d9fe2487  gcc/co
*** 3714,3726 ****
  277b2da416fe84d9286ecaf175c75304  gcc/config/arc/arc-simd.h
  c6acf03bc43070e9c61e14fa7a4a0cb6  gcc/config/arc/arc-tables.opt
  6704645d075bf670b5ed5d77f0a88b86  gcc/config/arc/arc-tables.opt.urls
! 233efc76025589cb15f3114136bec898  gcc/config/arc/arc.cc
! 208ecc54b090b0bf3d9fb8f776587a0c  gcc/config/arc/arc.h
! ea5a9b331d0504b04c1fa274239c18d9  gcc/config/arc/arc.md
! f79a52d46acb2409a7cb46770b80e1e6  gcc/config/arc/arc.opt
  c3baf63ecb600d3affb19477ac1f85dd  gcc/config/arc/arc.opt.urls
  a3f8bbc3161d21e057f958c5eb965623  gcc/config/arc/arc600.md
! 245227c1a72baa80f78181796ccb63ad  gcc/config/arc/arc700.md
  38ff87aecba54b6837249c54841b97bb  gcc/config/arc/arcEM.md
  e1294e7cce650795ca694c7cec4e941b  gcc/config/arc/arcHS.md
  7c696a066120a0c30b955c0db5a1d31c  gcc/config/arc/arcHS4x.md
--- 3715,3727 ----
  277b2da416fe84d9286ecaf175c75304  gcc/config/arc/arc-simd.h
  c6acf03bc43070e9c61e14fa7a4a0cb6  gcc/config/arc/arc-tables.opt
  6704645d075bf670b5ed5d77f0a88b86  gcc/config/arc/arc-tables.opt.urls
! 2e459999a9e9efeb15c290f174ced6ab  gcc/config/arc/arc.cc
! 7a6db5b65151fcd80633a4d521c4602e  gcc/config/arc/arc.h
! 3f6829df3eab0dc1537acf247d33518f  gcc/config/arc/arc.md
! 33a5a4c7c898293e6725d9f62bf5b16c  gcc/config/arc/arc.opt
  c3baf63ecb600d3affb19477ac1f85dd  gcc/config/arc/arc.opt.urls
  a3f8bbc3161d21e057f958c5eb965623  gcc/config/arc/arc600.md
! 5db171ff963edead8494f5e23de61076  gcc/config/arc/arc700.md
  38ff87aecba54b6837249c54841b97bb  gcc/config/arc/arcEM.md
  e1294e7cce650795ca694c7cec4e941b  gcc/config/arc/arcHS.md
  7c696a066120a0c30b955c0db5a1d31c  gcc/config/arc/arcHS4x.md
*************** a4d6784752ec3ddc59172cdb82d30f9d  gcc/co
*** 3729,3735 ****
  2501b547478f3af2efb6155880d8cc3c  gcc/config/arc/builtins.def
  bb2259303a3941b4ddc8d57c91887b42  gcc/config/arc/constraints.md
  da769f63b9bc5320e171c92913362d09  gcc/config/arc/driver-arc.cc
! 67359123ca2f17d8b5b696a02ef249a3  gcc/config/arc/elf.h
  255d583e6d23d9cbed1614263d159a1b  gcc/config/arc/fpu.md
  e4963dddaeb03827a2d093179a6ddb33  gcc/config/arc/fpx.md
  b22101d6eff28391d2491e819994b397  gcc/config/arc/genmultilib.awk
--- 3730,3736 ----
  2501b547478f3af2efb6155880d8cc3c  gcc/config/arc/builtins.def
  bb2259303a3941b4ddc8d57c91887b42  gcc/config/arc/constraints.md
  da769f63b9bc5320e171c92913362d09  gcc/config/arc/driver-arc.cc
! 35a88defaba3b1f28eca519e22a440e1  gcc/config/arc/elf.h
  255d583e6d23d9cbed1614263d159a1b  gcc/config/arc/fpu.md
  e4963dddaeb03827a2d093179a6ddb33  gcc/config/arc/fpx.md
  b22101d6eff28391d2491e819994b397  gcc/config/arc/genmultilib.awk
*************** b22101d6eff28391d2491e819994b397  gcc/co
*** 3741,3753 ****
  08610008fd0f9e7185d7838dca810f61  gcc/config/arc/t-multilib
  0aa0d883b6c1512e2e39e14e70ec4128  gcc/config/arc/t-multilib-linux
  e84c6269142d364b9038b02ab8f994a5  gcc/config/arm/README-interworking
! 7e6305bbe158b39fff2a477311829330  gcc/config/arm/aarch-bti-insert.cc
  cae52b91ce29caabb70e52d976dd63dc  gcc/config/arm/aarch-common-protos.h
  2138a3943a940cc2f1e6322af3c1188d  gcc/config/arm/aarch-common.cc
  7505807a8dd07a4fcd8bbb3e466b1f0a  gcc/config/arm/aarch-common.h
  3a556596df3ee38f523c68b8c3a5d6ba  gcc/config/arm/aarch-cost-tables.h
  ca3c352ed251bec441567afd8b02f359  gcc/config/arm/aout.h
! 1cb6f9013e1360037c682fef8d934a5b  gcc/config/arm/arm-builtins.cc
  920894cd18c51649dff6d840bfda18de  gcc/config/arm/arm-builtins.h
  34409fea491dd8677014904be3b9080b  gcc/config/arm/arm-c.cc
  59b907b2534b4e035881307714a958dc  gcc/config/arm/arm-cpus.in
--- 3742,3754 ----
  08610008fd0f9e7185d7838dca810f61  gcc/config/arc/t-multilib
  0aa0d883b6c1512e2e39e14e70ec4128  gcc/config/arc/t-multilib-linux
  e84c6269142d364b9038b02ab8f994a5  gcc/config/arm/README-interworking
! 033e8a6801ed4c47f64b1c699c59edf2  gcc/config/arm/aarch-bti-insert.cc
  cae52b91ce29caabb70e52d976dd63dc  gcc/config/arm/aarch-common-protos.h
  2138a3943a940cc2f1e6322af3c1188d  gcc/config/arm/aarch-common.cc
  7505807a8dd07a4fcd8bbb3e466b1f0a  gcc/config/arm/aarch-common.h
  3a556596df3ee38f523c68b8c3a5d6ba  gcc/config/arm/aarch-cost-tables.h
  ca3c352ed251bec441567afd8b02f359  gcc/config/arm/aout.h
! 0edb1e9b59e0e1b8be7de3f690405bba  gcc/config/arm/arm-builtins.cc
  920894cd18c51649dff6d840bfda18de  gcc/config/arm/arm-builtins.h
  34409fea491dd8677014904be3b9080b  gcc/config/arm/arm-c.cc
  59b907b2534b4e035881307714a958dc  gcc/config/arm/arm-cpus.in
*************** d58398b8674211171ea210f8d3f3883b  gcc/co
*** 3758,3783 ****
  25f680dee45e5da5bbf2c372c30bb986  gcc/config/arm/arm-generic.md
  357d99c16ccb55530e3c4bc802988cde  gcc/config/arm/arm-ldmstm.ml
  7550204b1316d145890d079b35b59fbd  gcc/config/arm/arm-mlib.h
! 93f3f601901fb6c23a6f561427065cd1  gcc/config/arm/arm-modes.def
! 13b42fc7ece0708b0998dc41334477be  gcc/config/arm/arm-mve-builtins-base.cc
  dd68b000194684be096bab7e439eae6d  gcc/config/arm/arm-mve-builtins-base.def
  b89eb2d819ab7b39687f97a2e620112b  gcc/config/arm/arm-mve-builtins-base.h
  76c9ba52f5b1e8b2d2fe7e3750adbcbb  gcc/config/arm/arm-mve-builtins-functions.h
! b03a36134ad5a4fd175c8187fe60f189  gcc/config/arm/arm-mve-builtins-shapes.cc
  157421ab7aefe277d0d18d38ea429fdd  gcc/config/arm/arm-mve-builtins-shapes.h
  cbc9ce794eac388614494b30973bd668  gcc/config/arm/arm-mve-builtins.cc
  e0fbe1dcad67c21113339fdfd76d1a7d  gcc/config/arm/arm-mve-builtins.def
  dc420141faed0de4906a02cbbd953f18  gcc/config/arm/arm-mve-builtins.h
  b65c3665748e7d55a7c42645ff190690  gcc/config/arm/arm-opts.h
  841a83f5976919c20a40ed76dda7486d  gcc/config/arm/arm-passes.def
! 4b2b961e96e10d165d0160ec02f69cd3  gcc/config/arm/arm-protos.h
  b8dda5ab1f67b388debff95f4a66c82c  gcc/config/arm/arm-simd-builtin-types.def
  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
  e9f9bb6f33d1b0c95dc7ccae3a50cbaf  gcc/config/arm/arm.opt.urls
  9e0f773438fc26deecff276e4b7684ef  gcc/config/arm/arm1020e.md
--- 3759,3784 ----
  25f680dee45e5da5bbf2c372c30bb986  gcc/config/arm/arm-generic.md
  357d99c16ccb55530e3c4bc802988cde  gcc/config/arm/arm-ldmstm.ml
  7550204b1316d145890d079b35b59fbd  gcc/config/arm/arm-mlib.h
! ffdbb4e18653cbb05435d74f1b237c9e  gcc/config/arm/arm-modes.def
! c598d61cb4c62a43ca9f95d622837449  gcc/config/arm/arm-mve-builtins-base.cc
  dd68b000194684be096bab7e439eae6d  gcc/config/arm/arm-mve-builtins-base.def
  b89eb2d819ab7b39687f97a2e620112b  gcc/config/arm/arm-mve-builtins-base.h
  76c9ba52f5b1e8b2d2fe7e3750adbcbb  gcc/config/arm/arm-mve-builtins-functions.h
! 93cffac38cfef46376017c6e56b9ba49  gcc/config/arm/arm-mve-builtins-shapes.cc
  157421ab7aefe277d0d18d38ea429fdd  gcc/config/arm/arm-mve-builtins-shapes.h
  cbc9ce794eac388614494b30973bd668  gcc/config/arm/arm-mve-builtins.cc
  e0fbe1dcad67c21113339fdfd76d1a7d  gcc/config/arm/arm-mve-builtins.def
  dc420141faed0de4906a02cbbd953f18  gcc/config/arm/arm-mve-builtins.h
  b65c3665748e7d55a7c42645ff190690  gcc/config/arm/arm-opts.h
  841a83f5976919c20a40ed76dda7486d  gcc/config/arm/arm-passes.def
! fdd69edfae02202df6ae011b1644363f  gcc/config/arm/arm-protos.h
  b8dda5ab1f67b388debff95f4a66c82c  gcc/config/arm/arm-simd-builtin-types.def
  555504756e42d516b613cd492f56e83e  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  b5f7e0b5b33aa917de47ab3bf691f123  gcc/config/arm/arm-tune.md
! 905daa07105845549310c5d433364b09  gcc/config/arm/arm.cc
! 0fac67e2d1f28320b6961fd81d196a57  gcc/config/arm/arm.h
! d198ecf523c5da8b33586452eeb8905b  gcc/config/arm/arm.md
  68b71bf902cc6c9290e847ce76a9fdea  gcc/config/arm/arm.opt
  e9f9bb6f33d1b0c95dc7ccae3a50cbaf  gcc/config/arm/arm.opt.urls
  9e0f773438fc26deecff276e4b7684ef  gcc/config/arm/arm1020e.md
*************** ff83fcd2f498fb8a1b0605f6eec3af92  gcc/co
*** 3799,3808 ****
  cfdebffa87fa0b07bf5cb9a6ad6a7e56  gcc/config/arm/arm_vfp_builtins.def
  02d667c88fd172e21c1a8c29cd294ce0  gcc/config/arm/bpabi.h
  48ebfb3e620b8c72934853653d6edef5  gcc/config/arm/common.md
! 934f7fd78606b69298a5acd8f8540620  gcc/config/arm/constraints.md
  a8cb28a7cf84817ff13f23683f35860d  gcc/config/arm/cortex-a15-neon.md
  bd450100870e5f38959300593004ad04  gcc/config/arm/cortex-a15.md
! 14b8d6bb0a907a1623d567a40d90a42c  gcc/config/arm/cortex-a17-neon.md
  8389e039d390798d06a6801f2cee2cb2  gcc/config/arm/cortex-a17.md
  b57f5c12edfd1857d16afb8469f7ee52  gcc/config/arm/cortex-a5.md
  29b8095ecb29b7e8aabebf79b69701ea  gcc/config/arm/cortex-a53.md
--- 3800,3809 ----
  cfdebffa87fa0b07bf5cb9a6ad6a7e56  gcc/config/arm/arm_vfp_builtins.def
  02d667c88fd172e21c1a8c29cd294ce0  gcc/config/arm/bpabi.h
  48ebfb3e620b8c72934853653d6edef5  gcc/config/arm/common.md
! 83597c18df408c5234cd545e6e1fb876  gcc/config/arm/constraints.md
  a8cb28a7cf84817ff13f23683f35860d  gcc/config/arm/cortex-a15-neon.md
  bd450100870e5f38959300593004ad04  gcc/config/arm/cortex-a15.md
! 06c10d7d9812c48b0b3e95a1a0c703f7  gcc/config/arm/cortex-a17-neon.md
  8389e039d390798d06a6801f2cee2cb2  gcc/config/arm/cortex-a17.md
  b57f5c12edfd1857d16afb8469f7ee52  gcc/config/arm/cortex-a5.md
  29b8095ecb29b7e8aabebf79b69701ea  gcc/config/arm/cortex-a53.md
*************** b1ea398b59f40c55ce17954edfb04daf  gcc/co
*** 3816,3835 ****
  a29db724927556817d5054efb1b526f0  gcc/config/arm/cortex-m4.md
  ff9e99d02f3a5134c97be3d3df5bab03  gcc/config/arm/cortex-m7.md
  5de17507af2e5e22b484cb6c0d4163c0  gcc/config/arm/cortex-r4.md
! 0a9eb0e311b51e728f39090bde6f5c10  gcc/config/arm/cortex-r4f.md
  7cb0a51097f65d986463169732ab7037  gcc/config/arm/crypto.def
! b1c6f2331c480fc3083640a4ccec6ba8  gcc/config/arm/crypto.md
  286312a85e5d195d3ab34da2c2519981  gcc/config/arm/driver-arm.cc
! 81d19f41f7c4c219092aaa393c7bc18d  gcc/config/arm/elf.h
  1460d41f176c82d31d039b2b42329d3c  gcc/config/arm/exynos-m1.md
  20f6f8e2ec7816729057a0e92b45dbcf  gcc/config/arm/fa526.md
  f41f546f9408a73967d26ddce4c25382  gcc/config/arm/fa606te.md
  1baf36e1485ad381a2c5587307c0fce9  gcc/config/arm/fa626te.md
! 3799f5c82571390a5cf19de16414a5ea  gcc/config/arm/fa726te.md
  c1a53bb5a2e0b8cf073e84ba2442e02f  gcc/config/arm/fmp626.md
  b312e6312c7bbbb797f6dd1db099e1e8  gcc/config/arm/freebsd.h
  65bf2f64a56a87ddc435532d3747c0ac  gcc/config/arm/fuchsia-elf.h
! bdccc534a778840961eb90985aa49f87  gcc/config/arm/iterators.md
  a05e41599d53801ec294a019afda9ee5  gcc/config/arm/ldmstm.md
  6e097b371a7602086ea8987bd52b2452  gcc/config/arm/ldrdstrd.md
  01d6a44d1e3934818d377e88eb56528c  gcc/config/arm/linux-eabi.h
--- 3817,3836 ----
  a29db724927556817d5054efb1b526f0  gcc/config/arm/cortex-m4.md
  ff9e99d02f3a5134c97be3d3df5bab03  gcc/config/arm/cortex-m7.md
  5de17507af2e5e22b484cb6c0d4163c0  gcc/config/arm/cortex-r4.md
! a234fd85a8d3d4cf3791a4213752aa5d  gcc/config/arm/cortex-r4f.md
  7cb0a51097f65d986463169732ab7037  gcc/config/arm/crypto.def
! 7e91fdac62c3d30257065ca890d658c5  gcc/config/arm/crypto.md
  286312a85e5d195d3ab34da2c2519981  gcc/config/arm/driver-arm.cc
! b5117128853e5dca224b9b9f90c7df97  gcc/config/arm/elf.h
  1460d41f176c82d31d039b2b42329d3c  gcc/config/arm/exynos-m1.md
  20f6f8e2ec7816729057a0e92b45dbcf  gcc/config/arm/fa526.md
  f41f546f9408a73967d26ddce4c25382  gcc/config/arm/fa606te.md
  1baf36e1485ad381a2c5587307c0fce9  gcc/config/arm/fa626te.md
! 05d25236f697746d568aea1d5c65e544  gcc/config/arm/fa726te.md
  c1a53bb5a2e0b8cf073e84ba2442e02f  gcc/config/arm/fmp626.md
  b312e6312c7bbbb797f6dd1db099e1e8  gcc/config/arm/freebsd.h
  65bf2f64a56a87ddc435532d3747c0ac  gcc/config/arm/fuchsia-elf.h
! f7bccd18b018a5b3201a7dc6cb7c73a6  gcc/config/arm/iterators.md
  a05e41599d53801ec294a019afda9ee5  gcc/config/arm/ldmstm.md
  6e097b371a7602086ea8987bd52b2452  gcc/config/arm/ldrdstrd.md
  01d6a44d1e3934818d377e88eb56528c  gcc/config/arm/linux-eabi.h
*************** a05e41599d53801ec294a019afda9ee5  gcc/co
*** 3838,3844 ****
  1667eb0fa8e0c13bbc8bee9dac9d67df  gcc/config/arm/marvell-pj4.md
  32c92ae1e742f4b71f8237f6a99ff6cc  gcc/config/arm/mmintrin.h
  60c1d9194ea1d3e2350c685cc97cbf83  gcc/config/arm/mve.md
! 81867ea0f51f02afe47cc2d9052cb1a3  gcc/config/arm/neon.md
  8d30cf4aec319e07ed12fff3c5cf305b  gcc/config/arm/netbsd-eabi.h
  40599a161c97c0c4dc8ca205f94be6d4  gcc/config/arm/netbsd-elf.h
  440e1629bcf9f80e1a56ada74bee6b24  gcc/config/arm/parsecpu.awk
--- 3839,3845 ----
  1667eb0fa8e0c13bbc8bee9dac9d67df  gcc/config/arm/marvell-pj4.md
  32c92ae1e742f4b71f8237f6a99ff6cc  gcc/config/arm/mmintrin.h
  60c1d9194ea1d3e2350c685cc97cbf83  gcc/config/arm/mve.md
! c52d4dbc99c70816e29100dcde104c06  gcc/config/arm/neon.md
  8d30cf4aec319e07ed12fff3c5cf305b  gcc/config/arm/netbsd-eabi.h
  40599a161c97c0c4dc8ca205f94be6d4  gcc/config/arm/netbsd-elf.h
  440e1629bcf9f80e1a56ada74bee6b24  gcc/config/arm/parsecpu.awk
*************** eb5d557ed4a28be8a33a48aa89c84090  gcc/co
*** 3860,3877 ****
  dc8e1ff924dd1f2699f60837b792825a  gcc/config/arm/t-rtems
  d526cefbe510bb4ecbc4a0449c85d458  gcc/config/arm/t-symbian
  2b72777522221c9b0b7ad05aac682ce1  gcc/config/arm/t-vxworks
! 0b2e19a4597309196fd02aca0499b557  gcc/config/arm/thumb1.md
  98f5610cdda65ce4036f9cf6fdaf4a2e  gcc/config/arm/thumb2.md
  a8f8df43eaf7368cf5b32cb8cd95af6a  gcc/config/arm/types.md
  2fb5b4ba1bbd3233f9cca20ea49fc52a  gcc/config/arm/uclinux-eabi.h
  8045b9b694fc99f7032224d44788549c  gcc/config/arm/uclinux-elf.h
! cbc2bd9aa18e6e70a4671a054d135db9  gcc/config/arm/uclinuxfdpiceabi.h
  b8b76dbf176dc57b84b216840572af4c  gcc/config/arm/unknown-elf.h
! ff6e271f76a80e339e3739c16c5209fa  gcc/config/arm/unspecs.md
! 35ba1cbe89a15b9a2f75ececd75751d6  gcc/config/arm/vec-common.md
  a7bf68c719eaed18d8934e77c7815311  gcc/config/arm/vfp.md
  e3e0b97f66e989814e247bb6c7c3d5c9  gcc/config/arm/vfp11.md
! 826e6388ae3753ffdcf4ddc4d90857e0  gcc/config/arm/vxworks.h
  2664f2ce27eda9680292f3de1fa78b83  gcc/config/arm/vxworks.opt
  e219596493ffcd798a48b24b22b5e077  gcc/config/arm/vxworks.opt.urls
  8bb1a840fb87b138c620682ccad6aee4  gcc/config/arm/x-arm
--- 3861,3878 ----
  dc8e1ff924dd1f2699f60837b792825a  gcc/config/arm/t-rtems
  d526cefbe510bb4ecbc4a0449c85d458  gcc/config/arm/t-symbian
  2b72777522221c9b0b7ad05aac682ce1  gcc/config/arm/t-vxworks
! a7c5ea8702474f8868fb44e754a4fbf9  gcc/config/arm/thumb1.md
  98f5610cdda65ce4036f9cf6fdaf4a2e  gcc/config/arm/thumb2.md
  a8f8df43eaf7368cf5b32cb8cd95af6a  gcc/config/arm/types.md
  2fb5b4ba1bbd3233f9cca20ea49fc52a  gcc/config/arm/uclinux-eabi.h
  8045b9b694fc99f7032224d44788549c  gcc/config/arm/uclinux-elf.h
! 2cc0b71e03df6de3903fa5642d181d12  gcc/config/arm/uclinuxfdpiceabi.h
  b8b76dbf176dc57b84b216840572af4c  gcc/config/arm/unknown-elf.h
! be48458dade81483020ae74fbf142bac  gcc/config/arm/unspecs.md
! dd6c74030c829667e4bf726f14255c64  gcc/config/arm/vec-common.md
  a7bf68c719eaed18d8934e77c7815311  gcc/config/arm/vfp.md
  e3e0b97f66e989814e247bb6c7c3d5c9  gcc/config/arm/vfp11.md
! 831510521eb4dd38f55d742bc33f8471  gcc/config/arm/vxworks.h
  2664f2ce27eda9680292f3de1fa78b83  gcc/config/arm/vxworks.opt
  e219596493ffcd798a48b24b22b5e077  gcc/config/arm/vxworks.opt.urls
  8bb1a840fb87b138c620682ccad6aee4  gcc/config/arm/x-arm
*************** a003e2850cf677560132fd307ecee01f  gcc/co
*** 3885,3901 ****
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
  4fb124444d8cfdcf964c19206d382a55  gcc/config/avr/avr-passes-fuse-move.h
! 0edab359f05579f33bd70fb523592bcd  gcc/config/avr/avr-passes.cc
  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
  ec06c3cb0febed0066782b6d9fc52013  gcc/config/avr/driver-avr.cc
  ac632b1dc99f00909fa89603958f6495  gcc/config/avr/elf.h
--- 3886,3902 ----
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
  4fb124444d8cfdcf964c19206d382a55  gcc/config/avr/avr-passes-fuse-move.h
! b86a49d0f7486dd89bd4f98bb3f4ec3c  gcc/config/avr/avr-passes.cc
  7694efecfa1a86f5d70c1dcee34a8ffd  gcc/config/avr/avr-passes.def
  6033224c6e10fc0028d72d05ef4adc70  gcc/config/avr/avr-protos.h
  4ee8705558d223eb1da7a1266af8c799  gcc/config/avr/avr-stdint.h
! a68b1f333560b33ca2f5c261c91b9311  gcc/config/avr/avr.cc
! 7e4633dda230d367d9859c29b7534ae4  gcc/config/avr/avr.h
! e225a05c4cf4e7a5847332b5b4c666d1  gcc/config/avr/avr.md
  2c8e496ccc33a4c3b5ea998449a69941  gcc/config/avr/avr.opt
  f6cef551d36f0002a5f31e6f394d87af  gcc/config/avr/avr.opt.urls
  a2e6c4bc09c4af90d1c01745985baff7  gcc/config/avr/avrlibc.h
! f625cbe4b6bbd0986ca09f6d0465d3f6  gcc/config/avr/builtins.def
  dcd40301975d7f922b3fc51ba7ab1096  gcc/config/avr/constraints.md
  ec06c3cb0febed0066782b6d9fc52013  gcc/config/avr/driver-avr.cc
  ac632b1dc99f00909fa89603958f6495  gcc/config/avr/elf.h
*************** ac632b1dc99f00909fa89603958f6495  gcc/co
*** 3904,3916 ****
  1a5c508b77e0fdec3eba4025fad143e4  gcc/config/avr/genmultilib.awk
  3e1985cc514729064bd7289a7a1050a0  gcc/config/avr/predicates.md
  989371a0c0bef067b04f2ca6cab339f8  gcc/config/avr/ranges.h
! 95ad97cfa72d237935c2af12b2bd398c  gcc/config/avr/specs.h
  71f81820bdeb307527c4c7b577e056de  gcc/config/avr/stdfix.h
  c543f228dfe0842eef779abf3c3657a8  gcc/config/avr/t-avr
  adc4a61b44f06a4fbd2f535ba35ef825  gcc/config/bfin/bfin-modes.def
  c09f166660fde190f2d62b4a053392cf  gcc/config/bfin/bfin-opts.h
  1ae2c0b54de72bbb41c1c285a6ef5c3d  gcc/config/bfin/bfin-protos.h
! 20f5783e307207cec16fecebddc0b828  gcc/config/bfin/bfin.cc
  5aa035b3d33b22c93529bfedd7951ebe  gcc/config/bfin/bfin.h
  2771e6f32ad727576e414589b0d2c763  gcc/config/bfin/bfin.md
  77c63a7e69fe2c04d3e8378f146cc2df  gcc/config/bfin/bfin.opt
--- 3905,3917 ----
  1a5c508b77e0fdec3eba4025fad143e4  gcc/config/avr/genmultilib.awk
  3e1985cc514729064bd7289a7a1050a0  gcc/config/avr/predicates.md
  989371a0c0bef067b04f2ca6cab339f8  gcc/config/avr/ranges.h
! 63d777cbbd970646d9c14e13f44a97b8  gcc/config/avr/specs.h
  71f81820bdeb307527c4c7b577e056de  gcc/config/avr/stdfix.h
  c543f228dfe0842eef779abf3c3657a8  gcc/config/avr/t-avr
  adc4a61b44f06a4fbd2f535ba35ef825  gcc/config/bfin/bfin-modes.def
  c09f166660fde190f2d62b4a053392cf  gcc/config/bfin/bfin-opts.h
  1ae2c0b54de72bbb41c1c285a6ef5c3d  gcc/config/bfin/bfin-protos.h
! 916e617450e1a69316bb3d6ba37247f4  gcc/config/bfin/bfin.cc
  5aa035b3d33b22c93529bfedd7951ebe  gcc/config/bfin/bfin.h
  2771e6f32ad727576e414589b0d2c763  gcc/config/bfin/bfin.md
  77c63a7e69fe2c04d3e8378f146cc2df  gcc/config/bfin/bfin.opt
*************** a3364cc2343afdc4fa084e07d1f457d3  gcc/co
*** 3932,3938 ****
  a2d0f6c9bad8a3879b580272be69f1f2  gcc/config/bpf/bpf-opts.h
  75577eb7c709c0b2fc654b674a23a488  gcc/config/bpf/bpf-passes.def
  492ee8a7f8cc45aed1396e6ae7512e4f  gcc/config/bpf/bpf-protos.h
! 4bda675b20f7054117fb2665f5699949  gcc/config/bpf/bpf.cc
  67f05cbf853ae3716726b8b8088f7239  gcc/config/bpf/bpf.h
  195151d8b928ce219ee96521ccab1218  gcc/config/bpf/bpf.md
  8cc13feabe144c7b67f08306f49e22bf  gcc/config/bpf/bpf.opt
--- 3933,3939 ----
  a2d0f6c9bad8a3879b580272be69f1f2  gcc/config/bpf/bpf-opts.h
  75577eb7c709c0b2fc654b674a23a488  gcc/config/bpf/bpf-passes.def
  492ee8a7f8cc45aed1396e6ae7512e4f  gcc/config/bpf/bpf-protos.h
! a1043c5ddae5568059fbf3ffcc7c8a4d  gcc/config/bpf/bpf.cc
  67f05cbf853ae3716726b8b8088f7239  gcc/config/bpf/bpf.h
  195151d8b928ce219ee96521ccab1218  gcc/config/bpf/bpf.md
  8cc13feabe144c7b67f08306f49e22bf  gcc/config/bpf/bpf.opt
*************** a2d0f6c9bad8a3879b580272be69f1f2  gcc/co
*** 3940,3946 ****
  69c770efee22658702c18a3fa3e284c5  gcc/config/bpf/btfext-out.cc
  50fcdf526a0a6304507b91f5a086a4fd  gcc/config/bpf/btfext-out.h
  6a2b2e4c63b3a8475b313e2b2f79242b  gcc/config/bpf/constraints.md
! 03f82e469696d935ec02ad9ef77751e6  gcc/config/bpf/core-builtins.cc
  988e922d069a72cea8291afbd9c40fe5  gcc/config/bpf/core-builtins.h
  64a1d068efe8f1e72d9324e299152bb0  gcc/config/bpf/predicates.md
  3f3bbe48c9291a5679f9d0ecc5c79139  gcc/config/bpf/t-bpf
--- 3941,3947 ----
  69c770efee22658702c18a3fa3e284c5  gcc/config/bpf/btfext-out.cc
  50fcdf526a0a6304507b91f5a086a4fd  gcc/config/bpf/btfext-out.h
  6a2b2e4c63b3a8475b313e2b2f79242b  gcc/config/bpf/constraints.md
! c82fa8b4ae92eb6119216313104fe8fc  gcc/config/bpf/core-builtins.cc
  988e922d069a72cea8291afbd9c40fe5  gcc/config/bpf/core-builtins.h
  64a1d068efe8f1e72d9324e299152bb0  gcc/config/bpf/predicates.md
  3f3bbe48c9291a5679f9d0ecc5c79139  gcc/config/bpf/t-bpf
*************** f9cb09964eac8e9c5829e17b085b092b  gcc/co
*** 3954,3960 ****
  1199c8ae62794ba9dd16aad3dc4eb811  gcc/config/c6x/c6x-sched.md.in
  00d7996e0c4774ca1e932ddd6b3b3787  gcc/config/c6x/c6x-tables.opt
  b536f834b2933bc77c0d771ff150df59  gcc/config/c6x/c6x-tables.opt.urls
! 93f045182c1a82cb77fed4f54f2d1047  gcc/config/c6x/c6x.cc
  727e0630d5889090eb79e55435b05e84  gcc/config/c6x/c6x.h
  73939caaa775c00c63ee8f9effd2309a  gcc/config/c6x/c6x.md
  9998fb5dee570a7b6d98083d8c1970ef  gcc/config/c6x/c6x.opt
--- 3955,3961 ----
  1199c8ae62794ba9dd16aad3dc4eb811  gcc/config/c6x/c6x-sched.md.in
  00d7996e0c4774ca1e932ddd6b3b3787  gcc/config/c6x/c6x-tables.opt
  b536f834b2933bc77c0d771ff150df59  gcc/config/c6x/c6x-tables.opt.urls
! 457d389c2db3a5ebdb6e6ba2fb2f2219  gcc/config/c6x/c6x.cc
  727e0630d5889090eb79e55435b05e84  gcc/config/c6x/c6x.h
  73939caaa775c00c63ee8f9effd2309a  gcc/config/c6x/c6x.md
  9998fb5dee570a7b6d98083d8c1970ef  gcc/config/c6x/c6x.opt
*************** e7b75c03f8e7c4b6213ebf6c590bfc91  gcc/co
*** 3992,3999 ****
  354f6a6b79561848faf4d300ecc060ce  gcc/config/csky/csky-linux-elf.h
  d61b35952ffd257991393d5ec1c547a9  gcc/config/csky/csky-modes.def
  b4d2a2d9e35edc64179c67584c57e351  gcc/config/csky/csky-protos.h
! 2719268d06fc62dd4f06f15ec065b56c  gcc/config/csky/csky.cc
! dc0ddbd3f7c1fcd007ff1e2d17a2b0dd  gcc/config/csky/csky.h
  5c7a7a86139340ce7894b3dcbeae036b  gcc/config/csky/csky.md
  d98068deca95c6cfc459810f7d52af60  gcc/config/csky/csky.opt
  e3af289ab0834a3c74cb46071a28c3bd  gcc/config/csky/csky.opt.urls
--- 3993,4000 ----
  354f6a6b79561848faf4d300ecc060ce  gcc/config/csky/csky-linux-elf.h
  d61b35952ffd257991393d5ec1c547a9  gcc/config/csky/csky-modes.def
  b4d2a2d9e35edc64179c67584c57e351  gcc/config/csky/csky-protos.h
! be93e4d9cc80ef4f53923119506bea42  gcc/config/csky/csky.cc
! c99076f663fc5b0bf0e7623700fecb7c  gcc/config/csky/csky.h
  5c7a7a86139340ce7894b3dcbeae036b  gcc/config/csky/csky.md
  d98068deca95c6cfc459810f7d52af60  gcc/config/csky/csky.opt
  e3af289ab0834a3c74cb46071a28c3bd  gcc/config/csky/csky.opt.urls
*************** f6aab9bc45ad00d57114a8b08ef41921  gcc/co
*** 4016,4030 ****
  1e83c943d3f5c0b8a85d18826ee83731  gcc/config/csky/t-csky
  c7e412de5ff9b19c0c75fdd820594114  gcc/config/csky/t-csky-elf
  e8ba563b7eff9a7c1a380d760e1a30a9  gcc/config/csky/t-csky-linux
! 37fe320f04a151fdb79bb04b209376d4  gcc/config/darwin-c.cc
  788e553fba034bd51970934ac61aeeda  gcc/config/darwin-d.cc
! 99e4c8d1b4129343e5e17017e70a7d9c  gcc/config/darwin-driver.cc
  3ace0bc8572ce616566da404afc795e6  gcc/config/darwin-f.cc
  9c2d09708b2f6cc651ef66ec1ba67645  gcc/config/darwin-ppc-ldouble-patch.def
  573bb1297b0b70aac60bf7462cd630fe  gcc/config/darwin-protos.h
  8e7a3be360635581116c45ad4ce9f11a  gcc/config/darwin-rust.cc
  cf8b9e265eb733c7c120218863142390  gcc/config/darwin-sections.def
! 3adffe09b7b438e5a2ecac3454082933  gcc/config/darwin.cc
  bac21aa0a86c8fcc448f29c200988083  gcc/config/darwin.h
  148592c1bf513e56d281629f94b70d9b  gcc/config/darwin.opt
  fa92b7f7b8bd38472af4bfd5a8254310  gcc/config/darwin.opt.urls
--- 4017,4031 ----
  1e83c943d3f5c0b8a85d18826ee83731  gcc/config/csky/t-csky
  c7e412de5ff9b19c0c75fdd820594114  gcc/config/csky/t-csky-elf
  e8ba563b7eff9a7c1a380d760e1a30a9  gcc/config/csky/t-csky-linux
! 94debcb5a1a4860a1f8bc08af1016544  gcc/config/darwin-c.cc
  788e553fba034bd51970934ac61aeeda  gcc/config/darwin-d.cc
! a0bdff699704ff177c2faa64d3ded1b9  gcc/config/darwin-driver.cc
  3ace0bc8572ce616566da404afc795e6  gcc/config/darwin-f.cc
  9c2d09708b2f6cc651ef66ec1ba67645  gcc/config/darwin-ppc-ldouble-patch.def
  573bb1297b0b70aac60bf7462cd630fe  gcc/config/darwin-protos.h
  8e7a3be360635581116c45ad4ce9f11a  gcc/config/darwin-rust.cc
  cf8b9e265eb733c7c120218863142390  gcc/config/darwin-sections.def
! 5c46dffcbb4433019bee494363e4c4de  gcc/config/darwin.cc
  bac21aa0a86c8fcc448f29c200988083  gcc/config/darwin.h
  148592c1bf513e56d281629f94b70d9b  gcc/config/darwin.opt
  fa92b7f7b8bd38472af4bfd5a8254310  gcc/config/darwin.opt.urls
*************** c7967649d7ebce88af774f54ce092852  gcc/co
*** 4043,4049 ****
  6ad872d5e627d93723179397b19d71a2  gcc/config/epiphany/epiphany-modes.def
  3b8465d196386af4a9863de91fc46fcb  gcc/config/epiphany/epiphany-protos.h
  fa098af48e50711d95c8a54cbe04528d  gcc/config/epiphany/epiphany-sched.md
! a7980230fbc6d915313b0ff6623118bc  gcc/config/epiphany/epiphany.cc
  d2283ae4a5ff31065eb995f419c503fa  gcc/config/epiphany/epiphany.h
  96651ce858cd6472861cda93bfb007c7  gcc/config/epiphany/epiphany.md
  15a623aefccfa172b62f4caa9a418acd  gcc/config/epiphany/epiphany.opt
--- 4044,4050 ----
  6ad872d5e627d93723179397b19d71a2  gcc/config/epiphany/epiphany-modes.def
  3b8465d196386af4a9863de91fc46fcb  gcc/config/epiphany/epiphany-protos.h
  fa098af48e50711d95c8a54cbe04528d  gcc/config/epiphany/epiphany-sched.md
! b6ccf5fc720af904304d6b045f3fbccb  gcc/config/epiphany/epiphany.cc
  d2283ae4a5ff31065eb995f419c503fa  gcc/config/epiphany/epiphany.h
  96651ce858cd6472861cda93bfb007c7  gcc/config/epiphany/epiphany.md
  15a623aefccfa172b62f4caa9a418acd  gcc/config/epiphany/epiphany.opt
*************** d2283ae4a5ff31065eb995f419c503fa  gcc/co
*** 4051,4063 ****
  8a4525eb50dd1add566b041893b2119b  gcc/config/epiphany/epiphany_intrinsics.h
  4f942fee8ceb21a9ef9b9eeddfca30bd  gcc/config/epiphany/mode-switch-use.cc
  b83c4a574764b7da751ea2ceb8400f3d  gcc/config/epiphany/predicates.md
! 5717bcae1adda0c2b8c6331ad5dc68b8  gcc/config/epiphany/resolve-sw-modes.cc
  97548c0c017cb81ec521b4fab89b02a2  gcc/config/epiphany/rtems.h
  55e747176acfedffcba5992eb8ac10aa  gcc/config/epiphany/t-epiphany
  979e0b03b111d1fc60194cdb8302221e  gcc/config/flat.h
  5aac3ce37002f1373a8a99c443c85b21  gcc/config/fr30/constraints.md
  7e77db4a64bf01efee1406062e20138e  gcc/config/fr30/fr30-protos.h
! 2b0e43ccbb90a8792781dffa48f3d428  gcc/config/fr30/fr30.cc
  7486cec759647ff9ca6303eaf94a6775  gcc/config/fr30/fr30.h
  c337169fcf955fa5c4f8ceca654d6dd4  gcc/config/fr30/fr30.md
  80d69dffa2b1cec84cbba729516d34ed  gcc/config/fr30/fr30.opt
--- 4052,4064 ----
  8a4525eb50dd1add566b041893b2119b  gcc/config/epiphany/epiphany_intrinsics.h
  4f942fee8ceb21a9ef9b9eeddfca30bd  gcc/config/epiphany/mode-switch-use.cc
  b83c4a574764b7da751ea2ceb8400f3d  gcc/config/epiphany/predicates.md
! ca764c0f811c2f580172565b865899a0  gcc/config/epiphany/resolve-sw-modes.cc
  97548c0c017cb81ec521b4fab89b02a2  gcc/config/epiphany/rtems.h
  55e747176acfedffcba5992eb8ac10aa  gcc/config/epiphany/t-epiphany
  979e0b03b111d1fc60194cdb8302221e  gcc/config/flat.h
  5aac3ce37002f1373a8a99c443c85b21  gcc/config/fr30/constraints.md
  7e77db4a64bf01efee1406062e20138e  gcc/config/fr30/fr30-protos.h
! 736cb8d8295f85795a9308689edd4a65  gcc/config/fr30/fr30.cc
  7486cec759647ff9ca6303eaf94a6775  gcc/config/fr30/fr30.h
  c337169fcf955fa5c4f8ceca654d6dd4  gcc/config/fr30/fr30.md
  80d69dffa2b1cec84cbba729516d34ed  gcc/config/fr30/fr30.opt
*************** d34244fbab1499815af9daf85e3419ee  gcc/co
*** 4074,4080 ****
  5a9d58cb608ea3b6c71428376e34ff7c  gcc/config/frv/constraints.md
  519bf882eb6c169cc6c1912a1bbecb85  gcc/config/frv/frv-asm.h
  3bd2954fa2c4cdb09efe5656244facac  gcc/config/frv/frv-modes.def
! 1ed476f733b8444730f0a5d59ff99b81  gcc/config/frv/frv-opts.h
  1c19200f4e626aa5e72827a1c84e3402  gcc/config/frv/frv-protos.h
  f95f7567293415d1397c222c645d68c1  gcc/config/frv/frv.cc
  c7c9c517f429f9bb1b96422c49501881  gcc/config/frv/frv.h
--- 4075,4081 ----
  5a9d58cb608ea3b6c71428376e34ff7c  gcc/config/frv/constraints.md
  519bf882eb6c169cc6c1912a1bbecb85  gcc/config/frv/frv-asm.h
  3bd2954fa2c4cdb09efe5656244facac  gcc/config/frv/frv-modes.def
! 1e78730648847df0519fff4d416db5be  gcc/config/frv/frv-opts.h
  1c19200f4e626aa5e72827a1c84e3402  gcc/config/frv/frv-protos.h
  f95f7567293415d1397c222c645d68c1  gcc/config/frv/frv.cc
  c7c9c517f429f9bb1b96422c49501881  gcc/config/frv/frv.h
*************** dc32c764872558bfdecf4e94d25b97ed  gcc/co
*** 4087,4093 ****
  8a994e32a067c00530adb86d0da284b6  gcc/config/frv/t-linux
  2b83e5f400dfd7160bc39d5676a9ac00  gcc/config/ft32/constraints.md
  43fcd2b80a69ad73d0118a374088cc68  gcc/config/ft32/ft32-protos.h
! d037b316f8ce1e12d06c04de9524d51a  gcc/config/ft32/ft32.cc
  d216ad1d20786eba47bea80fe08f698a  gcc/config/ft32/ft32.h
  078169faa889665b62811ef539557640  gcc/config/ft32/ft32.md
  b32c10c4ba2232ab1a2ac0b35da0ca92  gcc/config/ft32/ft32.opt
--- 4088,4094 ----
  8a994e32a067c00530adb86d0da284b6  gcc/config/frv/t-linux
  2b83e5f400dfd7160bc39d5676a9ac00  gcc/config/ft32/constraints.md
  43fcd2b80a69ad73d0118a374088cc68  gcc/config/ft32/ft32-protos.h
! 7ae1bc11f9e02ee585351d5fd7f33069  gcc/config/ft32/ft32.cc
  d216ad1d20786eba47bea80fe08f698a  gcc/config/ft32/ft32.h
  078169faa889665b62811ef539557640  gcc/config/ft32/ft32.md
  b32c10c4ba2232ab1a2ac0b35da0ca92  gcc/config/ft32/ft32.opt
*************** b369b4381f97f5db727bd13c6fc2592d  gcc/co
*** 4100,4120 ****
  45e1c702124918c893e2ef5ca76ae958  gcc/config/fused-madd.opt.urls
  c863cc0237ddcf6c52a508cd6525e764  gcc/config/g.opt
  96050b4b2455697e8f797ff6286b6575  gcc/config/g.opt.urls
! 184915dc034cbca23d03a2c9f880624a  gcc/config/gcn/constraints.md
  563118cdacdef2dcad3b0d1a22455d12  gcc/config/gcn/gcn-builtins.def
  0b844b1643d1ee7c5d801e26069bb7fc  gcc/config/gcn/gcn-devices.def
  e347bc1686ac86f556a527a2705e71a3  gcc/config/gcn/gcn-hsa.h
  bbf853858263e80940ecbbe3f821113c  gcc/config/gcn/gcn-modes.def
! 2b6b8f2a6c71f2b7c182e976abf62906  gcc/config/gcn/gcn-opts.h
  767f7fa559269627c2fb7e753ce1f387  gcc/config/gcn/gcn-protos.h
  eb0b0296efa6a142ee4ee7b4cf09c756  gcc/config/gcn/gcn-run.cc
  3d14b349b4f1885e26b37bfd8ce688a3  gcc/config/gcn/gcn-tables.opt
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  613817ee55713099d08c4eb310ec3de7  gcc/config/gcn/gcn-tree.cc
! ec8639acb817ec24e7168c186bb486fd  gcc/config/gcn/gcn-valu.md
! 074ed86f4c1f6b39c3d812967ffc47b4  gcc/config/gcn/gcn.cc
! d59e327e3603f40b6dcdaa3c4eb2eeb5  gcc/config/gcn/gcn.h
! 16b8e24f013cf070b699689775e1c1d1  gcc/config/gcn/gcn.md
  8b501b2f2909b52d8b1fcd7d73dc982a  gcc/config/gcn/gcn.opt
  8316cbfe8905418aa5882486602d17ca  gcc/config/gcn/gcn.opt.urls
  90b23dde7df766a3aeef8e82433ae644  gcc/config/gcn/gen-gcn-device-macros.awk
--- 4101,4121 ----
  45e1c702124918c893e2ef5ca76ae958  gcc/config/fused-madd.opt.urls
  c863cc0237ddcf6c52a508cd6525e764  gcc/config/g.opt
  96050b4b2455697e8f797ff6286b6575  gcc/config/g.opt.urls
! f8f002a8d8315f37f55be7948cb5872a  gcc/config/gcn/constraints.md
  563118cdacdef2dcad3b0d1a22455d12  gcc/config/gcn/gcn-builtins.def
  0b844b1643d1ee7c5d801e26069bb7fc  gcc/config/gcn/gcn-devices.def
  e347bc1686ac86f556a527a2705e71a3  gcc/config/gcn/gcn-hsa.h
  bbf853858263e80940ecbbe3f821113c  gcc/config/gcn/gcn-modes.def
! dd23c67e787d5d17f89791106b6f3ff5  gcc/config/gcn/gcn-opts.h
  767f7fa559269627c2fb7e753ce1f387  gcc/config/gcn/gcn-protos.h
  eb0b0296efa6a142ee4ee7b4cf09c756  gcc/config/gcn/gcn-run.cc
  3d14b349b4f1885e26b37bfd8ce688a3  gcc/config/gcn/gcn-tables.opt
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  613817ee55713099d08c4eb310ec3de7  gcc/config/gcn/gcn-tree.cc
! 5cb7b740e8523be8f70427a45d6a7d83  gcc/config/gcn/gcn-valu.md
! 42ef3a95746ccdbdf19c0335b27b6ba5  gcc/config/gcn/gcn.cc
! 49870aae6cd3227434ea31fbf4eac626  gcc/config/gcn/gcn.h
! 94f21cc801fd72f666892531d5f883e4  gcc/config/gcn/gcn.md
  8b501b2f2909b52d8b1fcd7d73dc982a  gcc/config/gcn/gcn.opt
  8316cbfe8905418aa5882486602d17ca  gcc/config/gcn/gcn.opt.urls
  90b23dde7df766a3aeef8e82433ae644  gcc/config/gcn/gen-gcn-device-macros.awk
*************** b2ceb0c53bdc26c9ea9142b726bc3dc9  gcc/co
*** 4183,4189 ****
  49453d9e5c167a646455658e4e34dfd3  gcc/config/i386/amxtf32intrin.h
  baf0560f4d6bf8da12e6556ae1b70476  gcc/config/i386/amxtileintrin.h
  8b7d938636a40959400e79691a773e29  gcc/config/i386/amxtransposeintrin.h
! c15d7808fccc8d11369f9647d03d05dd  gcc/config/i386/athlon.md
  ed1638d9475d7c91c9e45eb7c779dcbf  gcc/config/i386/atom.md
  a4ec20f0aa32047d0e4483904cbb19de  gcc/config/i386/att.h
  4bb5c4e528838282e17d2ffe16606e3f  gcc/config/i386/avx10_2bf16intrin.h
--- 4184,4190 ----
  49453d9e5c167a646455658e4e34dfd3  gcc/config/i386/amxtf32intrin.h
  baf0560f4d6bf8da12e6556ae1b70476  gcc/config/i386/amxtileintrin.h
  8b7d938636a40959400e79691a773e29  gcc/config/i386/amxtransposeintrin.h
! ef11c556c4495659dcd70655f1559205  gcc/config/i386/athlon.md
  ed1638d9475d7c91c9e45eb7c779dcbf  gcc/config/i386/atom.md
  a4ec20f0aa32047d0e4483904cbb19de  gcc/config/i386/att.h
  4bb5c4e528838282e17d2ffe16606e3f  gcc/config/i386/avx10_2bf16intrin.h
*************** a262ea21dae1659aa3fe18e010917323  gcc/co
*** 4205,4211 ****
  4faceea392daa38facc1a691b873c23f  gcc/config/i386/avx512cdintrin.h
  a274de46d0d2d139eb0e0e16d77722f5  gcc/config/i386/avx512dqintrin.h
  2e80fe803043f0bf28209bb844708c7e  gcc/config/i386/avx512erintrin.h
! d4000e636f4b3c1fb6606a3a0bb24b8e  gcc/config/i386/avx512fintrin.h
  bd1997bfb686bc0c401903bcff1658ee  gcc/config/i386/avx512fp16intrin.h
  50ab6b8665b9336f1227a8fe230798ca  gcc/config/i386/avx512fp16vlintrin.h
  15f61b0d5ae87262c2d3b782741072d3  gcc/config/i386/avx512ifmaintrin.h
--- 4206,4212 ----
  4faceea392daa38facc1a691b873c23f  gcc/config/i386/avx512cdintrin.h
  a274de46d0d2d139eb0e0e16d77722f5  gcc/config/i386/avx512dqintrin.h
  2e80fe803043f0bf28209bb844708c7e  gcc/config/i386/avx512erintrin.h
! dde1fac0c0f5e2869e629b2e5cc41e88  gcc/config/i386/avx512fintrin.h
  bd1997bfb686bc0c401903bcff1658ee  gcc/config/i386/avx512fp16intrin.h
  50ab6b8665b9336f1227a8fe230798ca  gcc/config/i386/avx512fp16vlintrin.h
  15f61b0d5ae87262c2d3b782741072d3  gcc/config/i386/avx512ifmaintrin.h
*************** c40c01da4802f0f9431628ebe3d73752  gcc/co
*** 4239,4247 ****
  085c9e409c6b7261cadb5557835c69c4  gcc/config/i386/bmiintrin.h
  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
--- 4240,4248 ----
  085c9e409c6b7261cadb5557835c69c4  gcc/config/i386/bmiintrin.h
  5d36c928833df6662f7ca00cd7ce93ff  gcc/config/i386/bmmintrin.h
  26cd4d7bf7e6af86bf03c11fa4c6d439  gcc/config/i386/bsd.h
! df838ea382d3d2da7371deb51180cf60  gcc/config/i386/btver2.md
! 32afd4d4e4e626f8212423d9a5eacddf  gcc/config/i386/c86-4g-m7.md
! 4eed45e27bfe70305d922be37f809913  gcc/config/i386/c86-4g.md
  910cac3feca708c7269e72c17735ac87  gcc/config/i386/cet.h
  3af5d025bacebb10ac3eecc45363f3f5  gcc/config/i386/cetintrin.h
  a3f24c3ce9741743a87eb285dbaae138  gcc/config/i386/cldemoteintrin.h
*************** eea748dea33c931f2a0211ffd279bd9d  gcc/co
*** 4257,4263 ****
  49eeb60bb4a4e67c0ca57b4e85355822  gcc/config/i386/cygming.h
  2769aec1ba034a4aeb65b6a57299886f  gcc/config/i386/cygwin-stdint.h
  7a00aae17af7149d2d3b820963bc170f  gcc/config/i386/cygwin-w64.h
! 7fa24da4effe0d45e3129f720aef22ab  gcc/config/i386/cygwin.h
  caf754940377d593ccf417ef5d1a2b71  gcc/config/i386/cygwin.opt
  3b362955aab83912528fe683b571c289  gcc/config/i386/cygwin.opt.urls
  38cb64d1c7c2478dab3692e54e60f46d  gcc/config/i386/darwin.h
--- 4258,4264 ----
  49eeb60bb4a4e67c0ca57b4e85355822  gcc/config/i386/cygming.h
  2769aec1ba034a4aeb65b6a57299886f  gcc/config/i386/cygwin-stdint.h
  7a00aae17af7149d2d3b820963bc170f  gcc/config/i386/cygwin-w64.h
! 78fef08ce34bfd3a40c628948e8cd0c4  gcc/config/i386/cygwin.h
  caf754940377d593ccf417ef5d1a2b71  gcc/config/i386/cygwin.opt
  3b362955aab83912528fe683b571c289  gcc/config/i386/cygwin.opt.urls
  38cb64d1c7c2478dab3692e54e60f46d  gcc/config/i386/darwin.h
*************** b18770c338209a9276ef5d52a49bde7b  gcc/co
*** 4301,4318 ****
  0ba4d62f46027afe4bb4e8b65a9ab7c2  gcc/config/i386/i386-builtin.def
  8dbd55fdf807ba9b636b99fdf4277e4d  gcc/config/i386/i386-builtins.cc
  be7f06e3ea032dfb39fcda012c812683  gcc/config/i386/i386-builtins.h
! b4003ec8a83a5b025fb5f9d5334af62e  gcc/config/i386/i386-c.cc
  a0261d6cc006fb86b99f338bdc94ae04  gcc/config/i386/i386-d.cc
  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
  d743703707286fafa2ce425b1d062ee0  gcc/config/i386/i386-jit.h
  31871dc86b95e35e45aee6cbaaddb18d  gcc/config/i386/i386-modes.def
! c20b5abeadf9bf0c148bd3cee43dabbf  gcc/config/i386/i386-options.cc
  106bb7043496820d393f0522178e1287  gcc/config/i386/i386-options.h
  2db6ec1e569468279f31d11379fe9d8f  gcc/config/i386/i386-opts.h
  9a75f0c116528508f4f48d128eceac38  gcc/config/i386/i386-passes.def
--- 4302,4319 ----
  0ba4d62f46027afe4bb4e8b65a9ab7c2  gcc/config/i386/i386-builtin.def
  8dbd55fdf807ba9b636b99fdf4277e4d  gcc/config/i386/i386-builtins.cc
  be7f06e3ea032dfb39fcda012c812683  gcc/config/i386/i386-builtins.h
! 1b045b6ffdf1c6d3f762c9b92c593851  gcc/config/i386/i386-c.cc
  a0261d6cc006fb86b99f338bdc94ae04  gcc/config/i386/i386-d.cc
  e9c7eebd4e344796f248c93990aa5166  gcc/config/i386/i386-d.h
! fc2e9fb7c0b7126b23c7b1005dea314a  gcc/config/i386/i386-expand.cc
  386e1be7f608621b79970d4d036694f8  gcc/config/i386/i386-expand.h
! cbbdcb41e9dffee4c88904cd15c59226  gcc/config/i386/i386-features.cc
! 52056c666db06e99d6978e69f82ed68d  gcc/config/i386/i386-features.h
  dca59d9c03f5b12366f9a926169f396d  gcc/config/i386/i386-isa.def
  848d1b1aa8faaad07d31b78764004e7f  gcc/config/i386/i386-jit.cc
  d743703707286fafa2ce425b1d062ee0  gcc/config/i386/i386-jit.h
  31871dc86b95e35e45aee6cbaaddb18d  gcc/config/i386/i386-modes.def
! 411098a0ed20da8e4c730094b09bc0cf  gcc/config/i386/i386-options.cc
  106bb7043496820d393f0522178e1287  gcc/config/i386/i386-options.h
  2db6ec1e569468279f31d11379fe9d8f  gcc/config/i386/i386-opts.h
  9a75f0c116528508f4f48d128eceac38  gcc/config/i386/i386-passes.def
*************** c20b5abeadf9bf0c148bd3cee43dabbf  gcc/co
*** 4320,4331 ****
  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
  e91dbbea4abdb9b61d892b20c00503a9  gcc/config/i386/ia32intrin.h
  045de1254b57ade50e2bc57081860a9b  gcc/config/i386/iamcu.h
  0140de888b545176ff52f5d176564cc1  gcc/config/i386/immintrin.h
--- 4321,4332 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  91b8b50cba997aef17a61929b5b55a87  gcc/config/i386/i386-rust.cc
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
! 2b29265f867fbbb56d430e4a7da5bdf4  gcc/config/i386/i386.cc
! ea7ae4e75b096ab3c94baa5216e47601  gcc/config/i386/i386.h
! 417ee6adbd1378f6f83e12af1d268cc4  gcc/config/i386/i386.md
  7f5e2eb20e3b7ca8af1b3ee7416e8eaf  gcc/config/i386/i386.opt
  b9e680863ab278314c1f2990d2d04fcc  gcc/config/i386/i386.opt.urls
! ec8782b40feb0fc958bf2d6974c70f12  gcc/config/i386/i386elf.h
  e91dbbea4abdb9b61d892b20c00503a9  gcc/config/i386/ia32intrin.h
  045de1254b57ade50e2bc57081860a9b  gcc/config/i386/iamcu.h
  0140de888b545176ff52f5d176564cc1  gcc/config/i386/immintrin.h
*************** de02b2c2a1d52a8d046ebc5e2a93c700  gcc/co
*** 4366,4372 ****
  aaad1a6a46fe0fae4f4f080ec25979a2  gcc/config/i386/pmmintrin.h
  e3a5e8aba8408fe534c82a5f831ac343  gcc/config/i386/popcntintrin.h
  0d9fe20f90097f2260c0d3dd226004b1  gcc/config/i386/ppro.md
! 6a771115ad999d3a84f994bce8926008  gcc/config/i386/predicates.md
  49c1e916a421c63ab688a51702818f36  gcc/config/i386/prfchiintrin.h
  2c409488751db6ad5078dd4951efbd09  gcc/config/i386/prfchwintrin.h
  ae0d15567f15a04257774556b0d4dab6  gcc/config/i386/raointintrin.h
--- 4367,4373 ----
  aaad1a6a46fe0fae4f4f080ec25979a2  gcc/config/i386/pmmintrin.h
  e3a5e8aba8408fe534c82a5f831ac343  gcc/config/i386/popcntintrin.h
  0d9fe20f90097f2260c0d3dd226004b1  gcc/config/i386/ppro.md
! 581fabb9dde6289d06cc8cf5b9163fcc  gcc/config/i386/predicates.md
  49c1e916a421c63ab688a51702818f36  gcc/config/i386/prfchiintrin.h
  2c409488751db6ad5078dd4951efbd09  gcc/config/i386/prfchwintrin.h
  ae0d15567f15a04257774556b0d4dab6  gcc/config/i386/raointintrin.h
*************** db114ac74c87743a142214fddaad2687  gcc/co
*** 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
--- 4385,4391 ----
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  5b7a5d6bd6f2cbb1ca44a113b598ee56  gcc/config/i386/sol2.h
! 7e2011ef99b034b336fda9b3279a76d5  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
  a626b4e6cd3e15f4e9d5c769b6391243  gcc/config/i386/subst.md
*************** b4cde95b709fc93c90bf4d6b3edc7fd0  gcc/co
*** 4432,4443 ****
  c2cfb83eb28cbbc487a62ee85650286e  gcc/config/i386/x-mingw32
  5d8e585db0fd38674f683b0e8aafb897  gcc/config/i386/x-mingw32-utf8
  c98679993951718aa4177acc76b998b3  gcc/config/i386/x86-64.h
! f6bbb5ec11c335e5bf727fa42672a721  gcc/config/i386/x86-tune-costs.h
! c22e895e5b7e6b98c7223b26982a5d20  gcc/config/i386/x86-tune-sched-atom.cc
! 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
--- 4433,4444 ----
  c2cfb83eb28cbbc487a62ee85650286e  gcc/config/i386/x-mingw32
  5d8e585db0fd38674f683b0e8aafb897  gcc/config/i386/x-mingw32-utf8
  c98679993951718aa4177acc76b998b3  gcc/config/i386/x86-64.h
! 8ce818b2e733d163f5c260b2aa339949  gcc/config/i386/x86-tune-costs.h
! 1a895f070eb6bb8cabffb78a3daa7738  gcc/config/i386/x86-tune-sched-atom.cc
! 33b66e2688b9fbf775f4dc603512548f  gcc/config/i386/x86-tune-sched-bd.cc
  864e537089cc92c5002cefd76ede977a  gcc/config/i386/x86-tune-sched-core.cc
! 965a22f0bdb084c3f0d48fb944930b22  gcc/config/i386/x86-tune-sched.cc
! 6487e794f0f8b2d52de2f12996fad7ef  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
*************** c6c2ccc0507144a0cb6f97846c050633  gcc/co
*** 4451,4458 ****
  b33fbb9cf814beaac0cdc5288c020e7b  gcc/config/i386/xsavesintrin.h
  98b4f3e5a33ad9acb0b8a03327987474  gcc/config/i386/xtestintrin.h
  953f52838d1a952b9466f1422c4a39df  gcc/config/i386/yongfeng.md
! 25029ad73f1ad95712faeb120ae25185  gcc/config/i386/zn4zn5.md
! 0769301f3ae9e91e0c0b1142e12c3f56  gcc/config/i386/znver.md
  778cd7d0cf9155dd1740743321e943a8  gcc/config/ia64/constraints.md
  5b331f2ebba6bd39013c01f45bf32ea3  gcc/config/ia64/div.md
  48a3beefeac065215e649dc6adc30cc2  gcc/config/ia64/elf.h
--- 4452,4459 ----
  b33fbb9cf814beaac0cdc5288c020e7b  gcc/config/i386/xsavesintrin.h
  98b4f3e5a33ad9acb0b8a03327987474  gcc/config/i386/xtestintrin.h
  953f52838d1a952b9466f1422c4a39df  gcc/config/i386/yongfeng.md
! 5bbfdfdb0f8f3ba0c138867a098b948c  gcc/config/i386/zn4zn5.md
! 3c09fad260a0d0275d8fc42486097a04  gcc/config/i386/znver.md
  778cd7d0cf9155dd1740743321e943a8  gcc/config/ia64/constraints.md
  5b331f2ebba6bd39013c01f45bf32ea3  gcc/config/ia64/div.md
  48a3beefeac065215e649dc6adc30cc2  gcc/config/ia64/elf.h
*************** b33fbb9cf814beaac0cdc5288c020e7b  gcc/co
*** 4463,4469 ****
  5d32cfac5c80aa7f76a0fd9a9ee92529  gcc/config/ia64/ia64-modes.def
  25e74d0fdecab081ca69e7ef4c8582e0  gcc/config/ia64/ia64-opts.h
  16c47e5699623e0ad434a2a3d9d3bf17  gcc/config/ia64/ia64-protos.h
! 60c3866fa096879a7f8c4575ad21dda2  gcc/config/ia64/ia64.cc
  5e2cb15b567a9075dec9b3b7f9402ae0  gcc/config/ia64/ia64.h
  78b47ae3a723de41b99d844749c839de  gcc/config/ia64/ia64.md
  6bc55e855e97af0f6381291c46356497  gcc/config/ia64/ia64.opt
--- 4464,4470 ----
  5d32cfac5c80aa7f76a0fd9a9ee92529  gcc/config/ia64/ia64-modes.def
  25e74d0fdecab081ca69e7ef4c8582e0  gcc/config/ia64/ia64-opts.h
  16c47e5699623e0ad434a2a3d9d3bf17  gcc/config/ia64/ia64-protos.h
! de66ebf3f8a580cf90b4227ed97ad950  gcc/config/ia64/ia64.cc
  5e2cb15b567a9075dec9b3b7f9402ae0  gcc/config/ia64/ia64.h
  78b47ae3a723de41b99d844749c839de  gcc/config/ia64/ia64.md
  6bc55e855e97af0f6381291c46356497  gcc/config/ia64/ia64.opt
*************** b33fbb9cf814beaac0cdc5288c020e7b  gcc/co
*** 4471,4480 ****
  dcc77d7023d20b64688bf213c2d327b5  gcc/config/ia64/ia64intrin.h
  4b86fa74a7636ffdb9787a8643220eec  gcc/config/ia64/ilp32.opt
  c123eb5a542afae24ac8defb18f961f8  gcc/config/ia64/ilp32.opt.urls
! 0753f162bc03e7ce15f2ce324ea5654e  gcc/config/ia64/itanium2.md
  bdea6d6f513c015f961dfae656959919  gcc/config/ia64/linux.h
  6d996a7156d559feb32f54d20e9621be  gcc/config/ia64/predicates.md
! e72ab32a0dca2c0e06bb6dac521ff428  gcc/config/ia64/sync.md
  04bb5fa8ea1f844ae62a775d389dd65a  gcc/config/ia64/sysv4.h
  d4688047da16af7de59257cb0bb813fa  gcc/config/ia64/t-hpux
  c1a6efd9f47d6a97dfbe22655f9936d0  gcc/config/ia64/t-ia64
--- 4472,4481 ----
  dcc77d7023d20b64688bf213c2d327b5  gcc/config/ia64/ia64intrin.h
  4b86fa74a7636ffdb9787a8643220eec  gcc/config/ia64/ilp32.opt
  c123eb5a542afae24ac8defb18f961f8  gcc/config/ia64/ilp32.opt.urls
! 623179b052ada0c6b3a2d45aaa526e39  gcc/config/ia64/itanium2.md
  bdea6d6f513c015f961dfae656959919  gcc/config/ia64/linux.h
  6d996a7156d559feb32f54d20e9621be  gcc/config/ia64/predicates.md
! 6300db48da0da53d57f68cf7bfe81b97  gcc/config/ia64/sync.md
  04bb5fa8ea1f844ae62a775d389dd65a  gcc/config/ia64/sysv4.h
  d4688047da16af7de59257cb0bb813fa  gcc/config/ia64/t-hpux
  c1a6efd9f47d6a97dfbe22655f9936d0  gcc/config/ia64/t-ia64
*************** f175c5ef1f791f0dad5e5fc5c260a276  gcc/co
*** 4510,4516 ****
  0e0d7a8230d05f9b8b796bdcfd935d94  gcc/config/linux.opt.urls
  45201b369597c8b9d7611e0d10b3bfce  gcc/config/lm32/constraints.md
  4fa055dfb723db4efd52481aceec3f57  gcc/config/lm32/lm32-protos.h
! 98fa8acf46c065de78565ebf06f1382e  gcc/config/lm32/lm32.cc
  b1836e0202829fb0e97e14094370e1b9  gcc/config/lm32/lm32.h
  cecb6934c760d54e9ad37c9790a48520  gcc/config/lm32/lm32.md
  9f29a81484bcc13c6cb5893b43a2793e  gcc/config/lm32/lm32.opt
--- 4511,4517 ----
  0e0d7a8230d05f9b8b796bdcfd935d94  gcc/config/linux.opt.urls
  45201b369597c8b9d7611e0d10b3bfce  gcc/config/lm32/constraints.md
  4fa055dfb723db4efd52481aceec3f57  gcc/config/lm32/lm32-protos.h
! 3e4064e7bcc7bc4739705fb29198d5c8  gcc/config/lm32/lm32.cc
  b1836e0202829fb0e97e14094370e1b9  gcc/config/lm32/lm32.h
  cecb6934c760d54e9ad37c9790a48520  gcc/config/lm32/lm32.md
  9f29a81484bcc13c6cb5893b43a2793e  gcc/config/lm32/lm32.opt
*************** d4249b59ef5a24b1a2711287b20e508c  gcc/co
*** 4531,4541 ****
  df8b4f4b8dcb89e729d1dd4c0a77e11c  gcc/config/loongarch/gnu-user.h
  ce049501c9736e269332c4a1b19c32ea  gcc/config/loongarch/la464.md
  8ba1f024d7e6687edc35f6a7892f7829  gcc/config/loongarch/larchintrin.h
! ef3570776965c774ceed93c45e031958  gcc/config/loongarch/lasx.md
  27fce87abf98871f7537919ba724e7ee  gcc/config/loongarch/lasxintrin.h
  787cab00aedf1fc937ded71896742e8d  gcc/config/loongarch/linux.h
! 5692851b73184b2e9a81fe327493fd5c  gcc/config/loongarch/loongarch-builtins.cc
! 5b8cdbae35775ac7ae20ea1b0d14b9e5  gcc/config/loongarch/loongarch-c.cc
  81d96d87b071262e2275de4768972236  gcc/config/loongarch/loongarch-cpu.cc
  0058282b8d62d5ee0444b96b7dd58010  gcc/config/loongarch/loongarch-cpu.h
  c9267d45e71ca147ebecfdff12e8e5f1  gcc/config/loongarch/loongarch-d.cc
--- 4532,4542 ----
  df8b4f4b8dcb89e729d1dd4c0a77e11c  gcc/config/loongarch/gnu-user.h
  ce049501c9736e269332c4a1b19c32ea  gcc/config/loongarch/la464.md
  8ba1f024d7e6687edc35f6a7892f7829  gcc/config/loongarch/larchintrin.h
! 22e76bc4d3e5efeb8fe8f616ebfcbdad  gcc/config/loongarch/lasx.md
  27fce87abf98871f7537919ba724e7ee  gcc/config/loongarch/lasxintrin.h
  787cab00aedf1fc937ded71896742e8d  gcc/config/loongarch/linux.h
! aedc87cfa859b4e13935421eeaf06ffd  gcc/config/loongarch/loongarch-builtins.cc
! 308da70df33003a1020b9ec74a6ebf9f  gcc/config/loongarch/loongarch-c.cc
  81d96d87b071262e2275de4768972236  gcc/config/loongarch/loongarch-cpu.cc
  0058282b8d62d5ee0444b96b7dd58010  gcc/config/loongarch/loongarch-cpu.h
  c9267d45e71ca147ebecfdff12e8e5f1  gcc/config/loongarch/loongarch-d.cc
*************** ca077531f284e5bbf280885aab4378bd  gcc/co
*** 4550,4572 ****
  dc2f2182b815a3d30579f3cd907f60ea  gcc/config/loongarch/loongarch-evolution.h
  21f748b92e5b2e0d11cc3ee27fba55b4  gcc/config/loongarch/loongarch-ftypes.def
  c7eeb48ab4223ecfdb09fa5e4ce61d71  gcc/config/loongarch/loongarch-modes.def
! 4f6f228dac0484d6ba3fbad6ddb6d8af  gcc/config/loongarch/loongarch-opts.cc
! 5e852be9fbcd6b98822c986918099da1  gcc/config/loongarch/loongarch-opts.h
  49b2aa817558104dbb573a33ececbecb  gcc/config/loongarch/loongarch-protos.h
  dadec2097ca9c4947a49a5766ac8ee89  gcc/config/loongarch/loongarch-str.h
  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
! 561a66379ab213d1901626005734b467  gcc/config/loongarch/lsx.md
  c7466e5dbde45f48269999a0ee23e193  gcc/config/loongarch/lsxintrin.h
  fe51977e0ac69b0829287b1c8d3f5060  gcc/config/loongarch/musl.h
! 99f3bb1790c2cf94d293e7b4064693e8  gcc/config/loongarch/predicates.md
! f91faa5449d6dd76f5957fa796f00464  gcc/config/loongarch/simd.md
! 2e69737d13e1bfc019d62d20daa42769  gcc/config/loongarch/sync.md
  70d4362e3209c6d2b4d8ad4c79d65a4c  gcc/config/loongarch/t-linux
  19a269e2bff5187b276f7e58f79c667c  gcc/config/loongarch/t-loongarch
  2077777e56c76bfdc49229a85745bfe6  gcc/config/loongarch/t-multilib
--- 4551,4573 ----
  dc2f2182b815a3d30579f3cd907f60ea  gcc/config/loongarch/loongarch-evolution.h
  21f748b92e5b2e0d11cc3ee27fba55b4  gcc/config/loongarch/loongarch-ftypes.def
  c7eeb48ab4223ecfdb09fa5e4ce61d71  gcc/config/loongarch/loongarch-modes.def
! 63c0ef4617bca8cdc45a7fd97198879b  gcc/config/loongarch/loongarch-opts.cc
! 372427626ab14870e272dfb22e649a3a  gcc/config/loongarch/loongarch-opts.h
  49b2aa817558104dbb573a33ececbecb  gcc/config/loongarch/loongarch-protos.h
  dadec2097ca9c4947a49a5766ac8ee89  gcc/config/loongarch/loongarch-str.h
  fc623524d75c7561f85f81615ecad0ac  gcc/config/loongarch/loongarch-target-attr.cc
  3cfb174db8bc99a9361e597a3e9bd35e  gcc/config/loongarch/loongarch-tune.h
! 202fdcf99b6e812c6a33e675a21a740b  gcc/config/loongarch/loongarch.cc
! ad66539c6bf3f1a1fe18304e126ac7fc  gcc/config/loongarch/loongarch.h
! 1bee87f91939a40f1c758e1f7624494a  gcc/config/loongarch/loongarch.md
  62f9bea81246c3dac622d969dabefc1b  gcc/config/loongarch/loongarch.opt
  387011bb9dde5e25493f3602b2fd17bb  gcc/config/loongarch/loongarch.opt.urls
! 0458c59163aaa92cd0aa1ca123aa25f6  gcc/config/loongarch/lsx.md
  c7466e5dbde45f48269999a0ee23e193  gcc/config/loongarch/lsxintrin.h
  fe51977e0ac69b0829287b1c8d3f5060  gcc/config/loongarch/musl.h
! e78139f4ba3ac368d8ff57fdf2b8f899  gcc/config/loongarch/predicates.md
! 3ad60f825d198d593a012bc81af17ad7  gcc/config/loongarch/simd.md
! 8014a0ac6f61e6fb13b3189724a36103  gcc/config/loongarch/sync.md
  70d4362e3209c6d2b4d8ad4c79d65a4c  gcc/config/loongarch/t-linux
  19a269e2bff5187b276f7e58f79c667c  gcc/config/loongarch/t-loongarch
  2077777e56c76bfdc49229a85745bfe6  gcc/config/loongarch/t-multilib
*************** b5f6d072472d476f1bdbfe7f0166f36f  gcc/co
*** 4584,4590 ****
  829c32842d5111248d1723464a35cc7d  gcc/config/m32r/m32r.opt.urls
  46df227312db9dd1271c6433721aba20  gcc/config/m32r/predicates.md
  659a022a47743b7d3bb51e972574359c  gcc/config/m32r/t-m32r
! 56b2368f8f53a019f1bcff7226a9db3d  gcc/config/m68k/cf.md
  dda6001979605bd841a1c3345651a89a  gcc/config/m68k/constraints.md
  8698a65b999ca8fba654bb3e608edd3b  gcc/config/m68k/genopt.sh
  3c9cb51b09d491f28cdb7d5fbf7bb8aa  gcc/config/m68k/ieee.opt
--- 4585,4591 ----
  829c32842d5111248d1723464a35cc7d  gcc/config/m32r/m32r.opt.urls
  46df227312db9dd1271c6433721aba20  gcc/config/m32r/predicates.md
  659a022a47743b7d3bb51e972574359c  gcc/config/m32r/t-m32r
! 7914284fe9feaa3705bf8d7eb85e85cd  gcc/config/m68k/cf.md
  dda6001979605bd841a1c3345651a89a  gcc/config/m68k/constraints.md
  8698a65b999ca8fba654bb3e608edd3b  gcc/config/m68k/genopt.sh
  3c9cb51b09d491f28cdb7d5fbf7bb8aa  gcc/config/m68k/ieee.opt
*************** ab248989539b9f02a45e3469f383916f  gcc/co
*** 4600,4614 ****
  4cef30645aab004ee80017065fb0c525  gcc/config/m68k/m68k-protos.h
  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
! 355d6d9b78db475f43ae6991e19e9e08  gcc/config/m68k/m68kelf.h
  04e22019b1f9e2328fceb8f223dbd026  gcc/config/m68k/m68kemb.h
  c0472199959f16fcb58702880954da6e  gcc/config/m68k/math-68881.h
! 29e6436ecf6d381beae766d6cb50043d  gcc/config/m68k/netbsd-elf.h
  fdf4bd18cc88eb570b8ab5286a398078  gcc/config/m68k/openbsd.h
  2df5ef880765784a81a226fdd2287adc  gcc/config/m68k/predicates.md
  1b825cbc1d0c3790a971922491591732  gcc/config/m68k/print-sysroot-suffix.sh
--- 4601,4615 ----
  4cef30645aab004ee80017065fb0c525  gcc/config/m68k/m68k-protos.h
  9972407ba6ffc9db617e82974a48919a  gcc/config/m68k/m68k-tables.opt
  76abf9d767893fa61fddacca5cea079e  gcc/config/m68k/m68k-tables.opt.urls
! ab4724c177de472eb13fb1b157a5dadf  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
! 80346c30ce18e48e0a57b061db01dbfb  gcc/config/m68k/m68kelf.h
  04e22019b1f9e2328fceb8f223dbd026  gcc/config/m68k/m68kemb.h
  c0472199959f16fcb58702880954da6e  gcc/config/m68k/math-68881.h
! 4289f354b253b7d37bd6851c78531b55  gcc/config/m68k/netbsd-elf.h
  fdf4bd18cc88eb570b8ab5286a398078  gcc/config/m68k/openbsd.h
  2df5ef880765784a81a226fdd2287adc  gcc/config/m68k/predicates.md
  1b825cbc1d0c3790a971922491591732  gcc/config/m68k/print-sysroot-suffix.sh
*************** fec218d776c586fd2a610d97204ed1ff  gcc/co
*** 4630,4636 ****
  c12c7d98a3a59bb74c3e14bb509088a9  gcc/config/mcore/mcore-elf.h
  6dd1693f2a95ad6fa7dd00b94d911407  gcc/config/mcore/mcore-protos.h
  509102e4f447ea0a9dc98ca7863936d4  gcc/config/mcore/mcore.cc
! b1321a2414541bbf8755ab640a1d35f9  gcc/config/mcore/mcore.h
  6d55781738ef97946755b242cf1745a1  gcc/config/mcore/mcore.md
  f16cc70f996e887659e9bbaeae81097a  gcc/config/mcore/mcore.opt
  518998d9bf7e0bd7040a43879176fe2a  gcc/config/mcore/mcore.opt.urls
--- 4631,4637 ----
  c12c7d98a3a59bb74c3e14bb509088a9  gcc/config/mcore/mcore-elf.h
  6dd1693f2a95ad6fa7dd00b94d911407  gcc/config/mcore/mcore-protos.h
  509102e4f447ea0a9dc98ca7863936d4  gcc/config/mcore/mcore.cc
! 67718c97767975ff0cd5966eff158cb1  gcc/config/mcore/mcore.h
  6d55781738ef97946755b242cf1745a1  gcc/config/mcore/mcore.md
  f16cc70f996e887659e9bbaeae81097a  gcc/config/mcore/mcore.opt
  518998d9bf7e0bd7040a43879176fe2a  gcc/config/mcore/mcore.opt.urls
*************** d074a00b74c8d59607883f2f8c168c98  gcc/co
*** 4641,4648 ****
  1f6cfaa800ea073280f4badd5e23bc95  gcc/config/microblaze/linux.h
  2c6829b33f8e390156576657ae870f00  gcc/config/microblaze/microblaze-c.cc
  d9acafef244dad41d6608fcd8d0fc913  gcc/config/microblaze/microblaze-protos.h
! f7bed44c80aaefbbda5efbce9514615a  gcc/config/microblaze/microblaze.cc
! 416e7e40813d736926bb6a4f4b386070  gcc/config/microblaze/microblaze.h
  c1c22de89195665e34ef0c62df06069a  gcc/config/microblaze/microblaze.md
  1bfdc8ff504b1a00dc9e86930fd88313  gcc/config/microblaze/microblaze.opt
  66fa9daea12c701fea0c159404d4eeb4  gcc/config/microblaze/microblaze.opt.urls
--- 4642,4649 ----
  1f6cfaa800ea073280f4badd5e23bc95  gcc/config/microblaze/linux.h
  2c6829b33f8e390156576657ae870f00  gcc/config/microblaze/microblaze-c.cc
  d9acafef244dad41d6608fcd8d0fc913  gcc/config/microblaze/microblaze-protos.h
! 0964b043cf54302d3309f7f2b54908a6  gcc/config/microblaze/microblaze.cc
! 9a8390624b3900898a6f946ef1b1ec20  gcc/config/microblaze/microblaze.h
  c1c22de89195665e34ef0c62df06069a  gcc/config/microblaze/microblaze.md
  1bfdc8ff504b1a00dc9e86930fd88313  gcc/config/microblaze/microblaze.opt
  66fa9daea12c701fea0c159404d4eeb4  gcc/config/microblaze/microblaze.opt.urls
*************** dbcb030a5a374a20a894ab55346eb2a0  gcc/co
*** 4662,4668 ****
  1d5f1a57665738292d79250735b11e47  gcc/config/mingw/mingw32.h
  1e94c126fd81c1bcb376905cbf579a7f  gcc/config/mingw/msformat-c.cc
  067ebc3756fe59d47299695d354c9b8f  gcc/config/mingw/t-cygming
! 87266e8b59c36b9e529ef180f12d9bbb  gcc/config/mingw/winnt-cxx.cc
  b85e0e83df79d2f49435f8e4a8992866  gcc/config/mingw/winnt-d.cc
  3c3dc8be46b778f5ae37e34d464e3671  gcc/config/mingw/winnt-dll.cc
  8d146495102e58eb8547fbe9ddbe3244  gcc/config/mingw/winnt-dll.h
--- 4663,4669 ----
  1d5f1a57665738292d79250735b11e47  gcc/config/mingw/mingw32.h
  1e94c126fd81c1bcb376905cbf579a7f  gcc/config/mingw/msformat-c.cc
  067ebc3756fe59d47299695d354c9b8f  gcc/config/mingw/t-cygming
! d99d50d1fde35986883087392a40826d  gcc/config/mingw/winnt-cxx.cc
  b85e0e83df79d2f49435f8e4a8992866  gcc/config/mingw/winnt-d.cc
  3c3dc8be46b778f5ae37e34d464e3671  gcc/config/mingw/winnt-dll.cc
  8d146495102e58eb8547fbe9ddbe3244  gcc/config/mingw/winnt-dll.h
*************** ee9854cb99f677ea476dd0e847ee2d27  gcc/co
*** 4688,4694 ****
  4082e6ab0f30c9c561b0a48d592e88e0  gcc/config/mips/74k.md
  7547345a34bc155cacc7f008a6273b2f  gcc/config/mips/9000.md
  1ddd09364cb1ea78bc8e086233c8a3c3  gcc/config/mips/constraints.md
! 2906eb97992c04ec11061982f1bdffa5  gcc/config/mips/driver-native.cc
  f9e0caacf12c0f68dde93cdf772359ab  gcc/config/mips/elf.h
  31d0efc9f2dbc8f3501e284eec5e2fc5  gcc/config/mips/elfoabi.h
  0587f6ca23a17c28994873ac359665a9  gcc/config/mips/elforion.h
--- 4689,4695 ----
  4082e6ab0f30c9c561b0a48d592e88e0  gcc/config/mips/74k.md
  7547345a34bc155cacc7f008a6273b2f  gcc/config/mips/9000.md
  1ddd09364cb1ea78bc8e086233c8a3c3  gcc/config/mips/constraints.md
! 91cf01ab7a5132ea37cdbf67fd5538b1  gcc/config/mips/driver-native.cc
  f9e0caacf12c0f68dde93cdf772359ab  gcc/config/mips/elf.h
  31d0efc9f2dbc8f3501e284eec5e2fc5  gcc/config/mips/elfoabi.h
  0587f6ca23a17c28994873ac359665a9  gcc/config/mips/elforion.h
*************** b86a9dccc9ddc8fe838d8fd98ffbd10e  gcc/co
*** 4708,4714 ****
  4c1cef47daf0d4b2d5b42a0721201657  gcc/config/mips/loongson2ef.md
  17aea6e28a91fc3894c89875bb92e491  gcc/config/mips/m5100.md
  0456bb03068cdbc9648f4d39bef5d989  gcc/config/mips/micromips.md
! 390f33f11986a75808f8d841cb269f6f  gcc/config/mips/mips-cpus.def
  0d2d7cc7c062e7b3c7886269f4bfd9ed  gcc/config/mips/mips-d.cc
  83e791c9701b02132e83fe8fa0c89cac  gcc/config/mips/mips-d.h
  2e95f39be7b43560660e72f64affb8a2  gcc/config/mips/mips-dsp.md
--- 4709,4715 ----
  4c1cef47daf0d4b2d5b42a0721201657  gcc/config/mips/loongson2ef.md
  17aea6e28a91fc3894c89875bb92e491  gcc/config/mips/m5100.md
  0456bb03068cdbc9648f4d39bef5d989  gcc/config/mips/micromips.md
! dd6a89448996966033a69c5fc401d60a  gcc/config/mips/mips-cpus.def
  0d2d7cc7c062e7b3c7886269f4bfd9ed  gcc/config/mips/mips-d.cc
  83e791c9701b02132e83fe8fa0c89cac  gcc/config/mips/mips-d.h
  2e95f39be7b43560660e72f64affb8a2  gcc/config/mips/mips-dsp.md
*************** a0561d5189d936a2b3f76e586c0a2aa1  gcc/co
*** 4722,4730 ****
  9cb506f69bfb4828b4dc81c2e14b3238  gcc/config/mips/mips-ps-3d.md
  345d90586064a6b98108ed27f48d4599  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
! d721b62b45e3d41cf231605ad9646ea0  gcc/config/mips/mips.cc
! 63ca817ddd1ee9d064118822bbb5953f  gcc/config/mips/mips.h
! 62c91047998070c0f017a68e2a78fbe7  gcc/config/mips/mips.md
  09db4f2e8c03333595305c1b1c1c0fc7  gcc/config/mips/mips.opt
  e27efa10159c17e2479da7d6f900b631  gcc/config/mips/mips.opt.urls
  79c849472a0f91bdf81cbd76d4f9d348  gcc/config/mips/msa.h
--- 4723,4731 ----
  9cb506f69bfb4828b4dc81c2e14b3238  gcc/config/mips/mips-ps-3d.md
  345d90586064a6b98108ed27f48d4599  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
! 07dd8fec1f4227f9ddab8943df36d424  gcc/config/mips/mips.cc
! 5341095aad822bd0c82d793e8fcd163a  gcc/config/mips/mips.h
! 49c4faf7412dfa6a56c131062bfb11b4  gcc/config/mips/mips.md
  09db4f2e8c03333595305c1b1c1c0fc7  gcc/config/mips/mips.opt
  e27efa10159c17e2479da7d6f900b631  gcc/config/mips/mips.opt.urls
  79c849472a0f91bdf81cbd76d4f9d348  gcc/config/mips/msa.h
*************** e6f31576821b9aa774bbc1c700e7fc0b  gcc/co
*** 4810,4868 ****
  2c859f51cf8b58bb2d452d26fb586acf  gcc/config/msp430/msp430-devices.cc
  62aec601579ba5f8bca42fd44a828529  gcc/config/msp430/msp430-devices.h
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
! 8d1a8981d2063519f82f0f9b0800346f  gcc/config/msp430/msp430-opts.h
  8ccbcf1f4b240d705396f26fdf612391  gcc/config/msp430/msp430-protos.h
! 86d411c20e1029d2e87ed132a9f04bbc  gcc/config/msp430/msp430.cc
  fcaead57275e6b5ed6c0371ae6636d82  gcc/config/msp430/msp430.h
! 07200b765e3e64c4fc593ff89d120350  gcc/config/msp430/msp430.md
  a03bbfba7e7041abe6a04b49d7e51b1a  gcc/config/msp430/msp430.opt
  ea485f0619b848fffad83f5eecd28966  gcc/config/msp430/msp430.opt.urls
  9f534dca9b41e0ff17624a4758318e36  gcc/config/msp430/predicates.md
  9edfa0b71859bf8b782a1502ebc42dd8  gcc/config/msp430/t-msp430
! 7aa00f7ad5ed515a6973ecda14b0e497  gcc/config/nds32/constants.md
! a80afee988894a7f8b8bede3e8d2a771  gcc/config/nds32/constraints.md
  bbda80ac7d7d0579bf089cdbca049478  gcc/config/nds32/elf.h
  220f02f84a3f3b81d15cdf8f399f7d27  gcc/config/nds32/iterators.md
  504e8657f36309d24fbd15232432d7bc  gcc/config/nds32/linux.h
! 5aecf7cc152ab836dd2cb5512b2ddc4c  gcc/config/nds32/nds32-cost.cc
  8533382fc56f75d5006814fd83179514  gcc/config/nds32/nds32-doubleword.md
! e1166a67e37f3d653bcfc2849af3f310  gcc/config/nds32/nds32-dspext.md
! 82e42a18fbfca51ab05f2dda45a7357a  gcc/config/nds32/nds32-e8.md
  c316334a86026beb55e5c25b4b855f95  gcc/config/nds32/nds32-elf.opt
  a0b6c727a1380cd674ab75b88947c326  gcc/config/nds32/nds32-elf.opt.urls
! c82df5d6dcd19343b90de828abc80e07  gcc/config/nds32/nds32-fp-as-gp.cc
  fd5e775e547fea5ea12fbc27d5567547  gcc/config/nds32/nds32-fpu.md
  de9ad6a601d251d6df704644d1a8c274  gcc/config/nds32/nds32-graywolf.md
! 0012e8682a15890e5f1275b8b35b177a  gcc/config/nds32/nds32-intrinsic.cc
  9e779bf2be6e80cd356e58a8cec6f7b6  gcc/config/nds32/nds32-intrinsic.md
! e23ea52c25733e27622779520c159dad  gcc/config/nds32/nds32-isr.cc
  d94163fd5e4660359b8b12a0d90ed1bd  gcc/config/nds32/nds32-linux.opt
  a93f916906721665c3595705369b9c96  gcc/config/nds32/nds32-linux.opt.urls
! 48886df15e78e684c07543682a33aff4  gcc/config/nds32/nds32-md-auxiliary.cc
! a186fa3c2db2487a1700311b54453bc1  gcc/config/nds32/nds32-memory-manipulation.cc
  7be569ebcf3f0f579bba070cad647e68  gcc/config/nds32/nds32-modes.def
! 50bafeca8bab93d2872670515e9ba918  gcc/config/nds32/nds32-multiple.md
  63e8b3cff96a9504c5ee74181842ec6b  gcc/config/nds32/nds32-n10.md
  2c7a0707fe945aa5ced84c380f9a3d0b  gcc/config/nds32/nds32-n13.md
! 1e36661a740484a17d89b36b23074434  gcc/config/nds32/nds32-n7.md
! 4ae2996bf593ddabaf361f63c8a860cc  gcc/config/nds32/nds32-n8.md
! 0fcc85caf1a7d553c4d6434f945a23f1  gcc/config/nds32/nds32-n9-2r1w.md
  fbd3bdb3ea4aba2bbf1fa809f499946e  gcc/config/nds32/nds32-n9-3r2w.md
  f40c0af3d2d9b97a7d7e8a332410d873  gcc/config/nds32/nds32-opts.h
  97b741f8af8bd8b4269f86395c335e59  gcc/config/nds32/nds32-peephole2.md
! afb196a97ad5964adf38a2bd30d3c62e  gcc/config/nds32/nds32-pipelines-auxiliary.cc
! cbe017bc8d15f8a4e881c4c566c1ca23  gcc/config/nds32/nds32-predicates.cc
! 832a237de81db056e289e6817726b51d  gcc/config/nds32/nds32-protos.h
! a8e6872a63592d6d7b17cb1654d424c9  gcc/config/nds32/nds32-relax-opt.cc
! 23ab313d3532284e7245cb2a140d62d8  gcc/config/nds32/nds32-utils.cc
! 120193c34d751f4cf8ab9113848c4fad  gcc/config/nds32/nds32.cc
! 63a74b74ef6ce025798a026c2ef864ba  gcc/config/nds32/nds32.h
! 5683ba48791fba79d913c4f0742a9cc6  gcc/config/nds32/nds32.md
  70126739fc43ac4b6e9ff569899872fb  gcc/config/nds32/nds32.opt
  f83dc6414614bf080e92c0fd40154986  gcc/config/nds32/nds32.opt.urls
  c09acceb380f58ddb795ee3e973945d7  gcc/config/nds32/nds32_init.inc
! 4e39d1b69768be76a7437a80a2039198  gcc/config/nds32/nds32_intrinsic.h
! 6241ca722fb83eeb99584fbc59ab4fc6  gcc/config/nds32/nds32_isr.h
  669bec24c462cfc5fdbdd3435d17f182  gcc/config/nds32/pipelines.md
  42fac513379e0f1918460f19a6841399  gcc/config/nds32/predicates.md
  0b6770f2a56b432d36abb6db7792caf5  gcc/config/nds32/t-elf
--- 4811,4869 ----
  2c859f51cf8b58bb2d452d26fb586acf  gcc/config/msp430/msp430-devices.cc
  62aec601579ba5f8bca42fd44a828529  gcc/config/msp430/msp430-devices.h
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
! 9a73e48070ed558bce0c1666a2750f43  gcc/config/msp430/msp430-opts.h
  8ccbcf1f4b240d705396f26fdf612391  gcc/config/msp430/msp430-protos.h
! 10598c97eec053baaa0f756223ebe429  gcc/config/msp430/msp430.cc
  fcaead57275e6b5ed6c0371ae6636d82  gcc/config/msp430/msp430.h
! 1c6954cec0d2ada1ec1350ce88381a5c  gcc/config/msp430/msp430.md
  a03bbfba7e7041abe6a04b49d7e51b1a  gcc/config/msp430/msp430.opt
  ea485f0619b848fffad83f5eecd28966  gcc/config/msp430/msp430.opt.urls
  9f534dca9b41e0ff17624a4758318e36  gcc/config/msp430/predicates.md
  9edfa0b71859bf8b782a1502ebc42dd8  gcc/config/msp430/t-msp430
! b8e8179f1a712dbf6f59a7b04431b482  gcc/config/nds32/constants.md
! df78c7b7d66a822c66ed4921d00065a3  gcc/config/nds32/constraints.md
  bbda80ac7d7d0579bf089cdbca049478  gcc/config/nds32/elf.h
  220f02f84a3f3b81d15cdf8f399f7d27  gcc/config/nds32/iterators.md
  504e8657f36309d24fbd15232432d7bc  gcc/config/nds32/linux.h
! dee68a4c7c15451ba074ebde3f5fbbff  gcc/config/nds32/nds32-cost.cc
  8533382fc56f75d5006814fd83179514  gcc/config/nds32/nds32-doubleword.md
! de21c5693928e5456e245f0a5c07ed3e  gcc/config/nds32/nds32-dspext.md
! d4f8fe5eba90724c9a5fa2ea0c0a57f9  gcc/config/nds32/nds32-e8.md
  c316334a86026beb55e5c25b4b855f95  gcc/config/nds32/nds32-elf.opt
  a0b6c727a1380cd674ab75b88947c326  gcc/config/nds32/nds32-elf.opt.urls
! 63a76a1c125ccf14a7b48bf3ff92f5cb  gcc/config/nds32/nds32-fp-as-gp.cc
  fd5e775e547fea5ea12fbc27d5567547  gcc/config/nds32/nds32-fpu.md
  de9ad6a601d251d6df704644d1a8c274  gcc/config/nds32/nds32-graywolf.md
! dd414992de71320cd0485c0bf14e6cb1  gcc/config/nds32/nds32-intrinsic.cc
  9e779bf2be6e80cd356e58a8cec6f7b6  gcc/config/nds32/nds32-intrinsic.md
! 9165a0a64cec80f9a1a131dbcbba87af  gcc/config/nds32/nds32-isr.cc
  d94163fd5e4660359b8b12a0d90ed1bd  gcc/config/nds32/nds32-linux.opt
  a93f916906721665c3595705369b9c96  gcc/config/nds32/nds32-linux.opt.urls
! a09c29a06d8be52e633495e50416c61c  gcc/config/nds32/nds32-md-auxiliary.cc
! 9f0f68480dc81c57effdef9b43716128  gcc/config/nds32/nds32-memory-manipulation.cc
  7be569ebcf3f0f579bba070cad647e68  gcc/config/nds32/nds32-modes.def
! c922eb1ac03a442ae8b4c37eb6f871d1  gcc/config/nds32/nds32-multiple.md
  63e8b3cff96a9504c5ee74181842ec6b  gcc/config/nds32/nds32-n10.md
  2c7a0707fe945aa5ced84c380f9a3d0b  gcc/config/nds32/nds32-n13.md
! 285b8beae63bee82699e4068a187c070  gcc/config/nds32/nds32-n7.md
! e4969fc61bd6374da545e6b7581bc54a  gcc/config/nds32/nds32-n8.md
! 5c34c2e1fc8f5628dd945a857e6f5ec5  gcc/config/nds32/nds32-n9-2r1w.md
  fbd3bdb3ea4aba2bbf1fa809f499946e  gcc/config/nds32/nds32-n9-3r2w.md
  f40c0af3d2d9b97a7d7e8a332410d873  gcc/config/nds32/nds32-opts.h
  97b741f8af8bd8b4269f86395c335e59  gcc/config/nds32/nds32-peephole2.md
! 04beff6db72580cbbe9df33ed1bd5aea  gcc/config/nds32/nds32-pipelines-auxiliary.cc
! aa6f9e8549e59f74c1ee21fff3b4f84f  gcc/config/nds32/nds32-predicates.cc
! cf34d21cdda901d249d81826ab83c11f  gcc/config/nds32/nds32-protos.h
! 6e8c6d8993e0b3eae55ac8b64d15ca80  gcc/config/nds32/nds32-relax-opt.cc
! 493c457d78079bf84ba31bfe7ecacbb9  gcc/config/nds32/nds32-utils.cc
! 5de9e08b52f6359b006a27052c2bd77c  gcc/config/nds32/nds32.cc
! 71e37461fdc20ce43626007d272810f1  gcc/config/nds32/nds32.h
! 1b082b0f9aa3acf1614474a7f786973c  gcc/config/nds32/nds32.md
  70126739fc43ac4b6e9ff569899872fb  gcc/config/nds32/nds32.opt
  f83dc6414614bf080e92c0fd40154986  gcc/config/nds32/nds32.opt.urls
  c09acceb380f58ddb795ee3e973945d7  gcc/config/nds32/nds32_init.inc
! 0167ae81e0ae577f155984497de73608  gcc/config/nds32/nds32_intrinsic.h
! 38774388e8ab26fcd0b07c3763089b5e  gcc/config/nds32/nds32_isr.h
  669bec24c462cfc5fdbdd3435d17f182  gcc/config/nds32/pipelines.md
  42fac513379e0f1918460f19a6841399  gcc/config/nds32/predicates.md
  0b6770f2a56b432d36abb6db7792caf5  gcc/config/nds32/t-elf
*************** bbb2a2cf5c79743f967571a1b148fa76  gcc/co
*** 4896,4904 ****
  93a447d34921667614245e6a67c3de17  gcc/config/nvptx/nvptx-opts.h
  5ffc066c68d4afbfd07cc9455e6c32f8  gcc/config/nvptx/nvptx-protos.h
  fbb7de1e9945c721671a67496fd85db0  gcc/config/nvptx/nvptx-sm.def
! 903915965bdde1329ebfffa2e9710418  gcc/config/nvptx/nvptx.cc
  e2305d74b98283e4f9a780049b4f3c82  gcc/config/nvptx/nvptx.h
! b73220c606bf6c1705b780468fa1a60b  gcc/config/nvptx/nvptx.md
  7ef196e33d0fcc3be452238c20b9841d  gcc/config/nvptx/nvptx.opt
  f5c35e6fc1338d61e80f525ad1d27ead  gcc/config/nvptx/nvptx.opt.urls
  6dfcaf98ccebde10c0048561ac4b5a75  gcc/config/nvptx/offload.h
--- 4897,4905 ----
  93a447d34921667614245e6a67c3de17  gcc/config/nvptx/nvptx-opts.h
  5ffc066c68d4afbfd07cc9455e6c32f8  gcc/config/nvptx/nvptx-protos.h
  fbb7de1e9945c721671a67496fd85db0  gcc/config/nvptx/nvptx-sm.def
! b71ce5a615149b6287ceee7848b8c5d6  gcc/config/nvptx/nvptx.cc
  e2305d74b98283e4f9a780049b4f3c82  gcc/config/nvptx/nvptx.h
! e15f6451f0dfff24af4b5ecafe6050ce  gcc/config/nvptx/nvptx.md
  7ef196e33d0fcc3be452238c20b9841d  gcc/config/nvptx/nvptx.opt
  f5c35e6fc1338d61e80f525ad1d27ead  gcc/config/nvptx/nvptx.opt.urls
  6dfcaf98ccebde10c0048561ac4b5a75  gcc/config/nvptx/offload.h
*************** ea47b9aaff57a2a9d2393ed60a70f379  gcc/co
*** 4918,4926 ****
  0800c027b50e3ddb0bdb4cedbcf57204  gcc/config/or1k/linux.h
  8c4edc2eb61a43fb9f67ceb977f850e1  gcc/config/or1k/or1k-opts.h
  0dc32c21bc6353a22cc723aa5e94e7c4  gcc/config/or1k/or1k-protos.h
! 9377f178d70af1bc66bc030a50dbe624  gcc/config/or1k/or1k.cc
  41ea77ba00a7d899c45539f070a4e223  gcc/config/or1k/or1k.h
! a894bd2d205ea28000b59beafbc66a68  gcc/config/or1k/or1k.md
  db353534acb45de5e73096b05454650a  gcc/config/or1k/or1k.opt
  d32c4ec7b5de81e93a91bbcadbbb3527  gcc/config/or1k/or1k.opt.urls
  22651fbf09588000bcc7dc3b88c0425e  gcc/config/or1k/predicates.md
--- 4919,4927 ----
  0800c027b50e3ddb0bdb4cedbcf57204  gcc/config/or1k/linux.h
  8c4edc2eb61a43fb9f67ceb977f850e1  gcc/config/or1k/or1k-opts.h
  0dc32c21bc6353a22cc723aa5e94e7c4  gcc/config/or1k/or1k-protos.h
! 9021e16d01097a6b5ac74895c9a3ff2c  gcc/config/or1k/or1k.cc
  41ea77ba00a7d899c45539f070a4e223  gcc/config/or1k/or1k.h
! 839a5e574f8659cf8076e606e34132a5  gcc/config/or1k/or1k.md
  db353534acb45de5e73096b05454650a  gcc/config/or1k/or1k.opt
  d32c4ec7b5de81e93a91bbcadbbb3527  gcc/config/or1k/or1k.opt.urls
  22651fbf09588000bcc7dc3b88c0425e  gcc/config/or1k/predicates.md
*************** ed3f5ce2f7305137cb7981e5492f421d  gcc/co
*** 4951,4957 ****
  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
--- 4952,4958 ----
  6b3e75529fdba1a40cb9febc136adf85  gcc/config/pa/pa-openbsd.h
  799a8f38f756018d977260ec4dd15af3  gcc/config/pa/pa-opts.h
  8476a9a8e5e9e1c37d95d447ec828c0d  gcc/config/pa/pa-protos.h
! 9a6a5d9223dab90a5c05779cb300f814  gcc/config/pa/pa.cc
  48ed3369bdda761db5670fecc39f87bc  gcc/config/pa/pa.h
  8e56a443cd5f22e6953f138a5f200b2c  gcc/config/pa/pa.md
  cb75df3acdd704487025273adaa58c9f  gcc/config/pa/pa.opt
*************** eeb0a81c3d1e5cdd8bc33814345d028a  gcc/co
*** 4973,4979 ****
  fb996d0478e0f9b5e8380d78deae9931  gcc/config/pdp11/constraints.md
  294e3bdfb6a8e6e33d154c9b5ae8ec62  gcc/config/pdp11/pdp11-modes.def
  94c839dc82fe635020d9ed2fc2680a25  gcc/config/pdp11/pdp11-protos.h
! c27953964819c6835a4a42dfa21f330e  gcc/config/pdp11/pdp11.cc
  7454635b1b15d3f4bda61e4def4e3200  gcc/config/pdp11/pdp11.h
  c54bf2d4fd13bb74bc3d510b8f75f0b1  gcc/config/pdp11/pdp11.md
  10012acb24169b910382d641b2cbb2c6  gcc/config/pdp11/pdp11.opt
--- 4974,4980 ----
  fb996d0478e0f9b5e8380d78deae9931  gcc/config/pdp11/constraints.md
  294e3bdfb6a8e6e33d154c9b5ae8ec62  gcc/config/pdp11/pdp11-modes.def
  94c839dc82fe635020d9ed2fc2680a25  gcc/config/pdp11/pdp11-protos.h
! 3392e32833342ae92d4a3bc84c136b89  gcc/config/pdp11/pdp11.cc
  7454635b1b15d3f4bda61e4def4e3200  gcc/config/pdp11/pdp11.h
  c54bf2d4fd13bb74bc3d510b8f75f0b1  gcc/config/pdp11/pdp11.md
  10012acb24169b910382d641b2cbb2c6  gcc/config/pdp11/pdp11.opt
*************** c11972bf63fa008aee2bbef33d586f7b  gcc/co
*** 4986,5007 ****
  5f3fb55682992ef6da7e6abea4d74afd  gcc/config/picolibc.opt.urls
  fcbf9f8c84143f4aa31a271f8995d1ce  gcc/config/print-sysroot-suffix.sh
  56ef02d6b54083626b640d0ba8bc078c  gcc/config/pru/alu-zext.md
! ec10a442862a52c2a15b04b57350e27d  gcc/config/pru/constraints.md
! fd9af49194bb58a1d62ad95f54a30b86  gcc/config/pru/predicates.md
  812687b07083ac89dfceeb422109764f  gcc/config/pru/pru-opts.h
  12253ff8bacfa8875cba3d54e74339e1  gcc/config/pru/pru-passes.cc
  c98ff9301dd655a05d911274b87b8a60  gcc/config/pru/pru-passes.def
  95854bd9d43b089d9e485c55890d86f9  gcc/config/pru/pru-pragma.cc
  ad743ffd510350de1ccc398970040dc3  gcc/config/pru/pru-protos.h
  23b664357be90c32a2e613c5f890813b  gcc/config/pru/pru.cc
! 2e308610c272bc751c01348cbda71cb8  gcc/config/pru/pru.h
! 48a0101c7837fadd452c52a1853228b3  gcc/config/pru/pru.md
  07fb21318d917df2d4ba319221cb730c  gcc/config/pru/pru.opt
  ef116c044d43c2dfc0d66c90cb68f1e4  gcc/config/pru/pru.opt.urls
  c767f7420ba1d03bdc9c8683304f60b9  gcc/config/pru/t-multilib
  d14e87abdaf32035777f39d2369df790  gcc/config/pru/t-pru
  24fcf4723ce4bbe23722598936ad33e9  gcc/config/riscv/andes-23-series.md
! 6e8765fcc82116bd0fe49f725e131ad9  gcc/config/riscv/andes-25-series.md
  118aa466f059a6dece7669f13f281b25  gcc/config/riscv/andes-45-series.md
  fe7787cb1ccac5b6c4c75d7da3aef619  gcc/config/riscv/andes-vector-builtins-bases.cc
  30b1cd3f2169a2b09667ad9a57817b33  gcc/config/riscv/andes-vector-builtins-bases.h
--- 4987,5008 ----
  5f3fb55682992ef6da7e6abea4d74afd  gcc/config/picolibc.opt.urls
  fcbf9f8c84143f4aa31a271f8995d1ce  gcc/config/print-sysroot-suffix.sh
  56ef02d6b54083626b640d0ba8bc078c  gcc/config/pru/alu-zext.md
! d8dab71d714bd06b37bb94a91957387c  gcc/config/pru/constraints.md
! cb24ad36efa20d24b9e6292b70355252  gcc/config/pru/predicates.md
  812687b07083ac89dfceeb422109764f  gcc/config/pru/pru-opts.h
  12253ff8bacfa8875cba3d54e74339e1  gcc/config/pru/pru-passes.cc
  c98ff9301dd655a05d911274b87b8a60  gcc/config/pru/pru-passes.def
  95854bd9d43b089d9e485c55890d86f9  gcc/config/pru/pru-pragma.cc
  ad743ffd510350de1ccc398970040dc3  gcc/config/pru/pru-protos.h
  23b664357be90c32a2e613c5f890813b  gcc/config/pru/pru.cc
! ad2fbedc22725e978fed255060164c28  gcc/config/pru/pru.h
! 9f636bfa9cc175b1dddafcee206ae6f5  gcc/config/pru/pru.md
  07fb21318d917df2d4ba319221cb730c  gcc/config/pru/pru.opt
  ef116c044d43c2dfc0d66c90cb68f1e4  gcc/config/pru/pru.opt.urls
  c767f7420ba1d03bdc9c8683304f60b9  gcc/config/pru/t-multilib
  d14e87abdaf32035777f39d2369df790  gcc/config/pru/t-pru
  24fcf4723ce4bbe23722598936ad33e9  gcc/config/riscv/andes-23-series.md
! 6a8d6503ff6d371819fb57211bcaa34b  gcc/config/riscv/andes-25-series.md
  118aa466f059a6dece7669f13f281b25  gcc/config/riscv/andes-45-series.md
  fe7787cb1ccac5b6c4c75d7da3aef619  gcc/config/riscv/andes-vector-builtins-bases.cc
  30b1cd3f2169a2b09667ad9a57817b33  gcc/config/riscv/andes-vector-builtins-bases.h
*************** f913aafadf901518cfbd1709bf303845  gcc/co
*** 5010,5100 ****
  8d50880f7d63f8f9ccbabf76a8de5cff  gcc/config/riscv/andes.def
  3781b6037a5c704d1ff44bb98a38265e  gcc/config/riscv/andes.md
  4a021a2fda3f1fcb2ebb0b295d676d96  gcc/config/riscv/andes_vector.h
! 3a8a73bef77551ee151fb28603e3a02a  gcc/config/riscv/arch-canonicalize
  b7544a05ff53accc3d2defcb758626a9  gcc/config/riscv/arcv-rhx100.md
  4a634d8ec9f394f560c8538634cd937a  gcc/config/riscv/arcv-rmx100.md
! e210fc922126036076267892b159c6e3  gcc/config/riscv/autovec-opt.md
! a5e692feb7ce6b3415cc59b56d695d26  gcc/config/riscv/autovec.md
! 241fbffe6687f2114c1b50096fe2f912  gcc/config/riscv/bitmanip.md
! 9a8c3c567d897ebcb2cfe1b14c449222  gcc/config/riscv/constraints.md
  cea5b702841429deff64e2e6fd0b626f  gcc/config/riscv/corev.def
  3541ce4817aa1b4ca8a8e3799ba716d8  gcc/config/riscv/corev.md
  7756abda53649ea4167327df7a1dd51a  gcc/config/riscv/crypto.md
  cf2f4b49f9a1b3787b92baf7d5a969f7  gcc/config/riscv/elf.h
  2510ce821b34e9be6fa995fe43ac5b37  gcc/config/riscv/freebsd.h
! 226eabae9cd380fe62b39c2ad956bc0d  gcc/config/riscv/gen-riscv-ext-opt.cc
  e623a5f3d20e542e3d022edd84995185  gcc/config/riscv/gen-riscv-ext-texi.cc
! 760bd417139439d3b1868b16a4abb87b  gcc/config/riscv/gen-riscv-mcpu-texi.cc
! d4766896ca13261090404b7ecfcacd52  gcc/config/riscv/gen-riscv-mtune-texi.cc
  39e2577cf937bfe79e500d766e56edcf  gcc/config/riscv/generic-ooo.md
! e0b13dc09c4cccdaca5e57fad46b6aef  gcc/config/riscv/generic-vector-ooo.md
  90a6f68ec2557b16413f573595ce74d6  gcc/config/riscv/generic.md
! 81366d49e01df5540a08a8994ac8e383  gcc/config/riscv/genrvv-type-indexer.cc
  d65916d74c79d1101eb0c17723537421  gcc/config/riscv/gnu.h
  5403120753928dd9998bf08cac3058af  gcc/config/riscv/iterators.md
  72a82b13d5b374c0700be4a9e402884c  gcc/config/riscv/linux.h
  bcda2f5a4a2728d5f6bc53cbbd26f90c  gcc/config/riscv/mips-insn.md
  6952defcc51372547e752ac9f0184fd0  gcc/config/riscv/mips-p8700.md
! 79624e7f5ec1520f8716e3bc6e8e1704  gcc/config/riscv/multilib-generator
  71bb6b628401a63410f99976d969ed4a  gcc/config/riscv/peephole.md
  16cf6e3ed290820f3a87012495b1227b  gcc/config/riscv/pic.md
  5259023ff7c1538fe8f46ddc8b9a51f2  gcc/config/riscv/pipeline-checker
  562cd33a1fed3a3435db5f372d892258  gcc/config/riscv/predicates.md
! fbba4e9f3f0e00cdc072f9a3d399d0d1  gcc/config/riscv/riscv-avlprop.cc
! 28bce4c8c28ba8acca9ceede4540540c  gcc/config/riscv/riscv-bclr-lowest-set-bit.cc
  5108deda32a010f8df8d518a2417ba81  gcc/config/riscv/riscv-builtins.cc
  5cb39713c38f481ef65328ccacfc067e  gcc/config/riscv/riscv-c.cc
  33dd09c63fb051a37d26d97469c451d9  gcc/config/riscv/riscv-cmo.def
! 2cd79da1a40d7dec7cc6899d5ab01704  gcc/config/riscv/riscv-cores.def
  165a5d0020971e2616fa7c9198c56338  gcc/config/riscv/riscv-d.cc
  c5d537324bd78e2ade1cf59d04fc1f54  gcc/config/riscv/riscv-d.h
! 6078aa631d1c71fd215d51e4edcec963  gcc/config/riscv/riscv-ext-andes.def
  73412120c98ad39a53f2d6116616035a  gcc/config/riscv/riscv-ext-corev.def
  bdea5a038db730633426d4ab8652a37c  gcc/config/riscv/riscv-ext-mips.def
  982f2f5023f638c594cd4100390ef617  gcc/config/riscv/riscv-ext-sifive.def
  6aef0384f848e091b1f84d7e64ab667c  gcc/config/riscv/riscv-ext-spacemit.def
  0d561344b80507521c8e686db17fd207  gcc/config/riscv/riscv-ext-thead.def
  ca88603cd61372d621963af0d282a93b  gcc/config/riscv/riscv-ext-ventana.def
! 200d4cfec7a32568436dd537434e5ff3  gcc/config/riscv/riscv-ext.def
! 4f872ac7917638dfea26aad68db4e9e6  gcc/config/riscv/riscv-ext.opt
  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
  b8f6d36a9d7d3ef28a80c20bec990411  gcc/config/riscv/riscv-passes.def
! 8fcaaf812bb193e0fad76d6b5f82f2af  gcc/config/riscv/riscv-profiles.def
! 197398b505af1b647aa991184967a7a5  gcc/config/riscv/riscv-protos.h
  2b6774d7dd7980d9eb3f4f24ed1b3e45  gcc/config/riscv/riscv-scalar-crypto.def
! c171108cfab16c74097a841489b04298  gcc/config/riscv/riscv-selftests.cc
  41d585e61cee0deacc33bd07c93e79e2  gcc/config/riscv/riscv-shorten-memrefs.cc
! 62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
! f57a4d1f0a5a49304e07ae38a6990bc8  gcc/config/riscv/riscv-string.cc
! 83bc8b8b85874456078c4c683d82a3e6  gcc/config/riscv/riscv-subset.h
! da26032fa71bbdaccc0766633e3f86bb  gcc/config/riscv/riscv-target-attr.cc
! 1ba47eb9e093f0992f2bc8812aa2f7f3  gcc/config/riscv/riscv-v.cc
! 23f9fe60c9f6f052bd55875310c01b0e  gcc/config/riscv/riscv-v.h
! 3d17a86fd1ba10efb8809c613d1eb6cf  gcc/config/riscv/riscv-vect-permconst.cc
! 5c3100beef34fe1879075f8cfb95e70e  gcc/config/riscv/riscv-vector-builtins-bases.cc
  7fc09f50e292c52420537953650fa0de  gcc/config/riscv/riscv-vector-builtins-bases.h
! 4a25523a7d997f5ddf9f1164da651e71  gcc/config/riscv/riscv-vector-builtins-functions.def
! 99633c5e82aa1fc497802b59d54e23a8  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  2a2b16ff55b4e9c8265561eb12d0aa49  gcc/config/riscv/riscv-vector-builtins-shapes.h
! a6642c27cbc8f18cf3cab4881911ed3f  gcc/config/riscv/riscv-vector-builtins-types.def
! 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
  712042d47c904acf7307129ab3a48df3  gcc/config/riscv/riscv.opt.urls
  68c8996d7ac73df46c6c1d49d8839ee0  gcc/config/riscv/riscv_bitmanip.h
--- 5011,5101 ----
  8d50880f7d63f8f9ccbabf76a8de5cff  gcc/config/riscv/andes.def
  3781b6037a5c704d1ff44bb98a38265e  gcc/config/riscv/andes.md
  4a021a2fda3f1fcb2ebb0b295d676d96  gcc/config/riscv/andes_vector.h
! f8ec88f62721861232564e0992e62a62  gcc/config/riscv/arch-canonicalize
  b7544a05ff53accc3d2defcb758626a9  gcc/config/riscv/arcv-rhx100.md
  4a634d8ec9f394f560c8538634cd937a  gcc/config/riscv/arcv-rmx100.md
! 70f82db81fb85e4c26c82abb99a6b1d1  gcc/config/riscv/autovec-opt.md
! ba4c660e0aeebd868870a318ae434e75  gcc/config/riscv/autovec.md
! 18e8deb10c1d46dfbfb3ec75cf2ee584  gcc/config/riscv/bitmanip.md
! db5b3680a38178246dffb8a5874ebaf9  gcc/config/riscv/constraints.md
  cea5b702841429deff64e2e6fd0b626f  gcc/config/riscv/corev.def
  3541ce4817aa1b4ca8a8e3799ba716d8  gcc/config/riscv/corev.md
  7756abda53649ea4167327df7a1dd51a  gcc/config/riscv/crypto.md
  cf2f4b49f9a1b3787b92baf7d5a969f7  gcc/config/riscv/elf.h
  2510ce821b34e9be6fa995fe43ac5b37  gcc/config/riscv/freebsd.h
! e5846099f736bbc0e13d9013a9274209  gcc/config/riscv/gen-riscv-ext-opt.cc
  e623a5f3d20e542e3d022edd84995185  gcc/config/riscv/gen-riscv-ext-texi.cc
! 5e0f347efbc6fad6f788392deb3c7d09  gcc/config/riscv/gen-riscv-mcpu-texi.cc
! eb004939538cc6b4bc5e1a7e22dc62c9  gcc/config/riscv/gen-riscv-mtune-texi.cc
  39e2577cf937bfe79e500d766e56edcf  gcc/config/riscv/generic-ooo.md
! 7b389563a40e8440203d06a32003eb1f  gcc/config/riscv/generic-vector-ooo.md
  90a6f68ec2557b16413f573595ce74d6  gcc/config/riscv/generic.md
! 1918a5fb05bb23af839a5aa78120ba7b  gcc/config/riscv/genrvv-type-indexer.cc
  d65916d74c79d1101eb0c17723537421  gcc/config/riscv/gnu.h
  5403120753928dd9998bf08cac3058af  gcc/config/riscv/iterators.md
  72a82b13d5b374c0700be4a9e402884c  gcc/config/riscv/linux.h
  bcda2f5a4a2728d5f6bc53cbbd26f90c  gcc/config/riscv/mips-insn.md
  6952defcc51372547e752ac9f0184fd0  gcc/config/riscv/mips-p8700.md
! 0eee249def4b0c4415c5c93f5ade195e  gcc/config/riscv/multilib-generator
  71bb6b628401a63410f99976d969ed4a  gcc/config/riscv/peephole.md
  16cf6e3ed290820f3a87012495b1227b  gcc/config/riscv/pic.md
  5259023ff7c1538fe8f46ddc8b9a51f2  gcc/config/riscv/pipeline-checker
  562cd33a1fed3a3435db5f372d892258  gcc/config/riscv/predicates.md
! 70d51385db7e59e81c5571e40469f14e  gcc/config/riscv/riscv-avlprop.cc
! 45d3b1902e6d85db720351c82d854983  gcc/config/riscv/riscv-bclr-lowest-set-bit.cc
  5108deda32a010f8df8d518a2417ba81  gcc/config/riscv/riscv-builtins.cc
  5cb39713c38f481ef65328ccacfc067e  gcc/config/riscv/riscv-c.cc
  33dd09c63fb051a37d26d97469c451d9  gcc/config/riscv/riscv-cmo.def
! 4e120ea581fa4d76820ea419b77ca3fc  gcc/config/riscv/riscv-cores.def
  165a5d0020971e2616fa7c9198c56338  gcc/config/riscv/riscv-d.cc
  c5d537324bd78e2ade1cf59d04fc1f54  gcc/config/riscv/riscv-d.h
! 289aa3beac20448eac0ca053c2652b37  gcc/config/riscv/riscv-ext-andes.def
  73412120c98ad39a53f2d6116616035a  gcc/config/riscv/riscv-ext-corev.def
  bdea5a038db730633426d4ab8652a37c  gcc/config/riscv/riscv-ext-mips.def
  982f2f5023f638c594cd4100390ef617  gcc/config/riscv/riscv-ext-sifive.def
  6aef0384f848e091b1f84d7e64ab667c  gcc/config/riscv/riscv-ext-spacemit.def
  0d561344b80507521c8e686db17fd207  gcc/config/riscv/riscv-ext-thead.def
  ca88603cd61372d621963af0d282a93b  gcc/config/riscv/riscv-ext-ventana.def
! 2e065322e5546447dd9bbd9552d4e537  gcc/config/riscv/riscv-ext.def
! 9e949c6f7a1518c233014cac46a6d437  gcc/config/riscv/riscv-ext.opt
  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
! f2652949a0fc8fb9841f89fd0b14b516  gcc/config/riscv/riscv-modes.def
! f345cbe9d8c50068508e75fe59e6b4a6  gcc/config/riscv/riscv-opt-popretz.cc
! 7580ff2b6ee1a7e6e08368bacae2ac95  gcc/config/riscv/riscv-opts.h
  b8f6d36a9d7d3ef28a80c20bec990411  gcc/config/riscv/riscv-passes.def
! e1ac1647825642c1e551b9a174630bd6  gcc/config/riscv/riscv-profiles.def
! e1f13cd1a1bd437695158a4577691194  gcc/config/riscv/riscv-protos.h
  2b6774d7dd7980d9eb3f4f24ed1b3e45  gcc/config/riscv/riscv-scalar-crypto.def
! 01798b6988317cc1d7a76908a68f458a  gcc/config/riscv/riscv-selftests.cc
  41d585e61cee0deacc33bd07c93e79e2  gcc/config/riscv/riscv-shorten-memrefs.cc
! 1ebe40e418ab6054a3ea000381c1c959  gcc/config/riscv/riscv-sr.cc
! 01ec38533cb246430551648ac4c8e8ce  gcc/config/riscv/riscv-string.cc
! 5f2c2bf7c94b8cb13fc50b55194c991e  gcc/config/riscv/riscv-subset.h
! 1058561a06280d28aa26974102f3b818  gcc/config/riscv/riscv-target-attr.cc
! 558bfe912d3aa407acbe682f18c4d885  gcc/config/riscv/riscv-v.cc
! 34f62419062663f91765f9f50c8f0b62  gcc/config/riscv/riscv-v.h
! 9eb2acff4a0e6907ab4fe749d3b1fc7f  gcc/config/riscv/riscv-vect-permconst.cc
! 57f6e7bfe03810287895f1b9f41b469d  gcc/config/riscv/riscv-vector-builtins-bases.cc
  7fc09f50e292c52420537953650fa0de  gcc/config/riscv/riscv-vector-builtins-bases.h
! 24999355f5fe486aee79b1d89fbc5d24  gcc/config/riscv/riscv-vector-builtins-functions.def
! b6f59a4e6889b8fdd3423f853347dc12  gcc/config/riscv/riscv-vector-builtins-shapes.cc
  2a2b16ff55b4e9c8265561eb12d0aa49  gcc/config/riscv/riscv-vector-builtins-shapes.h
! 2291ef015c10e52be5b7e887d0ea1219  gcc/config/riscv/riscv-vector-builtins-types.def
! 74e512db1b8e8d95d27837dfb557cc9c  gcc/config/riscv/riscv-vector-builtins.cc
! 0ec9d6c2ca784cba000c21a33c87787d  gcc/config/riscv/riscv-vector-builtins.def
! 2abaee36aff67cee1ed97448897614d8  gcc/config/riscv/riscv-vector-builtins.h
! ee8122b7c30f11ad5dc682dad7cf7f55  gcc/config/riscv/riscv-vector-costs.cc
! 4d1160c11520af439eb0e5dc6073e77b  gcc/config/riscv/riscv-vector-costs.h
  4dd506c7e0c9b67fb2b6c5acdf4f44b7  gcc/config/riscv/riscv-vector-switch.def
! d2118ca4ecf36de47f557cd232eeab86  gcc/config/riscv/riscv-vsetvl.cc
! 93865bd42f020c581f89604a40ca7ca2  gcc/config/riscv/riscv-vsetvl.def
! 6c148c7c35a1ff5e8c46457f8f3417e8  gcc/config/riscv/riscv-zicfilp.cc
! bbd085005b7a46a80a2d88a686d5b33b  gcc/config/riscv/riscv.cc
! 6c784bd0ee5e1b5a8990ada0c77b3101  gcc/config/riscv/riscv.h
! fd9d7795acefef4e29cfd8e45ac4c41d  gcc/config/riscv/riscv.md
  889bc6068f70f03b008968821d92ad40  gcc/config/riscv/riscv.opt
  712042d47c904acf7307129ab3a48df3  gcc/config/riscv/riscv.opt.urls
  68c8996d7ac73df46c6c1d49d8839ee0  gcc/config/riscv/riscv_bitmanip.h
*************** ef8111b151f28f36d377df7b23b6b46f  gcc/co
*** 5108,5117 ****
  2c11e3c37dd3e9b1a8f83c4920720c32  gcc/config/riscv/sifive-p600.md
  8e357e68d22c0bf2e5463793d9c5d617  gcc/config/riscv/sifive-vector-builtins-bases.cc
  5ff33a97f2dbb8ace0988a9736c5c046  gcc/config/riscv/sifive-vector-builtins-bases.h
! bc8a03f06cb925e5c1277e5ccd2f0314  gcc/config/riscv/sifive-vector-builtins-functions.def
  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
--- 5109,5118 ----
  2c11e3c37dd3e9b1a8f83c4920720c32  gcc/config/riscv/sifive-p600.md
  8e357e68d22c0bf2e5463793d9c5d617  gcc/config/riscv/sifive-vector-builtins-bases.cc
  5ff33a97f2dbb8ace0988a9736c5c046  gcc/config/riscv/sifive-vector-builtins-bases.h
! 3a280f2ee35611d19732e2fe055f2229  gcc/config/riscv/sifive-vector-builtins-functions.def
  656879fa6da6ce5e2212ef2a731ee479  gcc/config/riscv/sifive-vector.md
! 0cbf9696a67d53bd260c9499b21f694e  gcc/config/riscv/sifive_vector.h
! fb9e0d5d8cce3f32dca3b7de2b8768ca  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
*************** fe202105dd9e81b9ce8fdcc11d52c294  gcc/co
*** 5125,5140 ****
  457bc4a582b0b8d80c60ee135931f5c8  gcc/config/riscv/thead-peephole.md
  325f22596295559607b476e5a2a4d491  gcc/config/riscv/thead-vector-builtins-functions.def
  20d5b4bb0f3ffe345d7963dae027c447  gcc/config/riscv/thead-vector.md
! bc9e0f6e45851cb27855fbd19172bf5e  gcc/config/riscv/thead.cc
  03801432922f48ba0343aa17544bdba7  gcc/config/riscv/thead.md
! a95321fbec5a4da32a9ee8145b8b0c6d  gcc/config/riscv/tt-ascalon-d8.md
  dcbac9d3c6831ff1cd18effca9c7bb28  gcc/config/riscv/vector-bfloat16.md
! 1efc7e76b1f8a6c41de01fba7e0d33b9  gcc/config/riscv/vector-crypto.md
! c78bb4f6b9379604f64af243304b4a95  gcc/config/riscv/vector-iterators.md
! 9da46a6ebcde869935ad8f8549accf3e  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  39ba96197510d4ac114a827d7ffbf806  gcc/config/riscv/zc.md
! a4add97cfb1c6c831a14ef470fc57915  gcc/config/riscv/zicond.md
  d8e5244a78b41071cc1e0cafc3180db3  gcc/config/rl78/constraints.md
  7b7c876420bfc606ea2233644fb6cf39  gcc/config/rl78/predicates.md
  c90cca4dab29ddc6dc57edf9338ad721  gcc/config/rl78/rl78-c.cc
--- 5126,5142 ----
  457bc4a582b0b8d80c60ee135931f5c8  gcc/config/riscv/thead-peephole.md
  325f22596295559607b476e5a2a4d491  gcc/config/riscv/thead-vector-builtins-functions.def
  20d5b4bb0f3ffe345d7963dae027c447  gcc/config/riscv/thead-vector.md
! 19f3d1111bb5b23042ecc96cce4636a1  gcc/config/riscv/thead.cc
  03801432922f48ba0343aa17544bdba7  gcc/config/riscv/thead.md
! 670dbcd81c0f3fdaf864448ca22368e5  gcc/config/riscv/tt-ascalon-d8.md
  dcbac9d3c6831ff1cd18effca9c7bb28  gcc/config/riscv/vector-bfloat16.md
! d321bd9f102b0926d5d2c56c36ad6853  gcc/config/riscv/vector-crypto.md
! a1ab9c2ceb56674539793f23371d6e4e  gcc/config/riscv/vector-iterators.md
! dc73bc8c63cd9594051e8e75b589a1c5  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
+ a398dfa970d2d1459a986ec657c751a3  gcc/config/riscv/xt-c908.md
  39ba96197510d4ac114a827d7ffbf806  gcc/config/riscv/zc.md
! e8b285aaeb19f7beb40d3ca1287570e7  gcc/config/riscv/zicond.md
  d8e5244a78b41071cc1e0cafc3180db3  gcc/config/rl78/constraints.md
  7b7c876420bfc606ea2233644fb6cf39  gcc/config/rl78/predicates.md
  c90cca4dab29ddc6dc57edf9338ad721  gcc/config/rl78/rl78-c.cc
*************** cf5e812e9a79fb52359bbbe481b92261  gcc/co
*** 5143,5149 ****
  9315f1451b42da00f152d6493ea02d75  gcc/config/rl78/rl78-protos.h
  197bab45946ac41123728e07520a0061  gcc/config/rl78/rl78-real.md
  64693fab4f10cd2849458dd596777050  gcc/config/rl78/rl78-virt.md
! 07a1dabd56479bcf7c93a89bd50ccd32  gcc/config/rl78/rl78.cc
  619dc6299815cdf10ebe571a1e57eafe  gcc/config/rl78/rl78.h
  ebbceacded87efe37fb6bbc894f7f0d5  gcc/config/rl78/rl78.md
  7549cde2462d8ce47201e563f43f72a6  gcc/config/rl78/rl78.opt
--- 5145,5151 ----
  9315f1451b42da00f152d6493ea02d75  gcc/config/rl78/rl78-protos.h
  197bab45946ac41123728e07520a0061  gcc/config/rl78/rl78-real.md
  64693fab4f10cd2849458dd596777050  gcc/config/rl78/rl78-virt.md
! a724d6917327d5b4ed033a676124c494  gcc/config/rl78/rl78.cc
  619dc6299815cdf10ebe571a1e57eafe  gcc/config/rl78/rl78.h
  ebbceacded87efe37fb6bbc894f7f0d5  gcc/config/rl78/rl78.md
  7549cde2462d8ce47201e563f43f72a6  gcc/config/rl78/rl78.opt
*************** ec68b0ff3863802f2f9160b535b38c31  gcc/co
*** 5165,5171 ****
  cbcf88f781d3b1c5edd096738693a993  gcc/config/rs6000/8540.md
  23e421c82ebbfa2eefdf48bcd530fd02  gcc/config/rs6000/a2.md
  a8b1f3ddfb1f6f99004ac2db6cd9dc74  gcc/config/rs6000/aix-stdint.h
! d0faac423dbdf9cf30ccf83ac9d2e60d  gcc/config/rs6000/aix.h
  1fceb97e97a40dc3014fd5d2a8ab5d07  gcc/config/rs6000/aix64.opt
  d70f08b893e019d12b16dc9a70754ef9  gcc/config/rs6000/aix64.opt.urls
  48e2c945bd49f48743765c272b092dc6  gcc/config/rs6000/aix71.h
--- 5167,5173 ----
  cbcf88f781d3b1c5edd096738693a993  gcc/config/rs6000/8540.md
  23e421c82ebbfa2eefdf48bcd530fd02  gcc/config/rs6000/a2.md
  a8b1f3ddfb1f6f99004ac2db6cd9dc74  gcc/config/rs6000/aix-stdint.h
! bbec8332d5720d79b0a99a056faab381  gcc/config/rs6000/aix.h
  1fceb97e97a40dc3014fd5d2a8ab5d07  gcc/config/rs6000/aix64.opt
  d70f08b893e019d12b16dc9a70754ef9  gcc/config/rs6000/aix64.opt.urls
  48e2c945bd49f48743765c272b092dc6  gcc/config/rs6000/aix71.h
*************** f03bdef1224a610cfb7130f3c687b87f  gcc/co
*** 5177,5186 ****
  2b409a82a1747675112a04705e01d157  gcc/config/rs6000/biarch64.h
  f83fd3bf0d9fbc30c9401eec549fdc2c  gcc/config/rs6000/bmi2intrin.h
  161814e9f6f10782769302881ac26227  gcc/config/rs6000/bmiintrin.h
! ee17a95e2411ef6ef4f1588d17e2cf66  gcc/config/rs6000/cell.md
  837f16df42ea04e41a4450e7f9ebe42a  gcc/config/rs6000/constraints.md
  9dfea0dab8f972986488db93eb23fab1  gcc/config/rs6000/crypto.md
! 841aa28da573ce031fe43ae0fb24bfd9  gcc/config/rs6000/darwin.h
  8c9c110a4faa8e47a4c4caef834d7c1d  gcc/config/rs6000/darwin.md
  8ef5306087b5e728b308cf63664b051d  gcc/config/rs6000/darwin.opt
  465e67f2fa0bad834639122551e17ab2  gcc/config/rs6000/darwin.opt.urls
--- 5179,5188 ----
  2b409a82a1747675112a04705e01d157  gcc/config/rs6000/biarch64.h
  f83fd3bf0d9fbc30c9401eec549fdc2c  gcc/config/rs6000/bmi2intrin.h
  161814e9f6f10782769302881ac26227  gcc/config/rs6000/bmiintrin.h
! e626e4c3063d9dbb1b3cf98b57f5c4b9  gcc/config/rs6000/cell.md
  837f16df42ea04e41a4450e7f9ebe42a  gcc/config/rs6000/constraints.md
  9dfea0dab8f972986488db93eb23fab1  gcc/config/rs6000/crypto.md
! a34eb9a7f89b11d6ee50754b7ac0de99  gcc/config/rs6000/darwin.h
  8c9c110a4faa8e47a4c4caef834d7c1d  gcc/config/rs6000/darwin.md
  8ef5306087b5e728b308cf63664b051d  gcc/config/rs6000/darwin.opt
  465e67f2fa0bad834639122551e17ab2  gcc/config/rs6000/darwin.opt.urls
*************** e4b02417cb4df9d5a76c80b1ff2a9f74  gcc/co
*** 5219,5225 ****
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
  bafcfaea28ea830127780e11ee8484b7  gcc/config/rs6000/mm_malloc.h
  6e0671bcc17a9ce56b8bf4c08f887b32  gcc/config/rs6000/mma.md
! 666740adf812d1114cd095f0155311d5  gcc/config/rs6000/mmintrin.h
  83a4c3ddfdabef774f4ae2987049a6d0  gcc/config/rs6000/mpc.md
  0f91e4ac20f298ae22704f7b3d0560cf  gcc/config/rs6000/netbsd.h
  bfe4678a313d567e472d97e19340736e  gcc/config/rs6000/nmmintrin.h
--- 5221,5227 ----
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
  bafcfaea28ea830127780e11ee8484b7  gcc/config/rs6000/mm_malloc.h
  6e0671bcc17a9ce56b8bf4c08f887b32  gcc/config/rs6000/mma.md
! 91307ccde2df6c5003b7fdcecdaff85f  gcc/config/rs6000/mmintrin.h
  83a4c3ddfdabef774f4ae2987049a6d0  gcc/config/rs6000/mpc.md
  0f91e4ac20f298ae22704f7b3d0560cf  gcc/config/rs6000/netbsd.h
  bfe4678a313d567e472d97e19340736e  gcc/config/rs6000/nmmintrin.h
*************** db237fc1717a4075e7b9480205a32fd5  gcc/co
*** 5239,5268 ****
  25ea383c1f398321c28d21896c9d79db  gcc/config/rs6000/predicates.md
  63ccc96ff2cef948c080eac4455d02b1  gcc/config/rs6000/rbtree.cc
  8ece9ca8167f5056fa411488a97c6131  gcc/config/rs6000/rbtree.h
! 63d5e60d2087274a3edb3f6b7b726b0a  gcc/config/rs6000/rs6000-builtin.cc
  f036412353f68a4e76f55c35b8f3e4ee  gcc/config/rs6000/rs6000-builtins.def
  15e52baa355b0c3b725c3e6e55524af0  gcc/config/rs6000/rs6000-c.cc
! c97babd518212b16f2837b9b1d5d8359  gcc/config/rs6000/rs6000-call.cc
  4579aba833c122ad0e6a91b573653e2c  gcc/config/rs6000/rs6000-cpus.def
  7b860836fdc33cdfdd29f6348a553096  gcc/config/rs6000/rs6000-d.cc
  1ac6ae1e7d6d83d76667769f7166b9a7  gcc/config/rs6000/rs6000-d.h
  19cf935ce7de136fe7ef1a4a6350f541  gcc/config/rs6000/rs6000-gen-builtins.cc
! c165dfc83b2c9e75d3906f429e76a3fa  gcc/config/rs6000/rs6000-internal.h
  68da03c0d0c1dfafebf4ba706e6d3ff9  gcc/config/rs6000/rs6000-linux.cc
! 4768cacdca0b901f6cb649726cca5eeb  gcc/config/rs6000/rs6000-logue.cc
  108998dcf0201ccd3e147d71251ca9f6  gcc/config/rs6000/rs6000-modes.def
  e6f2820356a7ee18c353376ab3490fb6  gcc/config/rs6000/rs6000-opts.h
  de7c129a7b61a7dbc765b98ee8e58df3  gcc/config/rs6000/rs6000-overload.def
! dc46fa102175551da2f4ce2ee5c6435c  gcc/config/rs6000/rs6000-p8swap.cc
! da37007432adac35e44d7592e307e64a  gcc/config/rs6000/rs6000-passes.def
  384645a6c72587ac7501915a0c737e64  gcc/config/rs6000/rs6000-pcrel-opt.cc
  d3a1c98fd13be04e1250b073cb8dcef2  gcc/config/rs6000/rs6000-protos.h
! 9e39e759376eb97f2a56ebfc28c8d149  gcc/config/rs6000/rs6000-string.cc
  835f22c956cc4deb83970ee9a9b5b79b  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! 4e95fc675ae78a931fed1e8424322497  gcc/config/rs6000/rs6000.cc
! 59b4ee08f651c3f48e6a52091e6911f0  gcc/config/rs6000/rs6000.h
! a575dd5c5592c7d23a9b53b985c01120  gcc/config/rs6000/rs6000.md
  e407423336f12658b509205c3e8f7130  gcc/config/rs6000/rs6000.opt
  80708ca71755b0d8d354f113f0617617  gcc/config/rs6000/rs6000.opt.urls
  89d4cadf8216efa86b72204e660cc4b0  gcc/config/rs6000/rs64.md
--- 5241,5270 ----
  25ea383c1f398321c28d21896c9d79db  gcc/config/rs6000/predicates.md
  63ccc96ff2cef948c080eac4455d02b1  gcc/config/rs6000/rbtree.cc
  8ece9ca8167f5056fa411488a97c6131  gcc/config/rs6000/rbtree.h
! 952a15095d55ed13cac7857cfcd12d7e  gcc/config/rs6000/rs6000-builtin.cc
  f036412353f68a4e76f55c35b8f3e4ee  gcc/config/rs6000/rs6000-builtins.def
  15e52baa355b0c3b725c3e6e55524af0  gcc/config/rs6000/rs6000-c.cc
! f9e94bf7a9305993de9ddd700311aaaa  gcc/config/rs6000/rs6000-call.cc
  4579aba833c122ad0e6a91b573653e2c  gcc/config/rs6000/rs6000-cpus.def
  7b860836fdc33cdfdd29f6348a553096  gcc/config/rs6000/rs6000-d.cc
  1ac6ae1e7d6d83d76667769f7166b9a7  gcc/config/rs6000/rs6000-d.h
  19cf935ce7de136fe7ef1a4a6350f541  gcc/config/rs6000/rs6000-gen-builtins.cc
! c5022a5818a013ca208704a71fbd6d48  gcc/config/rs6000/rs6000-internal.h
  68da03c0d0c1dfafebf4ba706e6d3ff9  gcc/config/rs6000/rs6000-linux.cc
! cd5e92a42bcde77a84b9fbe9e0a3238b  gcc/config/rs6000/rs6000-logue.cc
  108998dcf0201ccd3e147d71251ca9f6  gcc/config/rs6000/rs6000-modes.def
  e6f2820356a7ee18c353376ab3490fb6  gcc/config/rs6000/rs6000-opts.h
  de7c129a7b61a7dbc765b98ee8e58df3  gcc/config/rs6000/rs6000-overload.def
! 857d6101dc080e798b79af7bdbacfa9d  gcc/config/rs6000/rs6000-p8swap.cc
! ed259dbc10dcc21110d2d0d8ddde7497  gcc/config/rs6000/rs6000-passes.def
  384645a6c72587ac7501915a0c737e64  gcc/config/rs6000/rs6000-pcrel-opt.cc
  d3a1c98fd13be04e1250b073cb8dcef2  gcc/config/rs6000/rs6000-protos.h
! e6d989b64b588e3c16ea579031fed5ab  gcc/config/rs6000/rs6000-string.cc
  835f22c956cc4deb83970ee9a9b5b79b  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! 3963152905bdcf5b20f2cfac75fd44ba  gcc/config/rs6000/rs6000.cc
! 4517b5e939c3d673f16baceb4e1a371a  gcc/config/rs6000/rs6000.h
! f25105f45029b1ea97f9b32a1041f7f6  gcc/config/rs6000/rs6000.md
  e407423336f12658b509205c3e8f7130  gcc/config/rs6000/rs6000.opt
  80708ca71755b0d8d354f113f0617617  gcc/config/rs6000/rs6000.opt.urls
  89d4cadf8216efa86b72204e660cc4b0  gcc/config/rs6000/rs64.md
*************** d57d0eb0a8e2193f5cef2aaf1ad6d722  gcc/co
*** 5271,5277 ****
  0a803e7432938644d0614c5d9ee60670  gcc/config/rs6000/si2vmx.h
  b1a1f1ea8636fe96381989b926619397  gcc/config/rs6000/smmintrin.h
  016514c870054ecd799330bad9520a9d  gcc/config/rs6000/spu2vmx.h
! 0955c6a2d639cf6eaade88aa538b81b8  gcc/config/rs6000/sync.md
  e8c76038df323d77e90f69c78138b1fd  gcc/config/rs6000/sysv4.h
  e51499a69ac94adadb730c6c5491b97d  gcc/config/rs6000/sysv4.opt
  0ca73e6f14270f4ed0893f866e64b36f  gcc/config/rs6000/sysv4.opt.urls
--- 5273,5279 ----
  0a803e7432938644d0614c5d9ee60670  gcc/config/rs6000/si2vmx.h
  b1a1f1ea8636fe96381989b926619397  gcc/config/rs6000/smmintrin.h
  016514c870054ecd799330bad9520a9d  gcc/config/rs6000/spu2vmx.h
! 40cd285fb3dd80f3bf1933e6e5f29daf  gcc/config/rs6000/sync.md
  e8c76038df323d77e90f69c78138b1fd  gcc/config/rs6000/sysv4.h
  e51499a69ac94adadb730c6c5491b97d  gcc/config/rs6000/sysv4.opt
  0ca73e6f14270f4ed0893f866e64b36f  gcc/config/rs6000/sysv4.opt.urls
*************** f11925c88524d2fd457bf77944da1302  gcc/co
*** 5301,5309 ****
  1537d39f00940796f424d5484f01a94f  gcc/config/rs6000/titan.md
  da79297ad0c4c71553a67c1c8659d7f0  gcc/config/rs6000/tmmintrin.h
  88417b4d808d053378108ca755b5e5ce  gcc/config/rs6000/vec_types.h
! d25d99ecfc5b7d30303b228b0b6b2b9d  gcc/config/rs6000/vector.md
! be8468d388318201cc9599b2a617425e  gcc/config/rs6000/vsx.md
! e01b246a8cdac36ad716112dbba238f9  gcc/config/rs6000/vxworks.h
  879b35d5e026800c40c13e663df8c5f9  gcc/config/rs6000/vxworksae.h
  aa45c89828fac6551d8d57309cf26ec0  gcc/config/rs6000/vxworksmils.h
  44a93bbae0ad5aba424ba7b97cc6914d  gcc/config/rs6000/x-aix
--- 5303,5311 ----
  1537d39f00940796f424d5484f01a94f  gcc/config/rs6000/titan.md
  da79297ad0c4c71553a67c1c8659d7f0  gcc/config/rs6000/tmmintrin.h
  88417b4d808d053378108ca755b5e5ce  gcc/config/rs6000/vec_types.h
! 3392062820ad067ae3abd25781a80d07  gcc/config/rs6000/vector.md
! 5c0b00763ea83f7e38a3012784f40dca  gcc/config/rs6000/vsx.md
! f7ab50c00153b9422ed788ad3b431920  gcc/config/rs6000/vxworks.h
  879b35d5e026800c40c13e663df8c5f9  gcc/config/rs6000/vxworksae.h
  aa45c89828fac6551d8d57309cf26ec0  gcc/config/rs6000/vxworksmils.h
  44a93bbae0ad5aba424ba7b97cc6914d  gcc/config/rs6000/x-aix
*************** be88b902c0fc07fc260a843e527ad245  gcc/co
*** 5326,5334 ****
  59ddeb68971245eee8a59e9be4929548  gcc/config/rx/rx-modes.def
  c7cc18c3c6e80f769c4e27296c120108  gcc/config/rx/rx-opts.h
  32245191419a45d03aadb4ced52df7db  gcc/config/rx/rx-protos.h
! 633e64c754756983e8a15fc510f949f5  gcc/config/rx/rx.cc
  86ad9c6dae7eb8996bb9acae9eccff8d  gcc/config/rx/rx.h
! b13db7b01f1e7237be69d6d38b7a41a1  gcc/config/rx/rx.md
  0329c06217618ce2a83cd6bbd4458da8  gcc/config/rx/rx.opt
  1823f8ae7b80bcaf2f3428c53ab91c64  gcc/config/rx/rx.opt.urls
  032cf36abc28f171fc24229e32796402  gcc/config/rx/t-linux
--- 5328,5336 ----
  59ddeb68971245eee8a59e9be4929548  gcc/config/rx/rx-modes.def
  c7cc18c3c6e80f769c4e27296c120108  gcc/config/rx/rx-opts.h
  32245191419a45d03aadb4ced52df7db  gcc/config/rx/rx-protos.h
! 1decafccaa87d0bb083ca6cdc42199a6  gcc/config/rx/rx.cc
  86ad9c6dae7eb8996bb9acae9eccff8d  gcc/config/rx/rx.h
! 4e3c6906282ee3e3330e489797aa5b3b  gcc/config/rx/rx.md
  0329c06217618ce2a83cd6bbd4458da8  gcc/config/rx/rx.opt
  1823f8ae7b80bcaf2f3428c53ab91c64  gcc/config/rx/rx.opt.urls
  032cf36abc28f171fc24229e32796402  gcc/config/rx/t-linux
*************** b13db7b01f1e7237be69d6d38b7a41a1  gcc/co
*** 5336,5342 ****
  03b77d73823fa1f9bfb7143d562835e4  gcc/config/s390/2064.md
  93969dae64b2f8ab18f3516a4bd24df2  gcc/config/s390/2084.md
  d1ec3fe7ea1ffbba709fcaf32aea2477  gcc/config/s390/2097.md
! 907ad0f4b6f84d87f0e69024fa661a72  gcc/config/s390/2817.md
  5c0ff3e449c0e7dc3fb3feb5f9dcd1ae  gcc/config/s390/2827.md
  321c92d5ec0a46cb781faef7e80e1990  gcc/config/s390/2964.md
  438db9bfd571192a5960c88986d469d6  gcc/config/s390/3906.md
--- 5338,5344 ----
  03b77d73823fa1f9bfb7143d562835e4  gcc/config/s390/2064.md
  93969dae64b2f8ab18f3516a4bd24df2  gcc/config/s390/2084.md
  d1ec3fe7ea1ffbba709fcaf32aea2477  gcc/config/s390/2097.md
! 6bf6a0c01abab02e1cb9cc0da48375ba  gcc/config/s390/2817.md
  5c0ff3e449c0e7dc3fb3feb5f9dcd1ae  gcc/config/s390/2827.md
  321c92d5ec0a46cb781faef7e80e1990  gcc/config/s390/2964.md
  438db9bfd571192a5960c88986d469d6  gcc/config/s390/3906.md
*************** ea440bcad8a276afecfcff0ce6aae6fe  gcc/co
*** 5359,5372 ****
  14c40f85d99aad740c052f55703baf70  gcc/config/s390/s390-opts.h
  aa396b24681954cbcd0cd64bf19d469c  gcc/config/s390/s390-passes.def
  4a9d0190b77f29fbb14fa9706732f297  gcc/config/s390/s390-protos.h
! 20f3b2de8a42040bfaa0b0e10128f9a1  gcc/config/s390/s390.cc
! c945413f70f4d804e12812f916b8d87b  gcc/config/s390/s390.h
! 5dfce09ce6b607fae082f3f41a419c7b  gcc/config/s390/s390.md
  ae1754efd7785ad08c6cc930dd08c7ae  gcc/config/s390/s390.opt
  90a97a731513f3119bb12e022497e9ab  gcc/config/s390/s390.opt.urls
  07efe01a921b4fb261d6e59abf21a268  gcc/config/s390/s390intrin.h
  aa64c0eb4310add8b8e0d1bba0537540  gcc/config/s390/s390x.h
! 5b66afdee0c1d8a1d41b95cf731492ac  gcc/config/s390/subst.md
  551847ee4c38fa1a7e95fd93cdb32f17  gcc/config/s390/t-linux64
  16ce1fc97d4445d3e77bc0f8be121c6a  gcc/config/s390/t-s390
  1a98dd23822e07fe6f355626f930b7c3  gcc/config/s390/tpf.h
--- 5361,5374 ----
  14c40f85d99aad740c052f55703baf70  gcc/config/s390/s390-opts.h
  aa396b24681954cbcd0cd64bf19d469c  gcc/config/s390/s390-passes.def
  4a9d0190b77f29fbb14fa9706732f297  gcc/config/s390/s390-protos.h
! f0ce858972acc6d00fe87e445b3c8ab8  gcc/config/s390/s390.cc
! ae1d48d5851707124525babf8404d97f  gcc/config/s390/s390.h
! f64e1697e0a9a67ef3020649b7e0d7cd  gcc/config/s390/s390.md
  ae1754efd7785ad08c6cc930dd08c7ae  gcc/config/s390/s390.opt
  90a97a731513f3119bb12e022497e9ab  gcc/config/s390/s390.opt.urls
  07efe01a921b4fb261d6e59abf21a268  gcc/config/s390/s390intrin.h
  aa64c0eb4310add8b8e0d1bba0537540  gcc/config/s390/s390x.h
! 8e01d4569b0bce9d89ed5f77e09f07f4  gcc/config/s390/subst.md
  551847ee4c38fa1a7e95fd93cdb32f17  gcc/config/s390/t-linux64
  16ce1fc97d4445d3e77bc0f8be121c6a  gcc/config/s390/t-s390
  1a98dd23822e07fe6f355626f930b7c3  gcc/config/s390/tpf.h
*************** f5e56d5ff903f46152f37df8bef42eb8  gcc/co
*** 5375,5381 ****
  7f0f09b66533c13922e5fc6da2950d60  gcc/config/s390/tpf.opt.urls
  6e57eb27fae922ae85136ef1822dd1c6  gcc/config/s390/vecintrin.h
  ac2fbb945245925177ec51f89c3b712c  gcc/config/s390/vector.md
! b678ee5bccc44afcfafc641ff868a547  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
  863cb3cd0d518ad77cd0acb858da1c2e  gcc/config/sh/constraints.md
  376ad2c04eae328088f98c29c146e5a1  gcc/config/sh/divcost-analysis
--- 5377,5383 ----
  7f0f09b66533c13922e5fc6da2950d60  gcc/config/s390/tpf.opt.urls
  6e57eb27fae922ae85136ef1822dd1c6  gcc/config/s390/vecintrin.h
  ac2fbb945245925177ec51f89c3b712c  gcc/config/s390/vector.md
! 751941c51673f19ecce32d1d460e0161  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
  863cb3cd0d518ad77cd0acb858da1c2e  gcc/config/sh/constraints.md
  376ad2c04eae328088f98c29c146e5a1  gcc/config/sh/divcost-analysis
*************** b0a510bf1f58701f9674f788dad82ea8  gcc/co
*** 5392,5415 ****
  e9dbd0492efb19a466f4e3fc7d56ca09  gcc/config/sh/rtems.h
  ad3ebe150b650b4f81c17838c6fb7d44  gcc/config/sh/rtemself.h
  dfead17f6b810bf033f9fd649084b362  gcc/config/sh/sh-c.cc
! e6c6b89f602f5dabaaff761b0db28d25  gcc/config/sh/sh-mem.cc
  db7b2e9490086922f942532dd544a0f6  gcc/config/sh/sh-modes.def
  fb8513c0c66fb1a6e8d5cde7b08975c5  gcc/config/sh/sh-protos.h
! 4f0dc68143f7ce6e3a71515c53599217  gcc/config/sh/sh.cc
  de5433ad4ca4e28cd54d4ff7e2862435  gcc/config/sh/sh.h
! c224a78f871d5a6955c504366fcf9499  gcc/config/sh/sh.md
  10ed22d9ca9d7ec14fcf6b1a936fbf8d  gcc/config/sh/sh.opt
  8bfaebe9773073f4977ba6b37f472071  gcc/config/sh/sh.opt.urls
  95f5ec03805045e1d73c1e77a70ac975  gcc/config/sh/sh1.md
! f7f855e92d56b1d5449835012d70c86b  gcc/config/sh/sh4-300.md
  fe9e266cedb0e7598f71d98357d80284  gcc/config/sh/sh4.md
  431334859dc2f2fb4096f006957cc6d1  gcc/config/sh/sh4a.md
  cfdd1bb6ebe601b4ecc5ae546c81c25a  gcc/config/sh/sh_optimize_sett_clrt.cc
! 1f488998c272a625bd35d8bd0f67d744  gcc/config/sh/sh_treg_combine.cc
  3028c82ddb0ffa9963584a28c0b6cbf7  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
  5561a4532b44f8176f955ae87b996363  gcc/config/sh/superh.opt.urls
! 9a912ccb4157dca7a96c2b5ddd62f6d1  gcc/config/sh/sync.md
  88130a11ca77c8572260539cc46ef7ac  gcc/config/sh/t-linux
  ad88281b142c81e6c7017a842c281d5f  gcc/config/sh/t-rtems
  38c49facd08b494929a0e44e6ac7a08f  gcc/config/sh/t-sh
--- 5394,5417 ----
  e9dbd0492efb19a466f4e3fc7d56ca09  gcc/config/sh/rtems.h
  ad3ebe150b650b4f81c17838c6fb7d44  gcc/config/sh/rtemself.h
  dfead17f6b810bf033f9fd649084b362  gcc/config/sh/sh-c.cc
! b63b15f14062a886192f5b2308a0983a  gcc/config/sh/sh-mem.cc
  db7b2e9490086922f942532dd544a0f6  gcc/config/sh/sh-modes.def
  fb8513c0c66fb1a6e8d5cde7b08975c5  gcc/config/sh/sh-protos.h
! 84e486cd4d15aa213bbd259ab32d3aa2  gcc/config/sh/sh.cc
  de5433ad4ca4e28cd54d4ff7e2862435  gcc/config/sh/sh.h
! 8ab0e214a050bf5345242ce9f1908b55  gcc/config/sh/sh.md
  10ed22d9ca9d7ec14fcf6b1a936fbf8d  gcc/config/sh/sh.opt
  8bfaebe9773073f4977ba6b37f472071  gcc/config/sh/sh.opt.urls
  95f5ec03805045e1d73c1e77a70ac975  gcc/config/sh/sh1.md
! ee09b0ce63dae54c2ff2eef9f850d4b4  gcc/config/sh/sh4-300.md
  fe9e266cedb0e7598f71d98357d80284  gcc/config/sh/sh4.md
  431334859dc2f2fb4096f006957cc6d1  gcc/config/sh/sh4a.md
  cfdd1bb6ebe601b4ecc5ae546c81c25a  gcc/config/sh/sh_optimize_sett_clrt.cc
! 769bf68fa24a79f0e6f85bb9518e00f5  gcc/config/sh/sh_treg_combine.cc
  3028c82ddb0ffa9963584a28c0b6cbf7  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
  5561a4532b44f8176f955ae87b996363  gcc/config/sh/superh.opt.urls
! c2027f76e1c613f4adb6db82c3d13f2f  gcc/config/sh/sync.md
  88130a11ca77c8572260539cc46ef7ac  gcc/config/sh/t-linux
  ad88281b142c81e6c7017a842c281d5f  gcc/config/sh/t-rtems
  38c49facd08b494929a0e44e6ac7a08f  gcc/config/sh/t-sh
*************** fb6eddf49bf33b95bff884782f73dc7d  gcc/co
*** 5422,5430 ****
  7294dbc57d5bab37880896fbb9fbe893  gcc/config/sol2-d.cc
  1851d233f5874c6c8995bfc6716529b0  gcc/config/sol2-protos.h
  605e41b649128712bf3488c99aa03901  gcc/config/sol2-rust.cc
! f8b2917f3bac10c9a81564048cb3f9f6  gcc/config/sol2-stubs.cc
! 0aea82043a2789e23591a9cf906946d3  gcc/config/sol2.cc
! 15a9016bbc3b4bb11e27e637f6e82273  gcc/config/sol2.h
  50796270314632458d17ee73a2cd660d  gcc/config/sol2.opt
  4667efab34b488f96b36aff3e7c6c90b  gcc/config/sol2.opt.urls
  9b6245dbf34b906e35664b2135d3d709  gcc/config/sparc/biarch64.h
--- 5424,5432 ----
  7294dbc57d5bab37880896fbb9fbe893  gcc/config/sol2-d.cc
  1851d233f5874c6c8995bfc6716529b0  gcc/config/sol2-protos.h
  605e41b649128712bf3488c99aa03901  gcc/config/sol2-rust.cc
! 53a244939227800f19957d9a892cc302  gcc/config/sol2-stubs.cc
! 4dae56c882cb0ac575bd764ae58b2d9b  gcc/config/sol2.cc
! a49c227701d085dc4c49c8a5f5ea5926  gcc/config/sol2.h
  50796270314632458d17ee73a2cd660d  gcc/config/sol2.opt
  4667efab34b488f96b36aff3e7c6c90b  gcc/config/sol2.opt.urls
  9b6245dbf34b906e35664b2135d3d709  gcc/config/sparc/biarch64.h
*************** f8b2917f3bac10c9a81564048cb3f9f6  gcc/co
*** 5432,5438 ****
  bc82d702b596981bb91f981bbbc6233c  gcc/config/sparc/cypress.md
  e45de214cf1939cc532d11bc572c1f50  gcc/config/sparc/default64.h
  8b68c1fc27e877f16802dfb36e63e963  gcc/config/sparc/driver-sparc.cc
! ec18494fb2f7b84b3cfd91563d0c15f9  gcc/config/sparc/freebsd.h
  76eaed7e11b7466b1d7f3909f63ebbf5  gcc/config/sparc/hypersparc.md
  317a3821a6e057d7e79a896e8aefa285  gcc/config/sparc/leon.md
  ddd74ec4e215155b9bd7fcf86cb557d3  gcc/config/sparc/leon5.md
--- 5434,5440 ----
  bc82d702b596981bb91f981bbbc6233c  gcc/config/sparc/cypress.md
  e45de214cf1939cc532d11bc572c1f50  gcc/config/sparc/default64.h
  8b68c1fc27e877f16802dfb36e63e963  gcc/config/sparc/driver-sparc.cc
! 6158278beadf4d70ef0ba8c06187e77c  gcc/config/sparc/freebsd.h
  76eaed7e11b7466b1d7f3909f63ebbf5  gcc/config/sparc/hypersparc.md
  317a3821a6e057d7e79a896e8aefa285  gcc/config/sparc/leon.md
  ddd74ec4e215155b9bd7fcf86cb557d3  gcc/config/sparc/leon5.md
*************** c08812561648d9be8b2c465101f02f55  gcc/co
*** 5460,5466 ****
  0e6d2d27c24d8850325e5f39541238c9  gcc/config/sparc/sparc-opts.h
  710bcf4b6ac9924f665a6ed578c037f2  gcc/config/sparc/sparc-passes.def
  24d69dfb87c13754d1f394397cf82632  gcc/config/sparc/sparc-protos.h
! f38e54026c1e92a40ed859913c7b01ec  gcc/config/sparc/sparc.cc
  baabc77cf540cfecc78f116e0b744ebb  gcc/config/sparc/sparc.h
  baa4d437af36181c641fd909d270531a  gcc/config/sparc/sparc.md
  d35b9f07de59a46cdbdd2bfb5aefaa3e  gcc/config/sparc/sparc.opt
--- 5462,5468 ----
  0e6d2d27c24d8850325e5f39541238c9  gcc/config/sparc/sparc-opts.h
  710bcf4b6ac9924f665a6ed578c037f2  gcc/config/sparc/sparc-passes.def
  24d69dfb87c13754d1f394397cf82632  gcc/config/sparc/sparc-protos.h
! 7ed22cc6ae023ee2be061ca296b615c6  gcc/config/sparc/sparc.cc
  baabc77cf540cfecc78f116e0b744ebb  gcc/config/sparc/sparc.h
  baa4d437af36181c641fd909d270531a  gcc/config/sparc/sparc.md
  d35b9f07de59a46cdbdd2bfb5aefaa3e  gcc/config/sparc/sparc.opt
*************** c684a36c8d565777dc40e1ae3ba54892  gcc/co
*** 5541,5548 ****
  8a504feb45239812d5d6d1365e1c93d9  gcc/config/vax/predicates.md
  e6b7f2881e994ba36a5d4c0cef76e01e  gcc/config/vax/vax-modes.def
  bf9fe0224bba330c7a3463ae86b8bf7f  gcc/config/vax/vax-protos.h
! f74d2ced1f0457e89b45ae2c7750a47a  gcc/config/vax/vax.cc
! fb9ccdbabb11cadb867f4a1b06d19211  gcc/config/vax/vax.h
  3e6bcaa1860e1bf31f1be55de6b6e3ea  gcc/config/vax/vax.md
  c7013330181453774d802642df37d913  gcc/config/vax/vax.opt
  6b9aaec7f058b5b0ddbc9c5cd1f028c3  gcc/config/vax/vax.opt.urls
--- 5543,5550 ----
  8a504feb45239812d5d6d1365e1c93d9  gcc/config/vax/predicates.md
  e6b7f2881e994ba36a5d4c0cef76e01e  gcc/config/vax/vax-modes.def
  bf9fe0224bba330c7a3463ae86b8bf7f  gcc/config/vax/vax-protos.h
! dc2ffce721fbd1b4990bc2f5750a38d4  gcc/config/vax/vax.cc
! 66c0ab6e6d9e5c4e98dfdb4cc2efb041  gcc/config/vax/vax.h
  3e6bcaa1860e1bf31f1be55de6b6e3ea  gcc/config/vax/vax.md
  c7013330181453774d802642df37d913  gcc/config/vax/vax.opt
  6b9aaec7f058b5b0ddbc9c5cd1f028c3  gcc/config/vax/vax.opt.urls
*************** bd2dbcd29207d6720a2bf7fefa19a120  gcc/co
*** 5557,5563 ****
  d6cdac7858d08b8cead2d28a66661275  gcc/config/visium/visium-passes.def
  f8a0009eac88f5ab515601ae54b55cb1  gcc/config/visium/visium-protos.h
  822831e7b5f292deaee34d44008ce23a  gcc/config/visium/visium.cc
! 328d4024b64b9a4b2f4203f0f80e02b6  gcc/config/visium/visium.h
  104eb550ddf9cc976851bd4d1e3e9d7d  gcc/config/visium/visium.md
  3cff36cc3705e28c0fe358569d10ed56  gcc/config/visium/visium.opt
  d308974ee76c98f9c1e01fa5de9567c8  gcc/config/visium/visium.opt.urls
--- 5559,5565 ----
  d6cdac7858d08b8cead2d28a66661275  gcc/config/visium/visium-passes.def
  f8a0009eac88f5ab515601ae54b55cb1  gcc/config/visium/visium-protos.h
  822831e7b5f292deaee34d44008ce23a  gcc/config/visium/visium.cc
! 87d260282d4260cca7578d8c2db8a946  gcc/config/visium/visium.h
  104eb550ddf9cc976851bd4d1e3e9d7d  gcc/config/visium/visium.md
  3cff36cc3705e28c0fe358569d10ed56  gcc/config/visium/visium.opt
  d308974ee76c98f9c1e01fa5de9567c8  gcc/config/visium/visium.opt.urls
*************** aa7aaadd68d34888760a4211e46f08aa  gcc/co
*** 5565,5584 ****
  45d0e4dd9c352329976ea74a927e1147  gcc/config/vms/t-vms
  d1ca39da669836b595db0004d8645cd8  gcc/config/vms/t-vmsnative
  6ead475077be4f1e57a176879a2e0b83  gcc/config/vms/vms-ar.c
! 61b971cb1c34b9f03fd08f65ce5a7bea  gcc/config/vms/vms-c.cc
  c4603dec4151d376a2092ed7555c06d7  gcc/config/vms/vms-crtlmap.map
  5f11a0745b8d07ef3d39481175e0a633  gcc/config/vms/vms-f.cc
  d9d569d1ab5943fa92d094fbf93e50a4  gcc/config/vms/vms-ld.c
  f5b80feecd86600afb44a66247dd6fae  gcc/config/vms/vms-opts.h
  e98fe0b0d84ec790b9f655d1674e58dc  gcc/config/vms/vms-protos.h
  f2caf80293ce10d06176ef71e44c8b0c  gcc/config/vms/vms-stdint.h
! 69741391f9975d09233f411c486fc261  gcc/config/vms/vms.cc
  76eb950dc973b4807d828a286ecab3ea  gcc/config/vms/vms.h
  14a81459406b3ea6d3e25c68905a2295  gcc/config/vms/vms.opt
  4cc4a480573474816840755220793eea  gcc/config/vms/vms.opt.urls
  0131ec30118dce0e850f95bd56d74733  gcc/config/vms/x-vms
  1739b1102621ee9bb19b4b21262af91f  gcc/config/vms/xm-vms.h
! 48fef6e51839e7fc52539605a5905ea8  gcc/config/vx-common.h
  d8d348886e18f3f4d0e4d5e3cdbab411  gcc/config/vxworks-c.cc
  c565a3f7c43348a565a1605ea731b8d1  gcc/config/vxworks-driver.cc
  b89a4346b6702c52ad00dd306499d401  gcc/config/vxworks-dummy.h
--- 5567,5586 ----
  45d0e4dd9c352329976ea74a927e1147  gcc/config/vms/t-vms
  d1ca39da669836b595db0004d8645cd8  gcc/config/vms/t-vmsnative
  6ead475077be4f1e57a176879a2e0b83  gcc/config/vms/vms-ar.c
! e570c4c1ceb2cf21697c4ba631ac0b79  gcc/config/vms/vms-c.cc
  c4603dec4151d376a2092ed7555c06d7  gcc/config/vms/vms-crtlmap.map
  5f11a0745b8d07ef3d39481175e0a633  gcc/config/vms/vms-f.cc
  d9d569d1ab5943fa92d094fbf93e50a4  gcc/config/vms/vms-ld.c
  f5b80feecd86600afb44a66247dd6fae  gcc/config/vms/vms-opts.h
  e98fe0b0d84ec790b9f655d1674e58dc  gcc/config/vms/vms-protos.h
  f2caf80293ce10d06176ef71e44c8b0c  gcc/config/vms/vms-stdint.h
! bcd52e0cbdc007d5c9bb4c5cd003d199  gcc/config/vms/vms.cc
  76eb950dc973b4807d828a286ecab3ea  gcc/config/vms/vms.h
  14a81459406b3ea6d3e25c68905a2295  gcc/config/vms/vms.opt
  4cc4a480573474816840755220793eea  gcc/config/vms/vms.opt.urls
  0131ec30118dce0e850f95bd56d74733  gcc/config/vms/x-vms
  1739b1102621ee9bb19b4b21262af91f  gcc/config/vms/xm-vms.h
! 39433b8738ff3dca1c6cd17072b3ad08  gcc/config/vx-common.h
  d8d348886e18f3f4d0e4d5e3cdbab411  gcc/config/vxworks-c.cc
  c565a3f7c43348a565a1605ea731b8d1  gcc/config/vxworks-driver.cc
  b89a4346b6702c52ad00dd306499d401  gcc/config/vxworks-dummy.h
*************** b78589133088c91d11fd32f7d462edf3  gcc/co
*** 5587,5593 ****
  3476c374b6049ca2b3e35e6db0261dc3  gcc/config/vxworks-smp.opt.urls
  efe651fefed822acd4237bb025cb3565  gcc/config/vxworks-stdint.h
  593a177aa59bd59157c21460946e04ab  gcc/config/vxworks.cc
! 0a5b4e36490dd463718f4d33722b25c2  gcc/config/vxworks.h
  debf4738e76f8015e074d08e09ec4879  gcc/config/vxworks.opt
  9769aed7c4ddd277f27419583c35a522  gcc/config/vxworks.opt.urls
  36a893b52ae4d79dd9eb41107ead34be  gcc/config/vxworks/_vxworks-versions.h
--- 5589,5595 ----
  3476c374b6049ca2b3e35e6db0261dc3  gcc/config/vxworks-smp.opt.urls
  efe651fefed822acd4237bb025cb3565  gcc/config/vxworks-stdint.h
  593a177aa59bd59157c21460946e04ab  gcc/config/vxworks.cc
! b7297ab2b29293ac1283b0463bce7fdd  gcc/config/vxworks.h
  debf4738e76f8015e074d08e09ec4879  gcc/config/vxworks.opt
  9769aed7c4ddd277f27419583c35a522  gcc/config/vxworks.opt.urls
  36a893b52ae4d79dd9eb41107ead34be  gcc/config/vxworks/_vxworks-versions.h
*************** dbd5811fcd8a1caf49e4e9091afdc18c  gcc/co
*** 5624,5636 ****
  9a9ea234526c2b6ec2dde5659d16935c  gcc/config/xtensa/xtensa-opts.h
  f11b25bf61cd607f1829b2d5c5d306b9  gcc/config/xtensa/xtensa-passes.def
  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
--- 5626,5638 ----
  9a9ea234526c2b6ec2dde5659d16935c  gcc/config/xtensa/xtensa-opts.h
  f11b25bf61cd607f1829b2d5c5d306b9  gcc/config/xtensa/xtensa-passes.def
  eabefa7848e30cb14ae3473ccb4f1c5e  gcc/config/xtensa/xtensa-protos.h
! 4838b2189e750e9b86295f62aea1755f  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
! d9cf40bf9b0df212db96e300ad061fdb  gcc/configure
! 72e5ce36df6c38a7dd57bae3ee513396  gcc/configure.ac
  a2bfe87830136c2d55b591b943cecd3f  gcc/configure.tgt
  8a46839a73059f70ef105be9706c2554  gcc/context.cc
  08023c1005def168a8b675813b95d9f4  gcc/context.h
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5641,5647 ****
  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
--- 5643,5649 ----
  a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
  11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 0bb2e2b478755c066c52b17acb122cf2  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** d9b8a76735523ab737e8778b90397d97  gcc/cp
*** 5681,5708 ****
  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
  1a3e309babdfdd0ff5e03d09e6b5870d  gcc/cp/cp-name-hint.h
  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
--- 5683,5710 ----
  43fb116b6976dba04df3110dbcdfeb4b  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
! ee0d659057bf0afbc31841764c4fe443  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! e0be8cf90353d8cd886b9ca5da35689c  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
! 58f3fe93aaf5a16193a551b6f53ec13a  gcc/cp/cp-gimplify.cc
  5deb6a9935508ca534b8ee8e84b2a1cc  gcc/cp/cp-lang.cc
  1a3e309babdfdd0ff5e03d09e6b5870d  gcc/cp/cp-name-hint.h
  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
! c03d801724cde723034668dbc1ada992  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
! b1e8340145433c7f3b22e500b5dd7e3f  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
  42202b0b377b7e5c09546d00532d188a  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
*************** e5cd674ba89cede50da369b84db82527  gcc/cp
*** 5712,5718 ****
  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
--- 5714,5720 ----
  447ddbe59eba62b9a389b9ba11701cfc  gcc/cp/friend.cc
  312df0090f34c36193263da66b5ecbd7  gcc/cp/g++spec.cc
  a29b3e9192657e81a1574fb99466348d  gcc/cp/gen-cxxapi-file.py
! 6043506209835b0aa719f93eded32ee8  gcc/cp/init.cc
  3cc97a4224ad8d5294fa1a55f8777b44  gcc/cp/lambda.cc
  bc388fb8287f2de7cdf4d78eb8f5d998  gcc/cp/lang-specs.h
  ae7c1d49c3ae546f4a980c3ebc22690d  gcc/cp/lex.cc
*************** f8cbed1d91cd99c747c785a97fd9a6d0  gcc/cp
*** 5724,5747 ****
  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
--- 5726,5749 ----
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
  3203a4766ff45d343ad6c570c6f85ddf  gcc/cp/method.cc
! 8e86eb6d046a3ca86dc6d33e08e4532e  gcc/cp/module.cc
! 5af1860ab3b911e2ca1f71f188d9d7eb  gcc/cp/name-lookup.cc
  94a0863bb5120d567c717d513ff59a1d  gcc/cp/name-lookup.h
  54cd670407c3fc4f1778f1561e89ae99  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
! d880956f1c03e6163f884d302199b1a9  gcc/cp/parser.cc
  fbc41b26ea2a336d3636c9d9c565d845  gcc/cp/parser.h
! 9608cba7bff8585a29f2b78b87221d54  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! ba907560f0a0c2c4c1c303c34860c475  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
! e6a800b8f2f93cd8ed05ee026f824eca  gcc/cp/search.cc
! 48e91f37b5d0df9a44f4bc29b9c4b040  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
! 6955b3c66244dc86fb60d020901a9c52  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! 0582410d9d36d0d0475c4a8c6ac150eb  gcc/cp/typeck.cc
  40eb09924b1139e6f7994869420c0c98  gcc/cp/typeck2.cc
  5b57f64aefce1359bfd8f016a43a8424  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
*************** fe61b2918e14694ac3e0e909cacea80f  gcc/cu
*** 5764,5770 ****
  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
--- 5766,5772 ----
  86700ca4710faebe1a0dbd2da6bcc75d  gcc/custom-sarif-properties/digraphs.h
  cdc60d179f923c009f0432beb1054e5b  gcc/custom-sarif-properties/state-graphs.cc
  58306e5ac720b353f4c495abf155e8a1  gcc/custom-sarif-properties/state-graphs.h
! 11bf4d7447e25a0bae3f4abe39396f8a  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
  362a026d745031260b2e4dd8eba9becc  gcc/d/ChangeLog-2008
*************** e432bfc5c605ae0b1beedf0492ad40d1  gcc/d/
*** 5788,5794 ****
  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
--- 5790,5796 ----
  d916ef405eeaa878b1c2ef9dcf535196  gcc/d/Make-lang.in
  426254b45d40584d0597c63f3fd1f889  gcc/d/README.gcc
  5170dc7fc8ad21399dd35a73673a1b1b  gcc/d/config-lang.in
! 033383fe24afcaa8c9772a02f3f8f196  gcc/d/d-attribs.cc
  b28e281d951471e031670e95fba8014d  gcc/d/d-builtins.cc
  20eaa65d0110fa83fb5e34d29f5eaf60  gcc/d/d-codegen.cc
  f0a6fa18f331a5771005c3b319e1d6d9  gcc/d/d-compiler.cc
*************** ee65c9e3e7c3fb1fd0128c23f4130e51  gcc/do
*** 6126,6132 ****
  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
--- 6128,6134 ----
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! e76fc138a8afd08c7aad06f3f44196cc  gcc/doc/extend.texi
  483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
*************** dc4ccd9843d88bc01c909438dabfd6ab  gcc/do
*** 6141,6147 ****
  ae0bcb2e6be7ae6b715e2c00eaf668e0  gcc/doc/gty.texi
  16bc58e98e83e3a41c9417ad0738c650  gcc/doc/headerdirs.texi
  cb2462af7cefb9323958455da8bb29f8  gcc/doc/hostconfig.texi
! bde53a0a190c3a74b047eb2b53c080eb  gcc/doc/ifn.texi
  27f346799737382c572e0b085fa46374  gcc/doc/implement-c.texi
  750c860cd31bb47133ca5da76d82247d  gcc/doc/implement-cxx.texi
  8bed7c13f2521176c0f9f4f79c920551  gcc/doc/include/fdl.texi
--- 6143,6149 ----
  ae0bcb2e6be7ae6b715e2c00eaf668e0  gcc/doc/gty.texi
  16bc58e98e83e3a41c9417ad0738c650  gcc/doc/headerdirs.texi
  cb2462af7cefb9323958455da8bb29f8  gcc/doc/hostconfig.texi
! f99a3eba48a8c4c6b8f5f0539c48fe74  gcc/doc/ifn.texi
  27f346799737382c572e0b085fa46374  gcc/doc/implement-c.texi
  750c860cd31bb47133ca5da76d82247d  gcc/doc/implement-cxx.texi
  8bed7c13f2521176c0f9f4f79c920551  gcc/doc/include/fdl.texi
*************** bde53a0a190c3a74b047eb2b53c080eb  gcc/do
*** 6149,6155 ****
  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
--- 6151,6157 ----
  37d898a82683588b62cca104098ad182  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 55476184f2c3ec08d40e13da303e400c  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
  eab10204e603da3b0039d10f844d1488  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
*************** c2fc9f8e6a1cb39a7237e4ac3d7fcd7f  gcc/do
*** 6189,6195 ****
  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
--- 6191,6197 ----
  b1b6d8120056485e6de69be9493a2129  gcc/doc/lto.texi
  a0300f293e1294f68bbf43478b2f7e96  gcc/doc/makefile.texi
  721e689329cd07ff27ba55b5c090eae1  gcc/doc/match-and-simplify.texi
! c19c8b136cc6c251d48abea5937c3de5  gcc/doc/md.texi
  afaf0b9b413500a77920c3963dcd3978  gcc/doc/objc.texi
  8b826afc7f71e67445cf33bbcd457ab5  gcc/doc/optinfo.texi
  3abb75ff788f5434702f351bf7a279c9  gcc/doc/options.texi
*************** a7f516c3979d392e9372c2369c2b589a  gcc/do
*** 6198,6213 ****
  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
--- 6200,6215 ----
  e54937e427a2584ac4045286c725fab1  gcc/doc/plugins.texi
  55ca097cff451ddbce4b20cdcbb9273e  gcc/doc/poly-int.texi
  213ccf5a355e5d07fc0dcef29825d6dd  gcc/doc/portability.texi
! 76f8fc71e463a97ad4adf329a3a0c2d9  gcc/doc/riscv-ext.texi
! 80620d2d24043b189405087d14062574  gcc/doc/riscv-mcpu.texi
  0a0e5a4479873eec073ad440f5a5ec5b  gcc/doc/riscv-mtune.texi
! 1512e7df17286e8d28c5588a195c1148  gcc/doc/rtl.texi
  b12261ad56bcabd07b4a1b739f271527  gcc/doc/service.texi
! b42247dd1a1b7265b1d45f210d25bc08  gcc/doc/sourcebuild.texi
  9b58fbc10917d12008925e09d91cab55  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
! 9efe8fc96d86922e4398cfa5872f4615  gcc/doc/tm.texi
! 08914227e288a6df12fe435e7ecf01c4  gcc/doc/tm.texi.in
  8c9d03a450c358d77823a84f9c62ba4d  gcc/doc/tree-ssa.texi
  2d263928ebdba30d4e096adf01758e79  gcc/doc/trouble.texi
  83ea8ece47a3447f8da5fddd982c9d29  gcc/doc/ux.texi
*************** df86d4116f050c5e09b21441b286f26c  gcc/dw
*** 6233,6239 ****
  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
--- 6235,6241 ----
  16a220e980897414d87d5a6e30d772ed  gcc/dwarf2out.cc
  419729c0a6128770292e664ef9b6aac7  gcc/dwarf2out.h
  5f6d1c1c6b68b50c4051ffa41f4aed26  gcc/early-remat.cc
! a19db416e8ffd8223146373aec780a72  gcc/emit-rtl.cc
  0453d78326581fbe75df5e5ca8e152f5  gcc/emit-rtl.h
  ebdcfebb5ff512939950e137b9ec8877  gcc/errors.cc
  9b42baa30cba169cfdb199b0368ebbff  gcc/errors.h
*************** b4a18c8d0dacb99b95b772e94f976754  gcc/fi
*** 6261,6272 ****
  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
--- 6263,6274 ----
  1caa253d024b0e3dcf3e6ba5ca8eeab1  gcc/fixed-value.h
  843d7b61f7ebbdf9b9f6d9eeac9db399  gcc/flag-types.h
  edda8d107262aa360baaeafc0bd0d4a1  gcc/flags.h
! f8396c35f56710f2dd577b8f6644d380  gcc/fold-const-call.cc
  0b4405bca4b699887c6a47e1d25b216c  gcc/fold-const-call.h
! ea6b5c7ef50ff662d74bd41a1b063ebe  gcc/fold-const.cc
  52f12f5f49a400327788ee826a094b1e  gcc/fold-const.h
  503251519661f1768b70d9b424bdc12b  gcc/fold-mem-offsets.cc
! eb1f93a243531e471290642ed0642417  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** bcb129d4d143e6ec42b4ddec1fea30b8  gcc/fo
*** 6298,6304 ****
  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
--- 6300,6306 ----
  dd3d4373e33e0a14abdf26814a44662b  gcc/fortran/array.cc
  bc40e87bca719f86583a020eff2d6a73  gcc/fortran/bbt.cc
  71c62c6ee055ceb715a6a53b3b724e5a  gcc/fortran/check.cc
! 6b442bef9d26ed0d7bcf02b1ab728f8e  gcc/fortran/class.cc
  298c8e9139027305d0c5530e148f0c82  gcc/fortran/coarray.cc
  ee80d28f835ba80db395760139037e11  gcc/fortran/config-lang.in
  8a0026117bea2831adebb2edc422fb55  gcc/fortran/constructor.cc
*************** edad5176d72953374d67effefef0a605  gcc/fo
*** 6308,6327 ****
  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
--- 6310,6329 ----
  48e7987762051d8cf68633af2633e50f  gcc/fortran/cpp.h
  213bc611adee1d275a412b3ed4886e79  gcc/fortran/data.cc
  ac7321680382b23989a6637e02dfb80e  gcc/fortran/data.h
! e33ecfaa23c47943e93838bfb62f298a  gcc/fortran/decl.cc
  1e7039f0bf7d560e4fcdb2cf95db4b7d  gcc/fortran/dependency.cc
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
! c0708c6b4fd834b9b9f1753bfdcab877  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
! abfd4846f0f29eb3dc9c8412bd1f0999  gcc/fortran/gfortran.h
! 13d7dc211e7c02525ba3c435e6ea201b  gcc/fortran/gfortran.texi
! 11194f3565a8c394b76bd5117830b0ae  gcc/fortran/gfortranspec.cc
! b192d11ae7d5103254333c10b85bf534  gcc/fortran/interface.cc
  c9c62e1550b9762c19830a6658502236  gcc/fortran/intrinsic.cc
  d7ffa84de49936bfc22cdb2a7ef87800  gcc/fortran/intrinsic.h
  5c41fec8827bcc0e1e524b99ce4bfd71  gcc/fortran/intrinsic.texi
*************** e5c0565c05cf7375c9978273f2e553e7  gcc/fo
*** 6335,6370 ****
  641be6b7a38ff8d6e0719c634e53320c  gcc/fortran/lang.opt
  d00392d3f6683071d547134f20687f32  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
! 2eb2009dd3b44153bd97a223b3facfa0  gcc/fortran/match.cc
  0971e0098b3cb0240602494090ed164b  gcc/fortran/match.h
  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
  2155dafc4405ccdc4c41df7a1a31a496  gcc/fortran/st.cc
! 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
--- 6337,6372 ----
  641be6b7a38ff8d6e0719c634e53320c  gcc/fortran/lang.opt
  d00392d3f6683071d547134f20687f32  gcc/fortran/lang.opt.urls
  c35102e7caaf40998fe2ead86d2716da  gcc/fortran/libgfortran.h
! 4daa4216df55ecc3e4072dd34abcdab0  gcc/fortran/match.cc
  0971e0098b3cb0240602494090ed164b  gcc/fortran/match.h
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
! 499953d37ad4a5c55c557253c98fc4cf  gcc/fortran/module.cc
! 2a0f06d875c4041e49d7cf86eb3cc5b8  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
! 7cb10045bc60792d275188a58c5a8c0c  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
! d8018f6b8422ec272ff0ef8a7bd1d39d  gcc/fortran/primary.cc
! eaa9d40b7d6ad6f96ebb97038304dda1  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
  2155dafc4405ccdc4c41df7a1a31a496  gcc/fortran/st.cc
! 0498d96eda124212ca5b1c393579b0a6  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
! 37ff635937529ccac2d6069c38129001  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
! 9f769120db1677e324b1e700962c3ea1  gcc/fortran/trans-decl.cc
! b6fb13afa4a1b71dec438bb5fc485f2c  gcc/fortran/trans-expr.cc
! 91234b8536ed771e30384ccba8947820  gcc/fortran/trans-intrinsic.cc
  269d2b121570a82898b133a3274071a7  gcc/fortran/trans-io.cc
! 6b0678da78ffbe3abeea1818f31665e1  gcc/fortran/trans-openmp.cc
! 708e65ee2f68d58f3456668c68fe9a57  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  f8cac5e2268c177aff676d2dbb690f51  gcc/fortran/trans-types.cc
  6b00c9b76b80a96feb87d86b4b06102b  gcc/fortran/trans-types.h
*************** a5464198aa6b5015fdf27b2e0f276290  gcc/fo
*** 6373,6387 ****
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
  57ebe36e9e77bcb8eab87809d044e0f1  gcc/fortran/types.def
  2512380133ab0852be268312deda8663  gcc/fp-test.cc
! 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
--- 6375,6389 ----
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
  57ebe36e9e77bcb8eab87809d044e0f1  gcc/fortran/types.def
  2512380133ab0852be268312deda8663  gcc/fp-test.cc
! ffcd589d92263dca99a67b1a9fb561b8  gcc/function-abi.cc
  fe144e1c2a0da30ffc9946e5adab7e6f  gcc/function-abi.h
  45679bb0d98b3e87046958f7576b3770  gcc/function-tests.cc
! fac5129cb8c291cebcc1e4d9b031560e  gcc/function.cc
  797473d7b92327caaa0bc2b71c14bc0d  gcc/function.h
  96e0cc03035051e1904d130ab24fdfb4  gcc/fwprop.cc
  32954fca43f23e905ac77e9879653355  gcc/gcc-ar.cc
  485c27eb32ee3d08c3a797aa09f1e7c5  gcc/gcc-attribute-urlifier.cc
! 36d18ef2b624c8a3eb9f0d36d209825d  gcc/gcc-diagnostic-spec.cc
  b5d3e8bbbb8eaf9e3afad2074381d9b6  gcc/gcc-diagnostic-spec.h
  da0c39774e25ef2fb15801b85139c78e  gcc/gcc-main.cc
  cb61e8e62e8f8253c31da11a151fafb3  gcc/gcc-plugin.h
*************** e4981e3b10513f53ed20b58620dfc56f  gcc/gc
*** 6391,6397 ****
  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
--- 6393,6399 ----
  2e5199869e1ce8b2630e4784fbc6e5e6  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  9110b89a48e29f0f75e8c76eca85c6e2  gcc/gcc-urlifier.h
! cb083f385b77c043fa9d5b314dc0e6c0  gcc/gcc.cc
  09d73a192ef597ac58c7300df5ae4eb3  gcc/gcc.h
  1edfbdaab776ee29780fe98d767e67ed  gcc/gcov-counter.def
  5254cb252da1522a0364a1ef41fa47b1  gcc/gcov-dump.cc
*************** ed5344143eadda13d94953c181df0123  gcc/ge
*** 6411,6417 ****
  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
  0562bf20ae7e03782254312e1073c4c4  gcc/gencodes.cc
--- 6413,6419 ----
  44f67f14c8ebc167c082311145707ddb  gcc/genattr.cc
  1045210e47259cc26a01dcc540c42fdf  gcc/genattrtab.cc
  13ae9750297443610632ba0dc9274a02  gcc/genautomata.cc
! e86a5c94e5e8f0283a6f2cb831f9a64c  gcc/gencfn-macros.cc
  fd409219ef263a27cda92f9d1c4eb36b  gcc/gencheck.cc
  d7f4e4ad676aca80544724e0f51991da  gcc/genchecksum.cc
  0562bf20ae7e03782254312e1073c4c4  gcc/gencodes.cc
*************** fb2d66e9d3218c23bfc681858eeb96d7  gcc/ge
*** 6428,6434 ****
  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
--- 6430,6436 ----
  de4a5ffc62d7e4741e33ab2ab501e601  gcc/gengtype-lex.l
  c739e2bedd7d49bc7a7c4ae61fe92df6  gcc/gengtype-parse.cc
  2d9104574899868a2bcd7c20d1ec2b48  gcc/gengtype-state.cc
! 237cfbef39ab39de5247e709cbcd0ca2  gcc/gengtype.cc
  337148b052ea38466fcac0655bce7ffa  gcc/gengtype.h
  7e9bc10948cd198b2cefa5f28d9dc7a9  gcc/genhooks.cc
  9a8fe8112f937369edbb340fc48b75ac  gcc/genmatch.cc
*************** e8ef831ecab58724c781ef6c239eb959  gcc/gi
*** 6458,6470 ****
  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
--- 6460,6472 ----
  8b1599b40f5a2702947d5d0d54b2abbc  gcc/gimple-crc-optimization.cc
  a15c39c8992a881e7ddd36b0e81d341c  gcc/gimple-expr.cc
  61721564f913cdbebe438f7c378b316e  gcc/gimple-expr.h
! 88e5222c71e8fe4780624fc417dc0a21  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
! bf334d5b92a46499673552c5ba899992  gcc/gimple-iterator.cc
  f625775d4290d87f0c15fb36855776b1  gcc/gimple-iterator.h
  a7d47404d5fd61c66fd504e78960fac2  gcc/gimple-laddress.cc
  189fd651a07168119508569dc83d182d  gcc/gimple-loop-interchange.cc
*************** a7d47404d5fd61c66fd504e78960fac2  gcc/gi
*** 6472,6480 ****
  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
--- 6474,6482 ----
  b829ca99c85ee53d8741a9e6bd0842cc  gcc/gimple-loop-versioning.cc
  a3c0ce653bff24576326a2c5f8a39b01  gcc/gimple-low.cc
  a6a5de8424eee65e836bba5b21f32a6b  gcc/gimple-low.h
! 54de93624274e2e4178b33b729861209  gcc/gimple-lower-bitint.cc
  0ad30ecd31f0473de43171e203bbed3e  gcc/gimple-lower-bitint.h
! a3dff210dd195d7413070490419e4723  gcc/gimple-match-exports.cc
  95ab37dd8c1b67f025a463e428c5f21b  gcc/gimple-match-head.cc
  fc046378b00fb047e166e06622975ba0  gcc/gimple-match.h
  de743ea00fd2b7de01d1041a83c3828c  gcc/gimple-predicate-analysis.cc
*************** a4932ff9aca9b1faf77d94e18d1a98dd  gcc/gi
*** 6503,6517 ****
  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
--- 6505,6519 ----
  e45cb6aa50c3ff1d1592d7f2758cb778  gcc/gimple-range-trace.h
  a6fa6bdf95bbe8ce0cd55afe488296b9  gcc/gimple-range.cc
  b284f979b1dc05312e57543e7aa4d6c4  gcc/gimple-range.h
! 2cee725e7b762a6d67090c46b9b6b59c  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
! 358c52f644d9a63e34d38841245cbaae  gcc/gimple-ssa-sccopy.cc
  ed229440036ea7e3f4f024ff36345e2e  gcc/gimple-ssa-split-paths.cc
  a707182c5c79c8694b0faeca12bcdba0  gcc/gimple-ssa-sprintf.cc
! 93223fccf371c4d63f17138772b09ed9  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
*************** fd706cd70d2b5c6a514eef109a117112  gcc/gi
*** 6530,6536 ****
  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
--- 6532,6538 ----
  83d74df09fe460c465e209cc1370a30b  gcc/gimple.h
  46bdb18976fdb25accadbfdc07f14a8e  gcc/gimplify-me.cc
  cc5b43d0554c69571cd007e727fbb7d1  gcc/gimplify-me.h
! 5581cfb316d184a0a4e7e2b40bb0cfcf  gcc/gimplify.cc
  5015d194d6aebf6d8d4bbb3945a77e27  gcc/gimplify.h
  ba3039c0ed9645080c52c0d4bc46096f  gcc/gimplify_reg_info.h
  83f82d6779ea9f6500c863169abfca55  gcc/ginclude/float.h
*************** f5de8589d497c4d607cadff1ce88dd5c  gcc/hw
*** 6656,6662 ****
  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
--- 6658,6664 ----
  665c1d736f4909ccb17f662f7f060fd7  gcc/hw-doloop.h
  e5e51e93d7d72e1822440531e4d79d1d  gcc/hwint.cc
  b6b1b7e364f00e9287ee1f56254b9be1  gcc/hwint.h
! 7742136cb948b184339798a4556c981b  gcc/ifcvt.cc
  e2229f9ecac43014084b083ddf2d4637  gcc/ifcvt.h
  370b4a8b9decbb822392c32f5fb92a72  gcc/inchash.cc
  bad6404ce4e7f42ff46ce6ae70c77e99  gcc/inchash.h
*************** c4fbf78964d1ce2aab8aa20eea773fa1  gcc/in
*** 6668,6676 ****
  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
--- 6670,6678 ----
  80bc6558521a56fa4936fc0de8d01aca  gcc/insn-addr.h
  7b76bd07f7eca4ab18a5cb546ce1c919  gcc/insn-notes.def
  c7c9628cd16fe3e0263939ceb0a865fa  gcc/int-vector-builder.h
! f86ac0f1bf9201b4a07ff70790169f0a  gcc/internal-fn.cc
! 204cf8b81ac7a709374064e8839c66f8  gcc/internal-fn.def
! 315d7c49c100a8de47177390c93ba205  gcc/internal-fn.h
  8a34b6abb2591b8c30c7fb4187261ee3  gcc/intl.cc
  22c5866f6858fea288e5e2f1adc96e40  gcc/intl.h
  a7d9dfb72122a917ffa9ee90152b059e  gcc/ipa-comdats.cc
*************** a14dec31253b740dd848f2aa1b45206a  gcc/ip
*** 6716,6728 ****
  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
--- 6718,6730 ----
  a4305cc116c71e1a6c238562a0063f9f  gcc/ipa-visibility.cc
  506459e1cbf22101a7eead69b8dee25b  gcc/ipa.cc
  2216d8cfd74d4b7a2bb4de5cb3425736  gcc/ira-build.cc
! b786062b08253ae9d5394902431c543d  gcc/ira-color.cc
  35541d3d67c6affe0600d8ad83e83978  gcc/ira-conflicts.cc
  0381959c1444b3546f46622754914676  gcc/ira-costs.cc
  ceb6470c2a3157ee691a6bcd9c8b0c31  gcc/ira-emit.cc
! c8af03d496284d5b12c149a164095da9  gcc/ira-int.h
! 0cb1b2f22c7deface93fef7bfdec4e8c  gcc/ira-lives.cc
! 6692f9ca281bacd89c570394ef66ac7a  gcc/ira.cc
  788d1861bee2322ed419d2c51e2f738e  gcc/ira.h
  9542ea2b8797fa5a935893fafae08ef3  gcc/is-a.h
  090239f8ee6f441be82d0c8cbeaa00de  gcc/iterator-utils.h
*************** d49cf408f9415ef037523414c6e80764  gcc/lo
*** 6859,6865 ****
  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
--- 6861,6867 ----
  4e64f9a8fc62fcb9b7a7fb3362cccd2f  gcc/lra-assigns.cc
  5d1aa184ea3e3c5990e02acbdc762f00  gcc/lra-coalesce.cc
  147cfecf8bf1cea05242c2f732f06eff  gcc/lra-constraints.cc
! 2b91fedbb37f334369acdf769a0ab194  gcc/lra-eliminations.cc
  ed7c49918557e8e7d34488711171abef  gcc/lra-int.h
  568d6d2d43a7728ab0b54f7e837b653a  gcc/lra-lives.cc
  b6230d4e2eccd718fc469d99ce999ba9  gcc/lra-remat.cc
*************** e0d99466f393722c3e10caf535614ff7  gcc/lt
*** 6904,6910 ****
  351e06833ea0ad58238533d76ea0c2cf  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! a848e0f521c22d33b791f762ce431b74  gcc/m2/ChangeLog
  6c64ada2deff17585163556dd3634dc4  gcc/m2/Make-lang.in
  ed6143d60ab8fbfb423b65ba791d1faf  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6906,6912 ----
  351e06833ea0ad58238533d76ea0c2cf  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! 6ec8cb1a8346fcc63f87b31796d7d3ba  gcc/m2/ChangeLog
  6c64ada2deff17585163556dd3634dc4  gcc/m2/Make-lang.in
  ed6143d60ab8fbfb423b65ba791d1faf  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** d69ea9ed942da62d5acc7f74ea020597  gcc/m2
*** 7039,7045 ****
  c034671eb155a4718ef57376a7598220  gcc/m2/gm2-compiler/P2Build.def
  a6b43b9fe22a1157ef2c14ad6a4cc823  gcc/m2/gm2-compiler/P2SymBuild.def
  1a9558caf63ab90bd1d5d21e5f3875ac  gcc/m2/gm2-compiler/P2SymBuild.mod
! b56a30a819a828a66186d078aa5a59b2  gcc/m2/gm2-compiler/P3Build.bnf
  32026a68f5ed3b2674b262e94e288528  gcc/m2/gm2-compiler/P3Build.def
  66014a705a37e6e267294174174a7023  gcc/m2/gm2-compiler/P3SymBuild.def
  9dc06145a001f197da43b06c4d501535  gcc/m2/gm2-compiler/P3SymBuild.mod
--- 7041,7047 ----
  c034671eb155a4718ef57376a7598220  gcc/m2/gm2-compiler/P2Build.def
  a6b43b9fe22a1157ef2c14ad6a4cc823  gcc/m2/gm2-compiler/P2SymBuild.def
  1a9558caf63ab90bd1d5d21e5f3875ac  gcc/m2/gm2-compiler/P2SymBuild.mod
! 6ae114fb2fba677445fe3990a767ae18  gcc/m2/gm2-compiler/P3Build.bnf
  32026a68f5ed3b2674b262e94e288528  gcc/m2/gm2-compiler/P3Build.def
  66014a705a37e6e267294174174a7023  gcc/m2/gm2-compiler/P3SymBuild.def
  9dc06145a001f197da43b06c4d501535  gcc/m2/gm2-compiler/P3SymBuild.mod
*************** b8301da5c055bee816499790677be317  gcc/m2
*** 7303,7310 ****
  5cb945eb0b9632811147fcc4fe7ebd80  gcc/m2/gm2-libs-iso/SimpleCipher.mod
  8b8a01b2a2ce71ef914ac2c6cc8c3b75  gcc/m2/gm2-libs-iso/StdChans.def
  960165e9a81a4b959a0b8630ea183da5  gcc/m2/gm2-libs-iso/StdChans.mod
! e2ce5b09829edfcec26970649d78d4dc  gcc/m2/gm2-libs-iso/Storage.def
! a08795db1a672c844bd0633473f32299  gcc/m2/gm2-libs-iso/Storage.mod
  be819007a2908ba602c8757b5d53a335  gcc/m2/gm2-libs-iso/StreamFile.def
  7be7230f5b974c4373971f3091048538  gcc/m2/gm2-libs-iso/StreamFile.mod
  de4f977eb05309497e28329d582698b3  gcc/m2/gm2-libs-iso/StringChan.def
--- 7305,7312 ----
  5cb945eb0b9632811147fcc4fe7ebd80  gcc/m2/gm2-libs-iso/SimpleCipher.mod
  8b8a01b2a2ce71ef914ac2c6cc8c3b75  gcc/m2/gm2-libs-iso/StdChans.def
  960165e9a81a4b959a0b8630ea183da5  gcc/m2/gm2-libs-iso/StdChans.mod
! 4f180d6d3586a4ace36f416220cc4b49  gcc/m2/gm2-libs-iso/Storage.def
! d29aa977ef050f69a2c98a29bf975bdd  gcc/m2/gm2-libs-iso/Storage.mod
  be819007a2908ba602c8757b5d53a335  gcc/m2/gm2-libs-iso/StreamFile.def
  7be7230f5b974c4373971f3091048538  gcc/m2/gm2-libs-iso/StreamFile.mod
  de4f977eb05309497e28329d582698b3  gcc/m2/gm2-libs-iso/StringChan.def
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7879,7886 ****
  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
--- 7881,7888 ----
  2a18164ee5f162ac117e6fedb58158a2  gcc/machmode.def
  89d79df4a8d2185bb8557998f075e087  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
! 21fa6a9b1a8a8dd382a659c9f3abe151  gcc/match-sat-alu.pd
! 2a6d418a27bee8a651dbcf1c8c8206ce  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
  14700e76d554c9699481337fa9886be6  gcc/mem-stats.h
*************** a497ad43b29c18aa6006c31050e37f1c  gcc/op
*** 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
--- 7947,7957 ----
  83e2949ab4f0a281b29d45764ee87557  gcc/opt-suggestions.h
  eba7a25f3a38ce52b4cf970cc93f66ea  gcc/optabs-libfuncs.cc
  22f466f2c62ac3f6d1a71c7d7911d694  gcc/optabs-libfuncs.h
! 4132b726fdaa6d52996d787a2681c6f9  gcc/optabs-query.cc
  6e866f616ec7fb7f4c791b5ad349a2cd  gcc/optabs-query.h
  0135b6d221cd61d59fecebf7206e304e  gcc/optabs-tree.cc
  201b2569727bf062f908121f208a860f  gcc/optabs-tree.h
! 063b4d05c7e78b0051bc8dff51cd72e7  gcc/optabs.cc
  e41b2d12060d81ec0196a849b4956aab  gcc/optabs.def
  81371a1b977075ff9a2b9637ac88cfa3  gcc/optabs.h
  10284dae2b1b50618cee778ef473c34c  gcc/optc-gen.awk
*************** c9b2e818258f43e0a779e4c3caa8801d  gcc/op
*** 7965,7971 ****
  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
--- 7967,7973 ----
  59b44247c12669685779dfba9d301863  gcc/opts-diagnostic.h
  dc202dff2d7d4cb632307dc4915602b0  gcc/opts-global.cc
  f55f0f0a86a11d13824924aac8c98a68  gcc/opts-jobserver.h
! c46fad7af98411314518d8c1c272f98d  gcc/opts.cc
  7c2605b6227dcf8eb80f826ac7b07e83  gcc/opts.h
  413859dddc66f1f7d8ea8078e096c288  gcc/ordered-hash-map-tests.cc
  fef443de1557117f8c2847206a2ea8f5  gcc/ordered-hash-map.h
*************** d9e22e28b3080527b0c29e8bc4e38c95  gcc/pa
*** 7976,7982 ****
  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
--- 7978,7984 ----
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  ce920ed7f2cc74b4a9bc390c39f4cbee  gcc/pass_manager.h
  c1386b247569007de9fda83d55b1aebf  gcc/passes.cc
! 66766a0d387afe2dad352418a01420e9  gcc/passes.def
  0355d2054ba5f7935e870d42ea044cbf  gcc/path-coverage.cc
  a804a634cdc9dbcb92434c9e03799a1e  gcc/pex.cc
  b2f9b18f946c2e60e4f6cba0ab2df54e  gcc/pex.h
*************** a98a8f0aa188fa14ae528dfe8be52db4  gcc/po
*** 8012,8018 ****
  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
--- 8014,8020 ----
  8fb747d77281aa1c6e2fbc0f106ef7f5  gcc/poly-int-types.h
  35977a15512165ff40e54711c2edb883  gcc/poly-int.h
  4cd887458a8f36ed38ce5b031dc61b73  gcc/postreload-gcse.cc
! 5427037d6bab9dd24eef9cd5ef652539  gcc/postreload.cc
  c3931890b6ca4b8016e92f1657d4b99d  gcc/predict.cc
  94064e652fd0a138c0dc656a3d96a966  gcc/predict.def
  c6b043ce6b64f82009d2f3763b6360db  gcc/predict.h
*************** bea702966301b6b7e6294ef33ec8b443  gcc/pt
*** 8041,8049 ****
  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
--- 8043,8051 ----
  706c6f6185e00db6f945b89759097531  gcc/pub-sub.cc
  f72a1e84c9facd65dc1c42ee67f21583  gcc/pub-sub.h
  baab0c2ad805d6d5d47b409b65c38351  gcc/range-op-float.cc
! ec6248ff9582260bb420197fc3bd33ab  gcc/range-op-mixed.h
  69b841901021a7600a6c55aa08c8a6ab  gcc/range-op-ptr.cc
! c58e436519bc9e25f230c4d8e5ee7944  gcc/range-op.cc
  52c9ff8b4fcf2afdee9b9f331411b42e  gcc/range-op.h
  5224210104d440bc7bae81953ca2e7f1  gcc/range.cc
  19ba1dec644467b75ebc4246acf8ff8f  gcc/range.h
*************** d1e8f06dfe7f0d64ebabef7c52035296  gcc/re
*** 8056,8062 ****
  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
--- 8058,8064 ----
  45b87c4baefe4e526664defa3b15f968  gcc/real.h
  034d6804511ba5d0c988e1e98ab47d5d  gcc/realmpfr.cc
  5ada18d8279938c02c4d9f3751acf660  gcc/realmpfr.h
! 16839ef6c087a385aff94bee3db6322b  gcc/recog.cc
  6f9d8ee740272502fb8e3e9b6644d7c9  gcc/recog.h
  abf7aba0b8c470a07c63a7d04c3052e6  gcc/ree.cc
  4b5ca674534bbf5c690ccd0e5ec97cbc  gcc/reg-notes.def
*************** cbae359b740a87a489f2cbe509ba7e6d  gcc/re
*** 8065,8079 ****
  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/regset.h
  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
--- 8067,8081 ----
  e871bb7c9089d9ade710735b0803cff1  gcc/regcprop.h
  435320d85f05d8915fcbd110db42a930  gcc/regenerate-attr-urls.py
  f0820f7cb3f73e347a678f682c773982  gcc/regenerate-opt-urls.py
! b433e69ef99b23dee8b8e0818e8f41e6  gcc/reginfo.cc
! b95c7dd98f46e4eb8fdda3e464b5bace  gcc/regrename.cc
  3305b4e257d68cf35538509ba53235c4  gcc/regrename.h
  6580474411878a2b9597d3b70f7de88d  gcc/regs.h
  f6ee3573d12b2bf0797c81e08e824072  gcc/regset.h
  a32ba270250c91347c389ba4b4303641  gcc/regstat.cc
  d7256ea03d4e168a4a414594c61b73e9  gcc/reload.cc
  1c398a12a3ea644ebd07512d5b4e65c5  gcc/reload.h
! f93c42d3d023de4fd228be2b4d3e9e6c  gcc/reload1.cc
  6ddd7549367691be792f4381bfba4159  gcc/reorg.cc
  2980b1fff29a56dc47a0d37106e263be  gcc/resource.cc
  7d3ffe0904b67a6517b76695b2da9665  gcc/resource.h
*************** f3e87a0023b856d08711692c25499feb  gcc/rt
*** 8092,8098 ****
  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
--- 8094,8100 ----
  82782cb9a0b1d420ccdaeb45e17c49f5  gcc/rtl-ssa/functions.cc
  57adbb8825f146a65a4d4f62983ff9e6  gcc/rtl-ssa/functions.h
  b9205c8e82c85da2f7a035b090000f11  gcc/rtl-ssa/insn-utils.h
! ad3632fe65bd554592a0dc659fe5e021  gcc/rtl-ssa/insns.cc
  39a90a513fe2cc8637f8df109dbb0e16  gcc/rtl-ssa/insns.h
  93f7cdc164ed1bff5e2d2492fb7deed3  gcc/rtl-ssa/internals.h
  b437011708852e18def6acbf8fc4e1b7  gcc/rtl-ssa/internals.inl
*************** eab7365dceccf86b8e9a8ccbb365afc3  gcc/rt
*** 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
--- 8105,8112 ----
  40583244827449be4bd28679b4068f04  gcc/rtl-ssa/predicates.h
  24f0dd01b35b9a9b7f5bf7db574be3ec  gcc/rtl-tests.cc
  27956813d0124f5b5ec60d5a48840a34  gcc/rtl.cc
! 62fd7106098dbb19552824e445b591c7  gcc/rtl.def
! 99fe063ed00930c8cefd14605bf76c9d  gcc/rtl.h
  78a6761be9094aabb776bbba41b1906f  gcc/rtlanal.cc
  57073d447ccb92aa7b0276e4471824df  gcc/rtlanal.h
  9a5e61517f096479200fef046f8b2d35  gcc/rtlhash.cc
*************** ff662645190de703b9423727e52d659c  gcc/rt
*** 8116,8127 ****
  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
  c08e21c65a155ba30f72631681911034  gcc/rust/ast/rust-ast-builder.h
! bceb109492170e91c8c295d88c9e5961  gcc/rust/ast/rust-ast-collector.cc
  a777fb86e5d41d829721554ee8a81ca7  gcc/rust/ast/rust-ast-collector.h
  98b8c7bc7c7460959df0b63f43d595ee  gcc/rust/ast/rust-ast-dump.cc
  a3c39938de79362236289dd94cc979bb  gcc/rust/ast/rust-ast-dump.h
--- 8118,8129 ----
  92e356710b1aae5aaabc8f47d6977fff  gcc/run-rtl-passes.cc
  f4eae48a3e90b34e88b5789e54f5f29a  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! efcc9a1ff34733d99b4b5ced1f7677c5  gcc/rust/ChangeLog
  c37ff78061953b076ac2eb5551b37be1  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  fbd9e5dbbbf2e1a3e28d730525b8eb78  gcc/rust/ast/rust-ast-builder.cc
  c08e21c65a155ba30f72631681911034  gcc/rust/ast/rust-ast-builder.h
! aa84fe05b38e2bb5a557da41197c2b73  gcc/rust/ast/rust-ast-collector.cc
  a777fb86e5d41d829721554ee8a81ca7  gcc/rust/ast/rust-ast-collector.h
  98b8c7bc7c7460959df0b63f43d595ee  gcc/rust/ast/rust-ast-dump.cc
  a3c39938de79362236289dd94cc979bb  gcc/rust/ast/rust-ast-dump.h
*************** e84ec0880b45e2e86d61f0d36c314317  gcc/ru
*** 8168,8185 ****
  4d12359a7a47b6d290998ff743d3b250  gcc/rust/backend/rust-builtins.h
  841c4de1fb9c8ae4e98cfaf77ce23ebc  gcc/rust/backend/rust-compile-asm.cc
  f2a74dec153c7d458110255bddcd7c47  gcc/rust/backend/rust-compile-asm.h
! 111bf2f91c54323826776a521d970b70  gcc/rust/backend/rust-compile-base.cc
  bb0150a6ba6d60262a1b33393f8d5341  gcc/rust/backend/rust-compile-base.h
  fd2bc9cab100ad48a45eff369cdaa1af  gcc/rust/backend/rust-compile-block.cc
  f6ccf3e6550e5f3d1e7f0903fad16e00  gcc/rust/backend/rust-compile-block.h
  84d2efe344d04876bdef59c09e170495  gcc/rust/backend/rust-compile-context.cc
  6bc78d73b506cf623b5f0e27fdc8326e  gcc/rust/backend/rust-compile-context.h
! f78bbbef53eba04c0dc10812db205de0  gcc/rust/backend/rust-compile-expr.cc
! 02d50055305164dd0cc5fff5dd879d8d  gcc/rust/backend/rust-compile-expr.h
  d2787752d55665c5f6a670bcb3949817  gcc/rust/backend/rust-compile-extern.h
  154038c60400f9e4a8ead9dcc5ea2388  gcc/rust/backend/rust-compile-fnparam.cc
  8c98ceabcde4b8a1cc6e31c5186c9656  gcc/rust/backend/rust-compile-fnparam.h
! f2f769661a2bb93e87b5954861eecacf  gcc/rust/backend/rust-compile-implitem.cc
  be9ce3db6b795d9db2585b15e17f476d  gcc/rust/backend/rust-compile-implitem.h
  59ae6f1ab24ae2166c53f3547a682f93  gcc/rust/backend/rust-compile-intrinsic.cc
  a1fb8689400958af8126ae9c477c873e  gcc/rust/backend/rust-compile-intrinsic.h
--- 8170,8187 ----
  4d12359a7a47b6d290998ff743d3b250  gcc/rust/backend/rust-builtins.h
  841c4de1fb9c8ae4e98cfaf77ce23ebc  gcc/rust/backend/rust-compile-asm.cc
  f2a74dec153c7d458110255bddcd7c47  gcc/rust/backend/rust-compile-asm.h
! 2fdbba88097477ca13fdaae412d8f8eb  gcc/rust/backend/rust-compile-base.cc
  bb0150a6ba6d60262a1b33393f8d5341  gcc/rust/backend/rust-compile-base.h
  fd2bc9cab100ad48a45eff369cdaa1af  gcc/rust/backend/rust-compile-block.cc
  f6ccf3e6550e5f3d1e7f0903fad16e00  gcc/rust/backend/rust-compile-block.h
  84d2efe344d04876bdef59c09e170495  gcc/rust/backend/rust-compile-context.cc
  6bc78d73b506cf623b5f0e27fdc8326e  gcc/rust/backend/rust-compile-context.h
! 3203afd45bdba60c1032acc07c1825c9  gcc/rust/backend/rust-compile-expr.cc
! 6e739c086dbb3e247abd2999667136e6  gcc/rust/backend/rust-compile-expr.h
  d2787752d55665c5f6a670bcb3949817  gcc/rust/backend/rust-compile-extern.h
  154038c60400f9e4a8ead9dcc5ea2388  gcc/rust/backend/rust-compile-fnparam.cc
  8c98ceabcde4b8a1cc6e31c5186c9656  gcc/rust/backend/rust-compile-fnparam.h
! 0936bd51bfcfadd02aa0b306f1df3a55  gcc/rust/backend/rust-compile-implitem.cc
  be9ce3db6b795d9db2585b15e17f476d  gcc/rust/backend/rust-compile-implitem.h
  59ae6f1ab24ae2166c53f3547a682f93  gcc/rust/backend/rust-compile-intrinsic.cc
  a1fb8689400958af8126ae9c477c873e  gcc/rust/backend/rust-compile-intrinsic.h
*************** ce6124f6342485eba9fc0c1525c93d1a  gcc/ru
*** 8201,8207 ****
  a9a83e514f16f22fdc6e72fcb2e37a14  gcc/rust/backend/rust-compile.h
  53b4d6a019435dade0320636db64f287  gcc/rust/backend/rust-constexpr.cc
  8b7d1489d3387b799f0272f52df62581  gcc/rust/backend/rust-constexpr.h
! 44cf2d34db2d4a252d6db0acd62d9b85  gcc/rust/backend/rust-intrinsic-handlers.cc
  91a625c9449712b5311b773867f2c91f  gcc/rust/backend/rust-intrinsic-handlers.h
  fe6f5539b06a5b2b5c8179da42f9cd0d  gcc/rust/backend/rust-mangle-legacy.cc
  3ff8e3c97c56af610fb789104c385560  gcc/rust/backend/rust-mangle-v0.cc
--- 8203,8209 ----
  a9a83e514f16f22fdc6e72fcb2e37a14  gcc/rust/backend/rust-compile.h
  53b4d6a019435dade0320636db64f287  gcc/rust/backend/rust-constexpr.cc
  8b7d1489d3387b799f0272f52df62581  gcc/rust/backend/rust-constexpr.h
! ec5cf22764b704e90be2f93cac1c16bf  gcc/rust/backend/rust-intrinsic-handlers.cc
  91a625c9449712b5311b773867f2c91f  gcc/rust/backend/rust-intrinsic-handlers.h
  fe6f5539b06a5b2b5c8179da42f9cd0d  gcc/rust/backend/rust-mangle-legacy.cc
  3ff8e3c97c56af610fb789104c385560  gcc/rust/backend/rust-mangle-v0.cc
*************** ffd785acdfbb1eba43f3b1cb6828c17c  gcc/ru
*** 8300,8306 ****
  bbab9ad0ba3bffd8f8502d2bafaf47cf  gcc/rust/checks/errors/feature/rust-feature-collector.h
  f3e7f9998a5fcd5ef243ba6881006a5c  gcc/rust/checks/errors/feature/rust-feature-defs-rfl.h
  563d237ceb9c4fea2076fb3150468741  gcc/rust/checks/errors/feature/rust-feature-defs.h
! c7a2444814a71319ab50e37ac0395ec8  gcc/rust/checks/errors/feature/rust-feature-gate.cc
  eee27a8aecb127e10844eddccadf13d9  gcc/rust/checks/errors/feature/rust-feature-gate.h
  e227787587d4567c45f9966f8b82db7b  gcc/rust/checks/errors/feature/rust-feature-store.cc
  2947cb614792b8cb8d655e3661870770  gcc/rust/checks/errors/feature/rust-feature-store.h
--- 8302,8308 ----
  bbab9ad0ba3bffd8f8502d2bafaf47cf  gcc/rust/checks/errors/feature/rust-feature-collector.h
  f3e7f9998a5fcd5ef243ba6881006a5c  gcc/rust/checks/errors/feature/rust-feature-defs-rfl.h
  563d237ceb9c4fea2076fb3150468741  gcc/rust/checks/errors/feature/rust-feature-defs.h
! dc1b258546cfaa104a50cfb132bba0b0  gcc/rust/checks/errors/feature/rust-feature-gate.cc
  eee27a8aecb127e10844eddccadf13d9  gcc/rust/checks/errors/feature/rust-feature-gate.h
  e227787587d4567c45f9966f8b82db7b  gcc/rust/checks/errors/feature/rust-feature-store.cc
  2947cb614792b8cb8d655e3661870770  gcc/rust/checks/errors/feature/rust-feature-store.h
*************** ae661cfd7b4e13f7428e1fc2568db32c  gcc/ru
*** 8317,8323 ****
  05be35df2802adddd997ce762a360cfb  gcc/rust/checks/errors/privacy/rust-pub-restricted-visitor.h
  2efbc6d644df7e2d6be35d17360c147d  gcc/rust/checks/errors/privacy/rust-reachability.cc
  7b312566736776dc642e0ac6069ee674  gcc/rust/checks/errors/privacy/rust-reachability.h
! b7c4e379cff5779afde61a662b051bb7  gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc
  f7b06cf79a55c9659bdf40d25e0bf4b1  gcc/rust/checks/errors/privacy/rust-visibility-resolver.h
  2242ee9c3a9e335cce55e7458bef54aa  gcc/rust/checks/errors/rust-ast-validation.cc
  8a47aa2db46c3e82da2be3ad19266b53  gcc/rust/checks/errors/rust-ast-validation.h
--- 8319,8325 ----
  05be35df2802adddd997ce762a360cfb  gcc/rust/checks/errors/privacy/rust-pub-restricted-visitor.h
  2efbc6d644df7e2d6be35d17360c147d  gcc/rust/checks/errors/privacy/rust-reachability.cc
  7b312566736776dc642e0ac6069ee674  gcc/rust/checks/errors/privacy/rust-reachability.h
! ba57b95212e406a3e834f9ed1cdf00e0  gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc
  f7b06cf79a55c9659bdf40d25e0bf4b1  gcc/rust/checks/errors/privacy/rust-visibility-resolver.h
  2242ee9c3a9e335cce55e7458bef54aa  gcc/rust/checks/errors/rust-ast-validation.cc
  8a47aa2db46c3e82da2be3ad19266b53  gcc/rust/checks/errors/rust-ast-validation.h
*************** bd02f07bc0449d5332cbe841ea6407f2  gcc/ru
*** 8346,8352 ****
  747ddc08d2d075789af43eefe97866a1  gcc/rust/checks/lints/unused/rust-unused-context.cc
  853df2211803f255982f2b5aca075734  gcc/rust/checks/lints/unused/rust-unused-context.h
  a5565d318380d1fcdf7d319909cb2fc8  gcc/rust/config-lang.in
! dc9de059c86eeb41384ccbbdf90c8ccc  gcc/rust/expand/rust-cfg-strip.cc
  91b9c52da52e84509eead7c6bcf889c4  gcc/rust/expand/rust-cfg-strip.h
  4e8b13587555bf85dfdd0139cf368a0d  gcc/rust/expand/rust-derive-clone.cc
  79d1eb8e6eeece040b532c2494bd883f  gcc/rust/expand/rust-derive-clone.h
--- 8348,8354 ----
  747ddc08d2d075789af43eefe97866a1  gcc/rust/checks/lints/unused/rust-unused-context.cc
  853df2211803f255982f2b5aca075734  gcc/rust/checks/lints/unused/rust-unused-context.h
  a5565d318380d1fcdf7d319909cb2fc8  gcc/rust/config-lang.in
! c6bd01ebf8e26298d020d92b08813e20  gcc/rust/expand/rust-cfg-strip.cc
  91b9c52da52e84509eead7c6bcf889c4  gcc/rust/expand/rust-cfg-strip.h
  4e8b13587555bf85dfdd0139cf368a0d  gcc/rust/expand/rust-derive-clone.cc
  79d1eb8e6eeece040b532c2494bd883f  gcc/rust/expand/rust-derive-clone.h
*************** f27b7d7665a02b4f5288be721ee7cd3e  gcc/ru
*** 8380,8387 ****
  bc1e13e9ae89f76aed9dae3ec38022a3  gcc/rust/expand/rust-macro-builtins-helpers.cc
  26c45cd5c08834c9402a74d292e4f355  gcc/rust/expand/rust-macro-builtins-helpers.h
  e78b00ce2aed15088c09bf10baaf4265  gcc/rust/expand/rust-macro-builtins-include.cc
! 8ec129a05e6e88dcd3ff02e4fe57e423  gcc/rust/expand/rust-macro-builtins-location.cc
! 3cc7a61e5653feaa71171c95515773f3  gcc/rust/expand/rust-macro-builtins-log-debug.cc
  3056a545c61cc2eac5db256ee4360c75  gcc/rust/expand/rust-macro-builtins-offset-of.cc
  501956889da485e4cfda285aef1c1db5  gcc/rust/expand/rust-macro-builtins-test-bench.cc
  501956889da485e4cfda285aef1c1db5  gcc/rust/expand/rust-macro-builtins-trait.cc
--- 8382,8389 ----
  bc1e13e9ae89f76aed9dae3ec38022a3  gcc/rust/expand/rust-macro-builtins-helpers.cc
  26c45cd5c08834c9402a74d292e4f355  gcc/rust/expand/rust-macro-builtins-helpers.h
  e78b00ce2aed15088c09bf10baaf4265  gcc/rust/expand/rust-macro-builtins-include.cc
! 0abb5be76faa5a6027272206e2b99af8  gcc/rust/expand/rust-macro-builtins-location.cc
! fce01472b700f45117d7e279a8b7e817  gcc/rust/expand/rust-macro-builtins-log-debug.cc
  3056a545c61cc2eac5db256ee4360c75  gcc/rust/expand/rust-macro-builtins-offset-of.cc
  501956889da485e4cfda285aef1c1db5  gcc/rust/expand/rust-macro-builtins-test-bench.cc
  501956889da485e4cfda285aef1c1db5  gcc/rust/expand/rust-macro-builtins-trait.cc
*************** edace426f0e4e28c4397a27133ae4cdd  gcc/ru
*** 8418,8424 ****
  09e01bbdd69f01beb32affaaca018c86  gcc/rust/hir/rust-ast-lower-struct-field-expr.h
  484c747a04a639463ce0de8d16a792dc  gcc/rust/hir/rust-ast-lower-type.cc
  117bb38f7e034f149d3f509bf5a3e24b  gcc/rust/hir/rust-ast-lower-type.h
! 56c1bab9d335b848e8039bae8152b445  gcc/rust/hir/rust-ast-lower.cc
  c1ece1677d7766c75e292c36ec7d4d74  gcc/rust/hir/rust-ast-lower.h
  b3f934462bc485ce6a92229957587b2d  gcc/rust/hir/rust-hir-dump.cc
  0e7e3cab911dea4b76dcbb3b282da69d  gcc/rust/hir/rust-hir-dump.h
--- 8420,8426 ----
  09e01bbdd69f01beb32affaaca018c86  gcc/rust/hir/rust-ast-lower-struct-field-expr.h
  484c747a04a639463ce0de8d16a792dc  gcc/rust/hir/rust-ast-lower-type.cc
  117bb38f7e034f149d3f509bf5a3e24b  gcc/rust/hir/rust-ast-lower-type.h
! 716ebfa87380ead8a45f8b513f494183  gcc/rust/hir/rust-ast-lower.cc
  c1ece1677d7766c75e292c36ec7d4d74  gcc/rust/hir/rust-ast-lower.h
  b3f934462bc485ce6a92229957587b2d  gcc/rust/hir/rust-hir-dump.cc
  0e7e3cab911dea4b76dcbb3b282da69d  gcc/rust/hir/rust-hir-dump.h
*************** d69ed1dc862f9b0191138c8e62a6fb8e  gcc/ru
*** 8432,8438 ****
  c614345abe86d83c7906a4aacb42e8c8  gcc/rust/hir/tree/rust-hir-full.h
  2db585f68d3310e8eb15a16de2b77777  gcc/rust/hir/tree/rust-hir-generic-param.cc
  684c0083d527a7a3e995d31f50b66857  gcc/rust/hir/tree/rust-hir-generic-param.h
! 2451e888188724451f17384b4da9e51a  gcc/rust/hir/tree/rust-hir-item.cc
  2d082f479d7e581cc2da342e572de33d  gcc/rust/hir/tree/rust-hir-item.h
  c8961f38906a566e92932d33a5fa86b0  gcc/rust/hir/tree/rust-hir-literal.h
  e4feee22ce999059cfd7e5e796d909ca  gcc/rust/hir/tree/rust-hir-node.h
--- 8434,8440 ----
  c614345abe86d83c7906a4aacb42e8c8  gcc/rust/hir/tree/rust-hir-full.h
  2db585f68d3310e8eb15a16de2b77777  gcc/rust/hir/tree/rust-hir-generic-param.cc
  684c0083d527a7a3e995d31f50b66857  gcc/rust/hir/tree/rust-hir-generic-param.h
! 6bc83f0cace7c156c2ab5cde3e202ada  gcc/rust/hir/tree/rust-hir-item.cc
  2d082f479d7e581cc2da342e572de33d  gcc/rust/hir/tree/rust-hir-item.h
  c8961f38906a566e92932d33a5fa86b0  gcc/rust/hir/tree/rust-hir-literal.h
  e4feee22ce999059cfd7e5e796d909ca  gcc/rust/hir/tree/rust-hir-node.h
*************** ccd3cbefb5cdb3be3ec334f37df705e3  gcc/ru
*** 8449,8470 ****
  94e4c15a6dd836b656debd8fb5f48ed6  gcc/rust/hir/tree/rust-hir-type-no-bounds.h
  fe7399a4085a4706a055e17069f80d80  gcc/rust/hir/tree/rust-hir-type.cc
  ec54250775efe40c60973c75aa15aa8c  gcc/rust/hir/tree/rust-hir-type.h
! 28694ce0adef371fb0e422776f9e7f99  gcc/rust/hir/tree/rust-hir-visibility.h
  06acb5efb0cabb2e97bc67d95da8073e  gcc/rust/hir/tree/rust-hir-visitable.h
  014ac187cd84944fce4caa0e1d257b34  gcc/rust/hir/tree/rust-hir-visitor.cc
  2f5012f50779b2cc8f0110750a33b31d  gcc/rust/hir/tree/rust-hir-visitor.h
! d07a3a5f5b9d7004ca327b9c691c2427  gcc/rust/hir/tree/rust-hir.cc
  740a251c7a11b6b3d56b5a01f9912174  gcc/rust/hir/tree/rust-hir.h
  f357dcf5713381e22c7036dfc40716f1  gcc/rust/lang-specs.h
! a592256ae3a29b72f13dc4c89e94ae71  gcc/rust/lang.opt
  a11b51758cadbfbc20e4c2969af1aa85  gcc/rust/lang.opt.urls
  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
  305d124c003086dce48df448a934cc9a  gcc/rust/metadata/rust-export-metadata.h
  652386fd7967c2be527d9274c7b4c62b  gcc/rust/metadata/rust-extern-crate.cc
  07e1cf1bd928e3db3458bc6d8ca8a347  gcc/rust/metadata/rust-extern-crate.h
--- 8451,8472 ----
  94e4c15a6dd836b656debd8fb5f48ed6  gcc/rust/hir/tree/rust-hir-type-no-bounds.h
  fe7399a4085a4706a055e17069f80d80  gcc/rust/hir/tree/rust-hir-type.cc
  ec54250775efe40c60973c75aa15aa8c  gcc/rust/hir/tree/rust-hir-type.h
! bba7760438da8adce1386d3e1176abd0  gcc/rust/hir/tree/rust-hir-visibility.h
  06acb5efb0cabb2e97bc67d95da8073e  gcc/rust/hir/tree/rust-hir-visitable.h
  014ac187cd84944fce4caa0e1d257b34  gcc/rust/hir/tree/rust-hir-visitor.cc
  2f5012f50779b2cc8f0110750a33b31d  gcc/rust/hir/tree/rust-hir-visitor.h
! 1fc2b5173d2337dfa63aa720ae2ca534  gcc/rust/hir/tree/rust-hir.cc
  740a251c7a11b6b3d56b5a01f9912174  gcc/rust/hir/tree/rust-hir.h
  f357dcf5713381e22c7036dfc40716f1  gcc/rust/lang-specs.h
! 3b09f754b9f5e335e0b3f68b8506fa4e  gcc/rust/lang.opt
  a11b51758cadbfbc20e4c2969af1aa85  gcc/rust/lang.opt.urls
  37d2c9999aa0dbb0df068a1ae29137fa  gcc/rust/lex/rust-input-source.h
! ce4fba95ea7e4feff6057c8a17ee976a  gcc/rust/lex/rust-lex.cc
! 419d2d90639924f8f79b1f4adae847d4  gcc/rust/lex/rust-lex.h
  30de1c873c0ade752ea45e73f5ea3b17  gcc/rust/lex/rust-token.cc
! 9409a794ae512a78c67b5d860d9ce516  gcc/rust/lex/rust-token.h
  fe40f8618a9f5a5f007bc1a81fe45d3a  gcc/rust/logo.png
! 9d4ee6cff80ef10324f5e37df8012c86  gcc/rust/metadata/rust-export-metadata.cc
  305d124c003086dce48df448a934cc9a  gcc/rust/metadata/rust-export-metadata.h
  652386fd7967c2be527d9274c7b4c62b  gcc/rust/metadata/rust-extern-crate.cc
  07e1cf1bd928e3db3458bc6d8ca8a347  gcc/rust/metadata/rust-extern-crate.h
*************** fe40f8618a9f5a5f007bc1a81fe45d3a  gcc/ru
*** 8475,8492 ****
  dcbc600defe89f418c72fb56de980c97  gcc/rust/parse/rust-cfg-parser.h
  3883e0105a1a6129a0f9c6847420944c  gcc/rust/parse/rust-parse-error.h
  a150e926bd6e3d95e1006ef83ba5bc58  gcc/rust/parse/rust-parse-impl-attribute.hxx
! 5cb1a11e82fe180d5382b22d4ea856f6  gcc/rust/parse/rust-parse-impl-expr.hxx
  7cd5687bb8dc329dfcb8bfbc99b456e1  gcc/rust/parse/rust-parse-impl-lexer.cc
  123b237f788df6a919268f90d2188425  gcc/rust/parse/rust-parse-impl-macro.cc
  9b0425456c50b968cfb7e36b64f0f362  gcc/rust/parse/rust-parse-impl-macro.hxx
  d62839a7e1b61c00aa41b146304cd729  gcc/rust/parse/rust-parse-impl-path.hxx
! 3535076fa8d48befa963fce350256f23  gcc/rust/parse/rust-parse-impl-pattern.hxx
  ebc262f7414d034296b72ab859fdc482  gcc/rust/parse/rust-parse-impl-ttree.hxx
  c29fa936687b478a9889f3380ee0df68  gcc/rust/parse/rust-parse-impl-utils.hxx
! fa441f482ad5676a141d9068c116c062  gcc/rust/parse/rust-parse-impl.hxx
  8188f5994da36c8911bcd5425a5ff10d  gcc/rust/parse/rust-parse-utils.h
! d60ac257492f0b2d13c8c305707dd04a  gcc/rust/parse/rust-parse.cc
! 14f97ba3d1d98d270b0582ff9b0ae7a2  gcc/rust/parse/rust-parse.h
  2f3ffa4e5b28a059fadd881c085fd620  gcc/rust/resolve/rust-ast-resolve.h
  7bbf4878ffef5aca403c3c2d662b02e5  gcc/rust/resolve/rust-default-resolver.cc
  b7996557d00b477e5b56587a0f238cd4  gcc/rust/resolve/rust-default-resolver.h
--- 8477,8494 ----
  dcbc600defe89f418c72fb56de980c97  gcc/rust/parse/rust-cfg-parser.h
  3883e0105a1a6129a0f9c6847420944c  gcc/rust/parse/rust-parse-error.h
  a150e926bd6e3d95e1006ef83ba5bc58  gcc/rust/parse/rust-parse-impl-attribute.hxx
! 8321cad7f1855724ca628a7f22b412e0  gcc/rust/parse/rust-parse-impl-expr.hxx
  7cd5687bb8dc329dfcb8bfbc99b456e1  gcc/rust/parse/rust-parse-impl-lexer.cc
  123b237f788df6a919268f90d2188425  gcc/rust/parse/rust-parse-impl-macro.cc
  9b0425456c50b968cfb7e36b64f0f362  gcc/rust/parse/rust-parse-impl-macro.hxx
  d62839a7e1b61c00aa41b146304cd729  gcc/rust/parse/rust-parse-impl-path.hxx
! d36f17b0bdf9df3d89ee45a29c88765e  gcc/rust/parse/rust-parse-impl-pattern.hxx
  ebc262f7414d034296b72ab859fdc482  gcc/rust/parse/rust-parse-impl-ttree.hxx
  c29fa936687b478a9889f3380ee0df68  gcc/rust/parse/rust-parse-impl-utils.hxx
! 7ca01d6458538cc61e9d20571398e4a4  gcc/rust/parse/rust-parse-impl.hxx
  8188f5994da36c8911bcd5425a5ff10d  gcc/rust/parse/rust-parse-utils.h
! f1176cd92a1865135dd9db86c6251440  gcc/rust/parse/rust-parse.cc
! b9df75ef20fae98d8d709a88c2fb324b  gcc/rust/parse/rust-parse.h
  2f3ffa4e5b28a059fadd881c085fd620  gcc/rust/resolve/rust-ast-resolve.h
  7bbf4878ffef5aca403c3c2d662b02e5  gcc/rust/resolve/rust-default-resolver.cc
  b7996557d00b477e5b56587a0f238cd4  gcc/rust/resolve/rust-default-resolver.h
*************** b7996557d00b477e5b56587a0f238cd4  gcc/ru
*** 8495,8514 ****
  450113423b1a2f2e8fca9abfc24491ac  gcc/rust/resolve/rust-finalize-imports-2.0.cc
  e35421f45738cdcd47be3ec6730e42ef  gcc/rust/resolve/rust-finalize-imports-2.0.h
  8a259cbd5ed5a4471451f6fedf12e7c8  gcc/rust/resolve/rust-forever-stack.cc
! 668ed1f0f5a0f2f2275cd0571cbe6ff1  gcc/rust/resolve/rust-forever-stack.h
! d87c46e4d5d0f6f97e401bb11d75cc37  gcc/rust/resolve/rust-forever-stack.hxx
  6d2f86dd0b3642cf5cc02bcfc48e7658  gcc/rust/resolve/rust-ice-finalizer.cc
  ba641854f27f5fd4a0cca8fbf125da14  gcc/rust/resolve/rust-ice-finalizer.h
  6a154413155737dfad01c2c325c7dd5e  gcc/rust/resolve/rust-identifier-path.cc
  b92ff8c2ae9e9f07117f272930310dc1  gcc/rust/resolve/rust-identifier-path.h
  590df3e3e06f373943c90c7a8fef8040  gcc/rust/resolve/rust-immutable-name-resolution-context.cc
  f5c7461be946307b11f49c3acf706f34  gcc/rust/resolve/rust-immutable-name-resolution-context.h
! 391e935848bc0b6c251f2848c5af4f58  gcc/rust/resolve/rust-late-name-resolver-2.0.cc
  196fd10d86327529bddea39566bca9d7  gcc/rust/resolve/rust-late-name-resolver-2.0.h
  da1975191cedf6a70b4fb3d74c13c039  gcc/rust/resolve/rust-name-resolution-context.cc
! 0ddd1d9a0aa167934e17a0370b0a481b  gcc/rust/resolve/rust-name-resolution-context.h
  955d3210e5486042dd1e300bbb967f35  gcc/rust/resolve/rust-name-resolution.h
! f984bac25dd2373dcd69d8c3a733a829  gcc/rust/resolve/rust-name-resolver.cc
  31d42405104553d1024b005e4842c8c2  gcc/rust/resolve/rust-name-resolver.h
  783acc8c1bd927a5890bd0b703c5a1ae  gcc/rust/resolve/rust-resolve-builtins.cc
  9f7080d5a5a44fbb1d53e8db861f55d6  gcc/rust/resolve/rust-resolve-builtins.h
--- 8497,8517 ----
  450113423b1a2f2e8fca9abfc24491ac  gcc/rust/resolve/rust-finalize-imports-2.0.cc
  e35421f45738cdcd47be3ec6730e42ef  gcc/rust/resolve/rust-finalize-imports-2.0.h
  8a259cbd5ed5a4471451f6fedf12e7c8  gcc/rust/resolve/rust-forever-stack.cc
! c2abfb534393f32ff8809154169a0d07  gcc/rust/resolve/rust-forever-stack.h
! 6a65fdc244a4a4bfea803a740338dbf1  gcc/rust/resolve/rust-forever-stack.hxx
  6d2f86dd0b3642cf5cc02bcfc48e7658  gcc/rust/resolve/rust-ice-finalizer.cc
  ba641854f27f5fd4a0cca8fbf125da14  gcc/rust/resolve/rust-ice-finalizer.h
  6a154413155737dfad01c2c325c7dd5e  gcc/rust/resolve/rust-identifier-path.cc
  b92ff8c2ae9e9f07117f272930310dc1  gcc/rust/resolve/rust-identifier-path.h
  590df3e3e06f373943c90c7a8fef8040  gcc/rust/resolve/rust-immutable-name-resolution-context.cc
  f5c7461be946307b11f49c3acf706f34  gcc/rust/resolve/rust-immutable-name-resolution-context.h
! ea0df576a879fdd081434c3f0dbbb31f  gcc/rust/resolve/rust-late-name-resolver-2.0.cc
  196fd10d86327529bddea39566bca9d7  gcc/rust/resolve/rust-late-name-resolver-2.0.h
  da1975191cedf6a70b4fb3d74c13c039  gcc/rust/resolve/rust-name-resolution-context.cc
! 4b78910787fffe5bb403c46b0b00bd0c  gcc/rust/resolve/rust-name-resolution-context.h
! dd91a3d44a85113aee2ed3cee3111362  gcc/rust/resolve/rust-name-resolution-context.hxx
  955d3210e5486042dd1e300bbb967f35  gcc/rust/resolve/rust-name-resolution.h
! c2f50aadc07def03bd8b604efb52b0e2  gcc/rust/resolve/rust-name-resolver.cc
  31d42405104553d1024b005e4842c8c2  gcc/rust/resolve/rust-name-resolver.h
  783acc8c1bd927a5890bd0b703c5a1ae  gcc/rust/resolve/rust-resolve-builtins.cc
  9f7080d5a5a44fbb1d53e8db861f55d6  gcc/rust/resolve/rust-resolve-builtins.h
*************** eb1bfe030c9849086601bd0822a7e35a  gcc/ru
*** 8602,8608 ****
  28960566056dffb6dd86b0c3ad60bf39  gcc/rust/util/rust-abi.cc
  a85e112c6426c604dd9a3a9af712e53b  gcc/rust/util/rust-abi.h
  69981f8af65b8480fe8cdf7d00210c90  gcc/rust/util/rust-attribute-values.h
! 3f35866ad508b754c390827dc84f06eb  gcc/rust/util/rust-attributes.cc
  1b2fe1c713b7e2f9161f5be177c89309  gcc/rust/util/rust-attributes.h
  f7a4957c1c7c3fc0e851a38ef997ce72  gcc/rust/util/rust-base62.cc
  a674c0d71a00cc704ca2d16c25f4ba3e  gcc/rust/util/rust-base62.h
--- 8605,8611 ----
  28960566056dffb6dd86b0c3ad60bf39  gcc/rust/util/rust-abi.cc
  a85e112c6426c604dd9a3a9af712e53b  gcc/rust/util/rust-abi.h
  69981f8af65b8480fe8cdf7d00210c90  gcc/rust/util/rust-attribute-values.h
! 192fef7b6febc4b92f4bae8d4460d7fa  gcc/rust/util/rust-attributes.cc
  1b2fe1c713b7e2f9161f5be177c89309  gcc/rust/util/rust-attributes.h
  f7a4957c1c7c3fc0e851a38ef997ce72  gcc/rust/util/rust-base62.cc
  a674c0d71a00cc704ca2d16c25f4ba3e  gcc/rust/util/rust-base62.h
*************** d87ca49f50adda86e874b992b90d3a0e  gcc/ru
*** 8618,8638 ****
  88f7642dab3e02fac387a93aad82300a  gcc/rust/util/rust-edition.h
  6bad0adc3974de844f3be9f38aeccec7  gcc/rust/util/rust-ggc.cc
  073d902536493807ef695baf24a28444  gcc/rust/util/rust-ggc.h
! cf9962322e0d7824a034c0785ae912f3  gcc/rust/util/rust-hir-map.cc
  78dff645c18e1bc860ccf4a7aeceb9e3  gcc/rust/util/rust-hir-map.h
  2bf44e898c6773e49f63aa99ea22f2aa  gcc/rust/util/rust-identifier.h
  9da3d0bbd1f3b83f29287582aaadf7fd  gcc/rust/util/rust-inline-visitor.h
  d16c47cc0e7ce29335f7f3b25415e39f  gcc/rust/util/rust-intrinsic-values.h
  fcb0ef58bd45344a4c08af0945cd41b9  gcc/rust/util/rust-keyword-values.cc
  3c394a316c15589123f05ad6573d7e91  gcc/rust/util/rust-keyword-values.h
! c5af83b641a50076b4401975693d372c  gcc/rust/util/rust-lang-item.cc
! ec75dd1e40597f588a75c24eddc9c9a9  gcc/rust/util/rust-lang-item.h
  8ce3ff7da4a1241c73c997a055b4b790  gcc/rust/util/rust-mapping-common.h
  25026158bc1a032172cd56fdc7d1a314  gcc/rust/util/rust-operators.h
  bdaeeceba08beadb8340194c926569d7  gcc/rust/util/rust-punycode.cc
  d59690699c62a65e6a472b35516f40d9  gcc/rust/util/rust-punycode.h
  a286bb88ccb770f18df0020c59b4f06d  gcc/rust/util/rust-stacked-contexts.h
! 96641cff81e21dad24b3df4b87716159  gcc/rust/util/rust-token-converter.cc
  44fad7e6f643cffd77b625c32c20515c  gcc/rust/util/rust-token-converter.h
  5acb410f6ef2157b8243f5289eda2813  gcc/rust/util/rust-unicode-data.h
  dc28a64b4aa1349136710af5da9a42cf  gcc/rust/util/rust-unicode.cc
--- 8621,8641 ----
  88f7642dab3e02fac387a93aad82300a  gcc/rust/util/rust-edition.h
  6bad0adc3974de844f3be9f38aeccec7  gcc/rust/util/rust-ggc.cc
  073d902536493807ef695baf24a28444  gcc/rust/util/rust-ggc.h
! 816d90e87f0dc49e41b4af444f419cce  gcc/rust/util/rust-hir-map.cc
  78dff645c18e1bc860ccf4a7aeceb9e3  gcc/rust/util/rust-hir-map.h
  2bf44e898c6773e49f63aa99ea22f2aa  gcc/rust/util/rust-identifier.h
  9da3d0bbd1f3b83f29287582aaadf7fd  gcc/rust/util/rust-inline-visitor.h
  d16c47cc0e7ce29335f7f3b25415e39f  gcc/rust/util/rust-intrinsic-values.h
  fcb0ef58bd45344a4c08af0945cd41b9  gcc/rust/util/rust-keyword-values.cc
  3c394a316c15589123f05ad6573d7e91  gcc/rust/util/rust-keyword-values.h
! 0c13bb8a31598164f8569bc3ab5400f9  gcc/rust/util/rust-lang-item.cc
! fc5d29f6ca4269196a4963b3cb42c182  gcc/rust/util/rust-lang-item.h
  8ce3ff7da4a1241c73c997a055b4b790  gcc/rust/util/rust-mapping-common.h
  25026158bc1a032172cd56fdc7d1a314  gcc/rust/util/rust-operators.h
  bdaeeceba08beadb8340194c926569d7  gcc/rust/util/rust-punycode.cc
  d59690699c62a65e6a472b35516f40d9  gcc/rust/util/rust-punycode.h
  a286bb88ccb770f18df0020c59b4f06d  gcc/rust/util/rust-stacked-contexts.h
! 459ff0d573ebb6666d1fd426d4b02f1b  gcc/rust/util/rust-token-converter.cc
  44fad7e6f643cffd77b625c32c20515c  gcc/rust/util/rust-token-converter.h
  5acb410f6ef2157b8243f5289eda2813  gcc/rust/util/rust-unicode-data.h
  dc28a64b4aa1349136710af5da9a42cf  gcc/rust/util/rust-unicode.cc
*************** be3678be2cea5e1beb181ef986ed3e3e  gcc/sa
*** 8646,8656 ****
  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
--- 8649,8659 ----
  a92419791c8e8d842c6ef029d4537463  gcc/sarif-spec-urls.def
  18b1ba21aac735e8b4fac6babbf3724f  gcc/sbitmap.cc
  8956392cfb34e0cb12dad1fc890f7d08  gcc/sbitmap.h
! 03cad36b8edcdc33b1396d07ad34618b  gcc/sched-deps.cc
  7f3c871d86d0577c88b4dbf4cb7bfde6  gcc/sched-ebb.cc
  da5c82758bbb99130aa6287f7a6c1342  gcc/sched-int.h
  017ab43b4cc0ef03de29f6129f0423e0  gcc/sched-rgn.cc
! ebd9e973e52eba392362d3f86683d9fc  gcc/sel-sched-dump.cc
  3b84f3b6b449c883935ef347892e770c  gcc/sel-sched-dump.h
  14833ad25c22e7c51f5cb3c7b81f5d8f  gcc/sel-sched-ir.cc
  72bbd36ab41f757ab772dc8c2c422836  gcc/sel-sched-ir.h
*************** d294651bcc46af1abb89e48cd851fd40  gcc/ta
*** 8722,8733 ****
  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
--- 8725,8736 ----
  fe7cc01d7dd25103bc61ab1a33dd54dc  gcc/target-globals.h
  5f6f168a092c141ef64501f44439df42  gcc/target-hooks-macros.h
  f24751f278bee1ac8dc861467d9f96a3  gcc/target-insns.def
! 11c967b204a71058b1cbab91bc4b4ef0  gcc/target.def
  9ca827d4a70bd09cb862e2583cb8500a  gcc/target.h
  0cb420c86a7940020245f05da6f194fa  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 76d4ddb6cf38683da9c34f2aa7e2c57d  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** a6dda753b5811f78e3c8167773ebb877  gcc/te
*** 17122,17127 ****
--- 17125,17132 ----
  34dc6e8add5638f97ec0b506f54e0899  gcc/testsuite/algol68/compile/include-supper.a68
  295f9865546c229a21bf55c44966849f  gcc/testsuite/algol68/compile/include.a68
  7151cce68655186c945fa0a6e858ddae  gcc/testsuite/algol68/compile/labeled-unit-1.a68
+ 0dd27910e530e18564e3e9c9a88f52b2  gcc/testsuite/algol68/compile/malformed-mode-1.a68
+ 8936e5e6422257704ffc21327efa1dc8  gcc/testsuite/algol68/compile/malformed-mode-2.a68
  383088d64e01420b84b1178e321887ad  gcc/testsuite/algol68/compile/mcgt-1.3b.a68
  b602de4d7ac9a6d1023dcc45983c25fa  gcc/testsuite/algol68/compile/mcgt-7.1.3a-bis.a68
  9beecedeeea6e22797a615259ef9da5b  gcc/testsuite/algol68/compile/mcgt-7.1.3a.a68
*************** b92163ecc65b967a1ace1294db1ac938  gcc/te
*** 18895,18900 ****
--- 18900,18910 ----
  563de839d84e990d18f755b18712b764  gcc/testsuite/c-c++-common/builtin-arith-overflow-2.c
  edbcc39f20e5248e2b957a28e01fee51  gcc/testsuite/c-c++-common/builtin-arith-overflow-3.c
  29addeec3c750c9f563a87b82013d69e  gcc/testsuite/c-c++-common/builtin-assoc-barrier-1.c
+ 15b4b91825063e6423b203f8f436c671  gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c
+ 27f5ccf138bde44f160acff2a404fbc9  gcc/testsuite/c-c++-common/builtin-bitreverseg-2.c
+ e7aad3e4580fc2ea05649e6683fd97b5  gcc/testsuite/c-c++-common/builtin-bswapg-1.c
+ 3adae0df8e04652fcfa8b8b67693873d  gcc/testsuite/c-c++-common/builtin-bswapg-2.c
+ ea5bd58777ffc76bb5344517b5789027  gcc/testsuite/c-c++-common/builtin-bswapg-3.c
  05fb6d875f8327310c94ca0a89b53886  gcc/testsuite/c-c++-common/builtin-classify-type-1.c
  16488560f51c9fbb0acea48f3f246dd7  gcc/testsuite/c-c++-common/builtin-clear-padding-1.c
  05a22e0270d8d2693bab4092ee6a1edc  gcc/testsuite/c-c++-common/builtin-clear-padding-2.c
*************** add511064b968c5d11ab265fa90ad3bc  gcc/te
*** 20061,20074 ****
  1a46b3c3357de4a3d24943d0266026f3  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-1.c
  2cfdfdc278ef7c85c5e2ad7e2f1e95be  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-2.c
  efc9a1ea706c31b0d18f03ed7004c09e  gcc/testsuite/c-c++-common/gomp/target-map-iterators-1.c
! a6be8d491b81e2bd5a132e54885fb1c2  gcc/testsuite/c-c++-common/gomp/target-map-iterators-2.c
  e87cc72174c798e3391c3b978ab190ca  gcc/testsuite/c-c++-common/gomp/target-map-iterators-3.c
  d290e10563b5dcd9cbe022f9ce9d118d  gcc/testsuite/c-c++-common/gomp/target-map-iterators-4.c
  2ac7469e11f49a373777f14d12d0458a  gcc/testsuite/c-c++-common/gomp/target-map-iterators-6.c
  5d53b03c5014dede6e0f732cc32d3856  gcc/testsuite/c-c++-common/gomp/target-teams-1.c
  ecaf3261edcbdf06b45669d051546ad3  gcc/testsuite/c-c++-common/gomp/target-update-1.c
  a0c1e1ba060b836459e43d7d7d5c973f  gcc/testsuite/c-c++-common/gomp/target-update-iterators-1.c
! 0f6b04454d158c1ca276ecc2763de98f  gcc/testsuite/c-c++-common/gomp/target-update-iterators-2.c
  5a3145767cf31c903624fc08a8be5e8a  gcc/testsuite/c-c++-common/gomp/target-update-iterators-3.c
  3e94cc26d4b0039e4d3efc66900f1480  gcc/testsuite/c-c++-common/gomp/task-detach-1.c
  1bc40a217ad51b17433b0b59c1491757  gcc/testsuite/c-c++-common/gomp/task-detach-2.c
--- 20071,20084 ----
  1a46b3c3357de4a3d24943d0266026f3  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-1.c
  2cfdfdc278ef7c85c5e2ad7e2f1e95be  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-2.c
  efc9a1ea706c31b0d18f03ed7004c09e  gcc/testsuite/c-c++-common/gomp/target-map-iterators-1.c
! de2af1a0c5b179606d2b2e81fd00efdb  gcc/testsuite/c-c++-common/gomp/target-map-iterators-2.c
  e87cc72174c798e3391c3b978ab190ca  gcc/testsuite/c-c++-common/gomp/target-map-iterators-3.c
  d290e10563b5dcd9cbe022f9ce9d118d  gcc/testsuite/c-c++-common/gomp/target-map-iterators-4.c
  2ac7469e11f49a373777f14d12d0458a  gcc/testsuite/c-c++-common/gomp/target-map-iterators-6.c
  5d53b03c5014dede6e0f732cc32d3856  gcc/testsuite/c-c++-common/gomp/target-teams-1.c
  ecaf3261edcbdf06b45669d051546ad3  gcc/testsuite/c-c++-common/gomp/target-update-1.c
  a0c1e1ba060b836459e43d7d7d5c973f  gcc/testsuite/c-c++-common/gomp/target-update-iterators-1.c
! 8c8311b628efbad63e4fbe25933efd3d  gcc/testsuite/c-c++-common/gomp/target-update-iterators-2.c
  5a3145767cf31c903624fc08a8be5e8a  gcc/testsuite/c-c++-common/gomp/target-update-iterators-3.c
  3e94cc26d4b0039e4d3efc66900f1480  gcc/testsuite/c-c++-common/gomp/task-detach-1.c
  1bc40a217ad51b17433b0b59c1491757  gcc/testsuite/c-c++-common/gomp/task-detach-2.c
*************** e1ef9c58498f72552b0ec84751024b54  gcc/te
*** 20291,20297 ****
  043b8dd187f001c1699789f752f3432d  gcc/testsuite/c-c++-common/pr108605.c
  7e6323dd9b11ca893c79859f430b53ed  gcc/testsuite/c-c++-common/pr109884.c
  087cac8a02deb9e6057b84df8a4b50c5  gcc/testsuite/c-c++-common/pr111309-1.c
! eaa6db1ea7ec94af6a5743a71b3c75b4  gcc/testsuite/c-c++-common/pr111309-2.c
  b27edfb18a0a46230f08ed022faced81  gcc/testsuite/c-c++-common/pr111817.c
  fd2495c48b560caf7d762a464c77b115  gcc/testsuite/c-c++-common/pr118205.c
  7f267008b2230604a2b8a18847bf6734  gcc/testsuite/c-c++-common/pr118430.c
--- 20301,20308 ----
  043b8dd187f001c1699789f752f3432d  gcc/testsuite/c-c++-common/pr108605.c
  7e6323dd9b11ca893c79859f430b53ed  gcc/testsuite/c-c++-common/pr109884.c
  087cac8a02deb9e6057b84df8a4b50c5  gcc/testsuite/c-c++-common/pr111309-1.c
! e14d7b0ad30b45875f60c406ebb004ff  gcc/testsuite/c-c++-common/pr111309-2.c
! e11fce4bc547b16aacc500a19b1e2aee  gcc/testsuite/c-c++-common/pr111309-3.c
  b27edfb18a0a46230f08ed022faced81  gcc/testsuite/c-c++-common/pr111817.c
  fd2495c48b560caf7d762a464c77b115  gcc/testsuite/c-c++-common/pr118205.c
  7f267008b2230604a2b8a18847bf6734  gcc/testsuite/c-c++-common/pr118430.c
*************** ab92263ab6dfc24c4a0c606696f4f6e1  gcc/te
*** 21397,21402 ****
--- 21408,21415 ----
  049d86b26e87f2345599dec9004709c6  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__4_.out
  fd9430749a440e568057ebda5d8b3a14  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.cob
  20c0a856e7157356b21d2254ce9c991d  gcc/testsuite/cobol.dg/group2/DECIMAL-POINT_is_COMMA__5_.out
+ 940e9b1d2bcfa23e1d9f1ac45358b063  gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob
+ 036488394c4c2eeadebd0be4e1710aae  gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out
  ddb89e1453f5f25f7689e6e79e35cfc2  gcc/testsuite/cobol.dg/group2/DISPLAY__Sign_ASCII.cob
  a291b1d076aedcf6c1d91ee357c265bc  gcc/testsuite/cobol.dg/group2/DISPLAY__Sign_ASCII.out
  2b8c1c147780c9004f2db3e97f269683  gcc/testsuite/cobol.dg/group2/DISPLAY__Sign_ASCII__2_.cob
*************** d2d4e47ab4b15463020b17f88d268eca  gcc/te
*** 21587,21592 ****
--- 21600,21607 ----
  0d1ed3ff5755c0ce7a5b5d081463c10f  gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM.out
  490d9d7ce2642968f4f81a80a710f879  gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_NATIONAL_characters.cob
  9801747a0c4835b6dd61b6a9197476f8  gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_NATIONAL_characters.out
+ 8cbdab29ce68580752d6208cf6c591f8  gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.cob
+ c99535d636ed164a9033829911fee4b1  gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.out
  da5445b0b5e32621f6b08121b02011fb  gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_reference_modding.cob
  c184403404ecf91e26212dbe205a0ede  gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_reference_modding.out
  f422d9dd42e0668a122c09c49cedf374  gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_zero_length.cob
*************** d910f7704ad5ade4b7a81e4888f4b4b9  gcc/te
*** 21961,21967 ****
  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
--- 21976,21981 ----
*************** a455db6e8dc9b02d6f2c59488f513896  gcc/te
*** 22570,22576 ****
  eedaa19d1ebbb6f2ecc8a364fb1ddecd  gcc/testsuite/g++.dg/asan/coroutines1.C
  5e2fbdaa2b9b39d6bf1f290e581722f4  gcc/testsuite/g++.dg/asan/deep-stack-uaf-1.C
  0acf775bdbd67ca675dda4934aeacb5b  gcc/testsuite/g++.dg/asan/deep-tail-call-1.C
! b2988101c810da55bd5189f442c038b7  gcc/testsuite/g++.dg/asan/deep-thread-stack-1.C
  ee1b98debb605b03b682941dfc965c77  gcc/testsuite/g++.dg/asan/default-options-1.C
  cba693f7c65e49b071bfcdb59c312200  gcc/testsuite/g++.dg/asan/dejagnu-gtest.h
  b12b848862ca9a5a126f8b4e8792dc16  gcc/testsuite/g++.dg/asan/dlclose-test-1-so.cc
--- 22584,22590 ----
  eedaa19d1ebbb6f2ecc8a364fb1ddecd  gcc/testsuite/g++.dg/asan/coroutines1.C
  5e2fbdaa2b9b39d6bf1f290e581722f4  gcc/testsuite/g++.dg/asan/deep-stack-uaf-1.C
  0acf775bdbd67ca675dda4934aeacb5b  gcc/testsuite/g++.dg/asan/deep-tail-call-1.C
! dd1afa67e76cba964d9bf322bbd4ed0f  gcc/testsuite/g++.dg/asan/deep-thread-stack-1.C
  ee1b98debb605b03b682941dfc965c77  gcc/testsuite/g++.dg/asan/default-options-1.C
  cba693f7c65e49b071bfcdb59c312200  gcc/testsuite/g++.dg/asan/dejagnu-gtest.h
  b12b848862ca9a5a126f8b4e8792dc16  gcc/testsuite/g++.dg/asan/dlclose-test-1-so.cc
*************** c22e1405c91d95d32ec012cae1f23ccc  gcc/te
*** 27377,27382 ****
--- 27391,27400 ----
  2555b4c1ccdec6b7fca5b625f06840d3  gcc/testsuite/g++.dg/cpp1y/var-templ87.C
  6066c7bcfa1174f7783c52343cc9ad88  gcc/testsuite/g++.dg/cpp1y/var-templ88.C
  c62c3c5ce4dabfb077ffd26896b1d204  gcc/testsuite/g++.dg/cpp1y/var-templ9.C
+ f4cda3c2b66e752d0ad295596f517698  gcc/testsuite/g++.dg/cpp1y/var-templ90.C
+ b6e6929ceb8f1f56fbd8782c837e9a5d  gcc/testsuite/g++.dg/cpp1y/var-templ91.C
+ f35421f5aae31e9b54dd03fd582be931  gcc/testsuite/g++.dg/cpp1y/var-templ92.C
+ 355f4b1f3f2652591fbfd2ae0fbb6762  gcc/testsuite/g++.dg/cpp1y/var-templ93.C
  6b70f04015ba6612a9e9cb475e01f287  gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C
  4804988f5ca1de7a49a58e20c70fc457  gcc/testsuite/g++.dg/cpp1y/vla10.C
  16fc38725d5d3406fffa4c6da4f5df21  gcc/testsuite/g++.dg/cpp1y/vla2.C
*************** bc013e85b03083defb9345b90c812b79  gcc/te
*** 28771,28776 ****
--- 28789,28796 ----
  24814124a2638795704cea1177c1d93c  gcc/testsuite/g++.dg/cpp2a/concepts-pr122494.C
  f5d0f986539b8cf3edb4d60aaa9e06d0  gcc/testsuite/g++.dg/cpp2a/concepts-pr123663.C
  c3a5a8ffeaedc47bb7c475c240bce1c2  gcc/testsuite/g++.dg/cpp2a/concepts-pr123814.C
+ 874cd7fa0112a7308d90c51f157becf0  gcc/testsuite/g++.dg/cpp2a/concepts-pr125490.C
+ dd2222c8cbe6cfb27b39393a46d50d4f  gcc/testsuite/g++.dg/cpp2a/concepts-pr125490a.C
  2e23f19968091d773a47c43a32a784ae  gcc/testsuite/g++.dg/cpp2a/concepts-pr58500.C
  07c6a4dff1357ef61c0d30b12db5c948  gcc/testsuite/g++.dg/cpp2a/concepts-pr58534.C
  b6ba42db630bfd3259d65662fc03aaa0  gcc/testsuite/g++.dg/cpp2a/concepts-pr58535.C
*************** f22e232a82f7c1bad4e99814aa64e024  gcc/te
*** 28907,28912 ****
--- 28927,28933 ----
  d3851914c01bf78597e5cb411ed0b3d5  gcc/testsuite/g++.dg/cpp2a/concepts-requires4.C
  9ff29a02ca82332b82da206e1f44ad5c  gcc/testsuite/g++.dg/cpp2a/concepts-requires40.C
  d8fb95a7a3f620554c731a49b55c6a41  gcc/testsuite/g++.dg/cpp2a/concepts-requires41.C
+ 562485cf4c2bf7bcd7ce51ee122aabc6  gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C
  5d6de37c2e62b40c8a5db3700bd63c60  gcc/testsuite/g++.dg/cpp2a/concepts-requires5.C
  8ea6ab45de0c359b113c65f1958a54a1  gcc/testsuite/g++.dg/cpp2a/concepts-requires6.C
  d9a49412355c5ed0f91582f1c88c13ff  gcc/testsuite/g++.dg/cpp2a/concepts-requires7.C
*************** f5603b028cb5e4f040fc3af7776ea00e  gcc/te
*** 33165,33171 ****
--- 33186,33196 ----
  60fb08261559503592bcae8f4f347885  gcc/testsuite/g++.dg/lookup/operator-7.C
  39473539be73f1fec8277d1351308d6a  gcc/testsuite/g++.dg/lookup/operator-8.C
  d4cc68c3b85ac22cfde7bacbae0bd6ce  gcc/testsuite/g++.dg/lookup/operator-8a.C
+ 682452a1fb8e4bea9eb372bb1af7f1a4  gcc/testsuite/g++.dg/lookup/operator-8b.C
+ d26a7a1591e9076a7145549e6589346a  gcc/testsuite/g++.dg/lookup/operator-8c.C
  41d2e17cc64d9181a14fce3cac8d35bd  gcc/testsuite/g++.dg/lookup/operator-9.C
+ e6f8a7c452c03ed95dab0d5189b53e06  gcc/testsuite/g++.dg/lookup/operator-9a.C
+ 070b568d2db1d2bfbadcb9422000c059  gcc/testsuite/g++.dg/lookup/operator-9b.C
  ed588fcfdd755a45d961e507c96ba9e2  gcc/testsuite/g++.dg/lookup/pr21802.C
  2378e813c805e961b5f594f4a76ec56d  gcc/testsuite/g++.dg/lookup/pr60994.C
  e8c219b570d08e589efca8f832a6b0b3  gcc/testsuite/g++.dg/lookup/pr67074.C
*************** d1e2592670bcdeda87ffce22aa27ec30  gcc/te
*** 34944,34953 ****
  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
--- 34969,34978 ----
  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
! c045a7542ac6354a31276f2931c7d5ad  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
! 00863d1dea0a55a18b608689d8ee2256  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
*************** eea08af86e12b2945858317c96c4626e  gcc/te
*** 36044,36050 ****
  a4e2bdb9174507bf70f14cd4c90d78d0  gcc/testsuite/g++.dg/opt/return-slot1.C
  823775aaa479e3ad245323d4d8a2605c  gcc/testsuite/g++.dg/opt/rtti1.C
  86f37428153f2503110eee8bbb401a58  gcc/testsuite/g++.dg/opt/rtti2.C
! 637a853b4243b313e907d6aba5b07b4d  gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C
  64cddd41580d4c444ced76036ddd036a  gcc/testsuite/g++.dg/opt/stack1.C
  397b0ee96b240fd68f4c0aade2337049  gcc/testsuite/g++.dg/opt/stack2.C
  58e8dee52431dafad875b7e31ec97e9b  gcc/testsuite/g++.dg/opt/static1.C
--- 36069,36075 ----
  a4e2bdb9174507bf70f14cd4c90d78d0  gcc/testsuite/g++.dg/opt/return-slot1.C
  823775aaa479e3ad245323d4d8a2605c  gcc/testsuite/g++.dg/opt/rtti1.C
  86f37428153f2503110eee8bbb401a58  gcc/testsuite/g++.dg/opt/rtti2.C
! b9a14f6539b2806592c8e877d9587c9d  gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C
  64cddd41580d4c444ced76036ddd036a  gcc/testsuite/g++.dg/opt/stack1.C
  397b0ee96b240fd68f4c0aade2337049  gcc/testsuite/g++.dg/opt/stack2.C
  58e8dee52431dafad875b7e31ec97e9b  gcc/testsuite/g++.dg/opt/static1.C
*************** a511d0918588fcdaf7f7e67daf993ddd  gcc/te
*** 37953,37959 ****
  a1cdb8bf7f9f643fcc25e69a9a742a11  gcc/testsuite/g++.dg/reflect/member16.C
  e0239469386941b146064cb464bd03c8  gcc/testsuite/g++.dg/reflect/member17.C
  67ae698b3600eacd0ebb7033eb1537f3  gcc/testsuite/g++.dg/reflect/member18.C
! d7bf4b2b4a12e0e7c5f568c235fe50c9  gcc/testsuite/g++.dg/reflect/member19.C
  8ebf4e8f059ee7695e3d2f4523f941e8  gcc/testsuite/g++.dg/reflect/member2.C
  5a76580cb5157802057a41baaeb6e392  gcc/testsuite/g++.dg/reflect/member20.C
  181521b03df5dc478a1ac9257c71682a  gcc/testsuite/g++.dg/reflect/member21.C
--- 37978,37984 ----
  a1cdb8bf7f9f643fcc25e69a9a742a11  gcc/testsuite/g++.dg/reflect/member16.C
  e0239469386941b146064cb464bd03c8  gcc/testsuite/g++.dg/reflect/member17.C
  67ae698b3600eacd0ebb7033eb1537f3  gcc/testsuite/g++.dg/reflect/member18.C
! bb256618a6928e1c523de793dbd100c5  gcc/testsuite/g++.dg/reflect/member19.C
  8ebf4e8f059ee7695e3d2f4523f941e8  gcc/testsuite/g++.dg/reflect/member2.C
  5a76580cb5157802057a41baaeb6e392  gcc/testsuite/g++.dg/reflect/member20.C
  181521b03df5dc478a1ac9257c71682a  gcc/testsuite/g++.dg/reflect/member21.C
*************** af18aac150e2da16b8511edc29458f59  gcc/te
*** 38108,38113 ****
--- 38133,38140 ----
  d20c15bde9b075e8a72181fbeddab319  gcc/testsuite/g++.dg/reflect/splice12.C
  181522d91c03754a636d5ed4033852e0  gcc/testsuite/g++.dg/reflect/splice13.C
  72689e6800e3d32f9204809856f50e61  gcc/testsuite/g++.dg/reflect/splice14.C
+ eed060fced704207ab824b985f080663  gcc/testsuite/g++.dg/reflect/splice15.C
+ 4c6fba1d0167be5817fed114a0627b89  gcc/testsuite/g++.dg/reflect/splice16.C
  c80b1bac424d9304fac93754834f224e  gcc/testsuite/g++.dg/reflect/splice2.C
  e0d01c0d72438804b2438e81debbc181  gcc/testsuite/g++.dg/reflect/splice3.C
  c900182698e22d48583b4bbd611fe1fb  gcc/testsuite/g++.dg/reflect/splice4.C
*************** efa9db39e10b4576a573bca4b38cf74b  gcc/te
*** 38685,38690 ****
--- 38712,38719 ----
  bc26ef84f5a062823e14f4e50d2e1e8c  gcc/testsuite/g++.dg/template/decl3.C
  a1ee69de58a5087bc0a5772d3b7f8309  gcc/testsuite/g++.dg/template/deduce1.C
  9f18981db07480a48d240172fea3b6c5  gcc/testsuite/g++.dg/template/deduce10.C
+ c2a385f8145ae62edcb168b2382d2e2f  gcc/testsuite/g++.dg/template/deduce11.C
+ 34b8788685cca312521cd817b453b24f  gcc/testsuite/g++.dg/template/deduce12.C
  3cc52990bce905a42f91a2dab1c65c77  gcc/testsuite/g++.dg/template/deduce2.C
  862861bccf9830342f51a0cc243559f2  gcc/testsuite/g++.dg/template/deduce3.C
  e734bd4a9592f8ad037cead9d884b5df  gcc/testsuite/g++.dg/template/deduce4.C
*************** fd8e483532e07909315ca8711ef4503b  gcc/te
*** 40196,40201 ****
--- 40225,40231 ----
  101facde39ac59f9b142786ef251d0ca  gcc/testsuite/g++.dg/torture/pr124135-2.C
  8e35f2bc9bda0c081ac5347d83e9f80c  gcc/testsuite/g++.dg/torture/pr124137.C
  9e83dc5ec48088cace8aa33ee2acb251  gcc/testsuite/g++.dg/torture/pr124875.C
+ 75f68370222f5d3a36c5db4ddabae923  gcc/testsuite/g++.dg/torture/pr125599.C
  161154ed9f6193a2a7da119e068c3f3f  gcc/testsuite/g++.dg/torture/pr27218.C
  a84e9fff95df4801f8e582fbc33303b8  gcc/testsuite/g++.dg/torture/pr30252.C
  e980bf95890544d46879b89f7aa98df6  gcc/testsuite/g++.dg/torture/pr30567.C
*************** c71f5fb3792e0ba57c0a4e43cd39038f  gcc/te
*** 41453,41458 ****
--- 41483,41489 ----
  cf2551312abb241854e1de4e7dcfd670  gcc/testsuite/g++.dg/warn/Wdouble-promotion.C
  ee0b4d9e331b2ed8b1a730e066fc0084  gcc/testsuite/g++.dg/warn/Wdtor1.C
  cfefa485c59272b3684cdff2f40a36c2  gcc/testsuite/g++.dg/warn/Wduplicated-branches1.C
+ 5dcc62de1db3ca7111a6a910c2dd43fa  gcc/testsuite/g++.dg/warn/Wduplicated-branches10.C
  b084f0b1f3769218f6a37cbfa2ed89d4  gcc/testsuite/g++.dg/warn/Wduplicated-branches2.C
  8c92a45aa3c76f7c774e05c8cc46453c  gcc/testsuite/g++.dg/warn/Wduplicated-branches3.C
  ece1d03dfdd44a22781b77ed9ec271d4  gcc/testsuite/g++.dg/warn/Wduplicated-branches4.C
*************** c43ec17ecd6eea23639c975ca544d15b  gcc/te
*** 45881,45888 ****
  faaf8cb88bea0613c5676fb7a19296ed  gcc/testsuite/g++.target/i386/bfloat_cpp_typecheck.C
  60c5bf14a1938214fb6ec30c76d3922f  gcc/testsuite/g++.target/i386/cf_check-1.C
  d308b2d49958c216374d7230f881c421  gcc/testsuite/g++.target/i386/cf_check-2.C
! 0f972b96ac972bbb60579043ae03425f  gcc/testsuite/g++.target/i386/cf_check-3.C
! 4bcace90538010060ca0b5e8a764462e  gcc/testsuite/g++.target/i386/cf_check-4.C
  7a33fea3b2ecb10736e762b211f6ae42  gcc/testsuite/g++.target/i386/crc32-4.C
  ea7a625a5c087724f70333c1b6ad80fc  gcc/testsuite/g++.target/i386/empty-class1.C
  5c480abcec0d76095612ae8099a7315e  gcc/testsuite/g++.target/i386/empty-class2.C
--- 45912,45919 ----
  faaf8cb88bea0613c5676fb7a19296ed  gcc/testsuite/g++.target/i386/bfloat_cpp_typecheck.C
  60c5bf14a1938214fb6ec30c76d3922f  gcc/testsuite/g++.target/i386/cf_check-1.C
  d308b2d49958c216374d7230f881c421  gcc/testsuite/g++.target/i386/cf_check-2.C
! 55f763e733fe870cc5c57b8cd5dcaae6  gcc/testsuite/g++.target/i386/cf_check-3.C
! 9443e26bf187177f51a3e072f4e83f2a  gcc/testsuite/g++.target/i386/cf_check-4.C
  7a33fea3b2ecb10736e762b211f6ae42  gcc/testsuite/g++.target/i386/crc32-4.C
  ea7a625a5c087724f70333c1b6ad80fc  gcc/testsuite/g++.target/i386/empty-class1.C
  5c480abcec0d76095612ae8099a7315e  gcc/testsuite/g++.target/i386/empty-class2.C
*************** a1f73425439294ed2e5c470eb6a67f31  gcc/te
*** 45906,45918 ****
  938f3d3aa97c11e636572fd743ee72b6  gcc/testsuite/g++.target/i386/mangle-ldbl-1.C
  fb6172109b269722e02aa230bd3522d8  gcc/testsuite/g++.target/i386/mangle-ldbl-2.C
  ae8574e23abf3d9af1504b3bec6f9ec6  gcc/testsuite/g++.target/i386/mangling-alias1.C
! b7e1f3365f4173c07b92bd12be740cee  gcc/testsuite/g++.target/i386/memset-pr101366-1.C
! 2c7dc95d6ad45af2e4977347261d684f  gcc/testsuite/g++.target/i386/memset-pr101366-2.C
! 1c63e2079e045781b560f7c4c27ee492  gcc/testsuite/g++.target/i386/memset-pr108585-1a.C
! 66fb9ef066f75058480b5c858ba39ef1  gcc/testsuite/g++.target/i386/memset-pr108585-1b.C
! 087c122c6125afd5603610259a957f95  gcc/testsuite/g++.target/i386/memset-pr118276-1a.C
! fd21c4733c188d0f80c33f7479852a52  gcc/testsuite/g++.target/i386/memset-pr118276-1b.C
! c86685c26af44bf5c35f829b79362b3c  gcc/testsuite/g++.target/i386/memset-pr118276-1c.C
  d1b609c14400a770816be904e2e0cee2  gcc/testsuite/g++.target/i386/mv-symbols1.C
  c0b24207688618b815731387510d9bed  gcc/testsuite/g++.target/i386/mv-symbols2.C
  b621d2ff4930c57a97eff571164cd394  gcc/testsuite/g++.target/i386/mv-symbols3.C
--- 45937,45949 ----
  938f3d3aa97c11e636572fd743ee72b6  gcc/testsuite/g++.target/i386/mangle-ldbl-1.C
  fb6172109b269722e02aa230bd3522d8  gcc/testsuite/g++.target/i386/mangle-ldbl-2.C
  ae8574e23abf3d9af1504b3bec6f9ec6  gcc/testsuite/g++.target/i386/mangling-alias1.C
! ae2651261413c9389759f8bfa661ce25  gcc/testsuite/g++.target/i386/memset-pr101366-1.C
! 57024bf79b03bcb6b285444a8b28b612  gcc/testsuite/g++.target/i386/memset-pr101366-2.C
! b8a729f602b8c4186fa41e3590e709a8  gcc/testsuite/g++.target/i386/memset-pr108585-1a.C
! 7c4923efee1dc45a09ad760153187e5b  gcc/testsuite/g++.target/i386/memset-pr108585-1b.C
! 4ed896188ea2bea98c965e7e41f3d3d7  gcc/testsuite/g++.target/i386/memset-pr118276-1a.C
! a467604d2accb345c20c003f878494e4  gcc/testsuite/g++.target/i386/memset-pr118276-1b.C
! ac490f4c7437432cf3c76a1c44c29a8f  gcc/testsuite/g++.target/i386/memset-pr118276-1c.C
  d1b609c14400a770816be904e2e0cee2  gcc/testsuite/g++.target/i386/mv-symbols1.C
  c0b24207688618b815731387510d9bed  gcc/testsuite/g++.target/i386/mv-symbols2.C
  b621d2ff4930c57a97eff571164cd394  gcc/testsuite/g++.target/i386/mv-symbols3.C
*************** d2ae1e4b2fef59498e152708d155c0ae  gcc/te
*** 50949,50955 ****
  cae851a97f94d8ee7b316fc225a43f4d  gcc/testsuite/gcc.dg/Wmissing-profile.c
  c26e007c4c37c6a75ec7ae5f4b7772d7  gcc/testsuite/gcc.dg/Wmissing-variable-declarations.c
  69bffc588aca48800de6eae3fc04c7b0  gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c
! cf21dd47d3e7a7fd332e4ebdad43f47f  gcc/testsuite/gcc.dg/Wnested-externs-1.c
  7fdd14ff39022d393dca83d4d3b830d1  gcc/testsuite/gcc.dg/Wnested-externs-2.c
  2fb7927f6cb43b738ac0c6c4695c7fed  gcc/testsuite/gcc.dg/Wno-all.c
  f273410ff764324a50afef028667ebe5  gcc/testsuite/gcc.dg/Wno-attribute-warning.c
--- 50980,50986 ----
  cae851a97f94d8ee7b316fc225a43f4d  gcc/testsuite/gcc.dg/Wmissing-profile.c
  c26e007c4c37c6a75ec7ae5f4b7772d7  gcc/testsuite/gcc.dg/Wmissing-variable-declarations.c
  69bffc588aca48800de6eae3fc04c7b0  gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c
! a7734e5364ed24050d64c549952e1930  gcc/testsuite/gcc.dg/Wnested-externs-1.c
  7fdd14ff39022d393dca83d4d3b830d1  gcc/testsuite/gcc.dg/Wnested-externs-2.c
  2fb7927f6cb43b738ac0c6c4695c7fed  gcc/testsuite/gcc.dg/Wno-all.c
  f273410ff764324a50afef028667ebe5  gcc/testsuite/gcc.dg/Wno-attribute-warning.c
*************** bfcaf2a6892cf4c91bc0dac810231fdb  gcc/te
*** 51449,51460 ****
  ac65547952c25ba221985e37016c6fb2  gcc/testsuite/gcc.dg/analyzer/memcpy-1.c
  9c02a73028cac042acd872f0880e838c  gcc/testsuite/gcc.dg/analyzer/memmove-1.c
  acc662379756e41ce6873fb8ee91f0b1  gcc/testsuite/gcc.dg/analyzer/memset-CVE-2017-18549-1.c
! 1da9c29e2d92281c7ecc3e1a1a7983c8  gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c
  038154e6f7ad547c8c56ca9e4e3443bc  gcc/testsuite/gcc.dg/analyzer/mkostemp-1.c
  ffd48d4dbd1ac7c52d52f7dc4afb694b  gcc/testsuite/gcc.dg/analyzer/mkostemps-1.c
  536843e50b01db99dea7e71b72640a03  gcc/testsuite/gcc.dg/analyzer/mkstemp-1.c
! b239c113edac916be0a942242ddf5f11  gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c
! b120180d812c28a7cf0d9e204727a549  gcc/testsuite/gcc.dg/analyzer/mktemp-1.c
  5c81fadcddee7a5b13a23be5cad6701d  gcc/testsuite/gcc.dg/analyzer/named-constants-Wunused-macros.c
  249e92fa7bb08b66f184515348adf910  gcc/testsuite/gcc.dg/analyzer/named-constants-via-command-line.c
  0605ec7df17825d30fe4f6374f77bbe9  gcc/testsuite/gcc.dg/analyzer/named-constants-via-enum-and-macro.c
--- 51480,51491 ----
  ac65547952c25ba221985e37016c6fb2  gcc/testsuite/gcc.dg/analyzer/memcpy-1.c
  9c02a73028cac042acd872f0880e838c  gcc/testsuite/gcc.dg/analyzer/memmove-1.c
  acc662379756e41ce6873fb8ee91f0b1  gcc/testsuite/gcc.dg/analyzer/memset-CVE-2017-18549-1.c
! 921f478fbdef832cd2bca2616262029f  gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c
  038154e6f7ad547c8c56ca9e4e3443bc  gcc/testsuite/gcc.dg/analyzer/mkostemp-1.c
  ffd48d4dbd1ac7c52d52f7dc4afb694b  gcc/testsuite/gcc.dg/analyzer/mkostemps-1.c
  536843e50b01db99dea7e71b72640a03  gcc/testsuite/gcc.dg/analyzer/mkstemp-1.c
! 5ae22cecb7b04618ca0fab0434891f06  gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c
! b83c3fa603dbb061167664a24eaddff1  gcc/testsuite/gcc.dg/analyzer/mktemp-1.c
  5c81fadcddee7a5b13a23be5cad6701d  gcc/testsuite/gcc.dg/analyzer/named-constants-Wunused-macros.c
  249e92fa7bb08b66f184515348adf910  gcc/testsuite/gcc.dg/analyzer/named-constants-via-command-line.c
  0605ec7df17825d30fe4f6374f77bbe9  gcc/testsuite/gcc.dg/analyzer/named-constants-via-enum-and-macro.c
*************** c6c062afcbfcf1773f8643cb9c680878  gcc/te
*** 52309,52314 ****
--- 52340,52346 ----
  640106caf441d1dc13c7960973536172  gcc/testsuite/gcc.dg/bitint-134.c
  224168b724b7cd0477d851df0b0508fd  gcc/testsuite/gcc.dg/bitint-135.c
  2b817b0eceb5bad3bd6792766b2e505f  gcc/testsuite/gcc.dg/bitint-136.c
+ 53575d210b89232e79f90e210bebc31f  gcc/testsuite/gcc.dg/bitint-137.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
*************** fee170cf339868acb33c5715149bf98a  gcc/te
*** 52429,52434 ****
--- 52461,52467 ----
  dae16d12a9f56b20b1808543f1a55935  gcc/testsuite/gcc.dg/builtin-bitreverse-6.c
  7505a0dbfea2d68b89433cf3c99285b7  gcc/testsuite/gcc.dg/builtin-bitreverse-7.c
  2efbeca97298b1779f871b0bca6dc438  gcc/testsuite/gcc.dg/builtin-bitreverse-8.c
+ 9313c7095cf8b67cd3292b9f4b0c9048  gcc/testsuite/gcc.dg/builtin-bitreverse-9.c
  e37f4aca281a2c82829d2bf1650d5193  gcc/testsuite/gcc.dg/builtin-bswap-1.c
  8c6c4e4a58a4f180971e576b4fabe804  gcc/testsuite/gcc.dg/builtin-bswap-10.c
  999414d3fa6e5bfeb2e073f6ae328e91  gcc/testsuite/gcc.dg/builtin-bswap-11.c
*************** d879ca69386462507d34baeeaac6ff87  gcc/te
*** 57542,57548 ****
  fce9b0e78881985f76e0dd77bf2834f2  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-2_1.c
  6ced18e2b5e01709247b972ac330e680  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-3_0.c
  db7afbef19e4085f817f6d5503e94797  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-3_1.c
! a14df6b2b4fc781ec4a834c4bf18b13b  gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-1_0.c
  06309190fd3e222a7f4615a1e35b909a  gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-1_1.c
  fe37f244fa55d46efa4078f405290af2  gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-2_0.c
  e37f3db6688d550dbb2243182e4579f0  gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-2_1.c
--- 57575,57581 ----
  fce9b0e78881985f76e0dd77bf2834f2  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-2_1.c
  6ced18e2b5e01709247b972ac330e680  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-3_0.c
  db7afbef19e4085f817f6d5503e94797  gcc/testsuite/gcc.dg/lto/toplevel-extended-asm-3_1.c
! 8989ba571f3f699420c0929683ae50e3  gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-1_0.c
  06309190fd3e222a7f4615a1e35b909a  gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-1_1.c
  fe37f244fa55d46efa4078f405290af2  gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-2_0.c
  e37f3db6688d550dbb2243182e4579f0  gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-2_1.c
*************** b2e314205231dfc3005d83207407379b  gcc/te
*** 58931,58936 ****
--- 58964,58970 ----
  e43dcd43531182c1839bc3842972ef9a  gcc/testsuite/gcc.dg/pr123475.c
  2e58c4d553f61913c629f0f4e16cef6c  gcc/testsuite/gcc.dg/pr123537.c
  40c720d493fdf466beac8d906dcdb821  gcc/testsuite/gcc.dg/pr123544.c
+ 8d3ac6e76d67ce6bf826708e2e01a8c4  gcc/testsuite/gcc.dg/pr123569.c
  b64bff50aa325d3cdf648a6b7fec2e46  gcc/testsuite/gcc.dg/pr123656.c
  1d51dc92bcea9d1f45d53070aed9c180  gcc/testsuite/gcc.dg/pr123672.c
  46c8447cd9ed9e727c11f1f0d3e8967d  gcc/testsuite/gcc.dg/pr123716.c
*************** ee48fe70797eb5503b9b8767efccd315  gcc/te
*** 58950,58960 ****
--- 58984,58999 ----
  7de6d79dfadd35bbdff0e2c5faa767a3  gcc/testsuite/gcc.dg/pr124985.c
  4ac96a747a32d5c51b5be5c05cdd21c5  gcc/testsuite/gcc.dg/pr125019.c
  d05e4c7e8a6e722440c3fa08495a5de7  gcc/testsuite/gcc.dg/pr125050.c
+ 3c7423a9897969335d65075272d17e19  gcc/testsuite/gcc.dg/pr125072.c
  192df6769f6f110bb8f33708a1ceeea9  gcc/testsuite/gcc.dg/pr125117.c
  39e77ec3d93c3445ad8a73fa3d9fab87  gcc/testsuite/gcc.dg/pr125206.c
  402e7c0c2fa603af9c7bac556e8d71a8  gcc/testsuite/gcc.dg/pr125209.c
+ 7b30511bd41fb50fefd587c42e5d984c  gcc/testsuite/gcc.dg/pr125252.c
  8fcad4427391662fae9297f1c3447a78  gcc/testsuite/gcc.dg/pr125261.c
  b9e821b448b2a7ca97d76e3b0edfe9cf  gcc/testsuite/gcc.dg/pr125375.c
+ ab60b475998ea1ed92a9002d6336bfd6  gcc/testsuite/gcc.dg/pr125501.c
+ 81986438261d8b7deff16165747006c1  gcc/testsuite/gcc.dg/pr125579.c
+ 8c00b7615cb26255ca6f38542438e857  gcc/testsuite/gcc.dg/pr125588-1.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** e0aaf35916ca626fd4eb6512d1bcb49f  gcc/te
*** 60966,60971 ****
--- 61005,61011 ----
  71e51d140e2ea9bf0936bb0c01194726  gcc/testsuite/gcc.dg/pr98350-1.c
  07315bd3bf00b907a110f3de5d83188e  gcc/testsuite/gcc.dg/pr98350-2.c
  fe3fce151ef7e045021498cdad0f3ecf  gcc/testsuite/gcc.dg/pr98420.c
+ cd5e726805cff645ae655b03ba31752a  gcc/testsuite/gcc.dg/pr98539.c
  4f0e63f00efd7d973808399703ca48a9  gcc/testsuite/gcc.dg/pr98721-1.c
  b21ece181cd66a1e64aa9dde33e8d1d0  gcc/testsuite/gcc.dg/pr98721-2.c
  6f1182e067a6b12f97acf69996773c2e  gcc/testsuite/gcc.dg/pr98766.c
*************** a9069345cbc40d488766c1fbf34c5555  gcc/te
*** 61154,61160 ****
  555898d2432906a81b3aa66cb112a450  gcc/testsuite/gcc.dg/rtl/truncated-rtl-file.c
  3a9704d0df301152dace95218afa80c6  gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c
  9f24bc56eb71616b8a84e0574d67052a  gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
! e6be5b0e59456716966a1df6c27b4524  gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
  7cb433afad7af65b6faaf8f92aa621d5  gcc/testsuite/gcc.dg/rtl/x86_64/final.c
  27fbdc5130153553dc82837574ea77af  gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
  b33004ecc6eb9c724fbb982faf6bbe85  gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
--- 61194,61200 ----
  555898d2432906a81b3aa66cb112a450  gcc/testsuite/gcc.dg/rtl/truncated-rtl-file.c
  3a9704d0df301152dace95218afa80c6  gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c
  9f24bc56eb71616b8a84e0574d67052a  gcc/testsuite/gcc.dg/rtl/x86_64/dfinit.c
! b6fa0ee0fe38f704ff2534d8f4ee38e8  gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
  7cb433afad7af65b6faaf8f92aa621d5  gcc/testsuite/gcc.dg/rtl/x86_64/final.c
  27fbdc5130153553dc82837574ea77af  gcc/testsuite/gcc.dg/rtl/x86_64/into-cfglayout.c
  b33004ecc6eb9c724fbb982faf6bbe85  gcc/testsuite/gcc.dg/rtl/x86_64/ira.c
*************** a5b9e215eaee30cede04135bd18b6a59  gcc/te
*** 62828,62838 ****
  1380b111d91a82b39e2bcbae4eab1160  gcc/testsuite/gcc.dg/torture/pr125156.c
  f04a0ca1134a2f6b7f28283527f4394b  gcc/testsuite/gcc.dg/torture/pr125185.c
  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
--- 62868,62883 ----
  1380b111d91a82b39e2bcbae4eab1160  gcc/testsuite/gcc.dg/torture/pr125156.c
  f04a0ca1134a2f6b7f28283527f4394b  gcc/testsuite/gcc.dg/torture/pr125185.c
  4f9a7c7f22e75df6c54df1e67ad75557  gcc/testsuite/gcc.dg/torture/pr125234-1.c
! f4849047990250a3f9ee017d25b29b9a  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
+ e2a142dab1f38e7f7a8ffcdce454ce29  gcc/testsuite/gcc.dg/torture/pr125477.c
+ 87d7522fd6c7bc6f65afde68f9384069  gcc/testsuite/gcc.dg/torture/pr125502.c
+ 828006abdbcb5a0b6e3bc5451790d857  gcc/testsuite/gcc.dg/torture/pr125545.c
+ 865ae037be55d942ca9a21c2d93b6994  gcc/testsuite/gcc.dg/torture/pr125553.c
+ 5fd68126d95198e18114a17a92bae1c7  gcc/testsuite/gcc.dg/torture/pr125602.c
  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
*************** ac00cf20aa901dad53cb68baa97cc1f8  gcc/te
*** 64277,64282 ****
--- 64322,64328 ----
  151b70acaafa11170c060a221c5cb1f7  gcc/testsuite/gcc.dg/tree-ssa/backprop-4.c
  9d10ba95e8f24da60dec445a85298578  gcc/testsuite/gcc.dg/tree-ssa/backprop-5.c
  efa2bb6bd9a362254dd3391a43a800d2  gcc/testsuite/gcc.dg/tree-ssa/backprop-6.c
+ b90fd5851da5c65b02a6fd612e0d2b12  gcc/testsuite/gcc.dg/tree-ssa/backprop-7.c
  ad829088c2d182fe6e84645dc44f07e6  gcc/testsuite/gcc.dg/tree-ssa/bit-assoc.c
  b0045d2d08c49e824e2e272c7dcb35d1  gcc/testsuite/gcc.dg/tree-ssa/bit1neg-1.c
  5d6bac4cd841cbdee08ff003c81dc559  gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.1.c
*************** a2e7a9267052ac4ae19d933a4fe39c12  gcc/te
*** 64562,64568 ****
  5c71f313af73633da474793408a37470  gcc/testsuite/gcc.dg/tree-ssa/divide-6.c
  77e49fec8819a28745200ccf32657ae6  gcc/testsuite/gcc.dg/tree-ssa/divide-7.c
  d1e7893bac97fbc28f3fa03eb0accdbd  gcc/testsuite/gcc.dg/tree-ssa/divide-8.c
! 5ff4e3bb013af087df7774637a5a7f32  gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c
  0a7ff4f8ff2cbc2ad6ac233489b11964  gcc/testsuite/gcc.dg/tree-ssa/dump-1.c
  5d82d65865d66cefacac9df984f79919  gcc/testsuite/gcc.dg/tree-ssa/dump-2.c
  7370c151b033cdeebbda544f1dc37e74  gcc/testsuite/gcc.dg/tree-ssa/dump-3.c
--- 64608,64614 ----
  5c71f313af73633da474793408a37470  gcc/testsuite/gcc.dg/tree-ssa/divide-6.c
  77e49fec8819a28745200ccf32657ae6  gcc/testsuite/gcc.dg/tree-ssa/divide-7.c
  d1e7893bac97fbc28f3fa03eb0accdbd  gcc/testsuite/gcc.dg/tree-ssa/divide-8.c
! 0fe5e254134df06af63b1d15d6f35470  gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c
  0a7ff4f8ff2cbc2ad6ac233489b11964  gcc/testsuite/gcc.dg/tree-ssa/dump-1.c
  5d82d65865d66cefacac9df984f79919  gcc/testsuite/gcc.dg/tree-ssa/dump-2.c
  7370c151b033cdeebbda544f1dc37e74  gcc/testsuite/gcc.dg/tree-ssa/dump-3.c
*************** b8bc6aee646d4031c8e09f3cf11c2eb9  gcc/te
*** 65268,65273 ****
--- 65314,65320 ----
  7f3a7c07aebf7f97b00e05ed858383da  gcc/testsuite/gcc.dg/tree-ssa/pr120231-1.c
  dab88e25e03ff735e2c1de465e1513fc  gcc/testsuite/gcc.dg/tree-ssa/pr120231-2.c
  aeb12077d90e06af9a00cc755a37915a  gcc/testsuite/gcc.dg/tree-ssa/pr120231-3.c
+ a365c498e4c994c568028e0338653133  gcc/testsuite/gcc.dg/tree-ssa/pr120702.c
  ef9f94de68c006babcf9169489ed1b51  gcc/testsuite/gcc.dg/tree-ssa/pr121264.c
  f4c56a02709c699f81b07b81dd1a2c1e  gcc/testsuite/gcc.dg/tree-ssa/pr122033-1.c
  1f4ed1b8fa56e5300281263805887fd0  gcc/testsuite/gcc.dg/tree-ssa/pr122033-2.c
*************** f0a08ed77be180f8c72684f8274f2548  gcc/te
*** 65286,65297 ****
--- 65333,65346 ----
  ea753954e3d748d0fc657f06d315bb5d  gcc/testsuite/gcc.dg/tree-ssa/pr123967-3.c
  6061559fcec7d251eadc1694c6234322  gcc/testsuite/gcc.dg/tree-ssa/pr123967.c
  d87a1ad6187c06f07e6ee3b7c6352e9e  gcc/testsuite/gcc.dg/tree-ssa/pr124151.c
+ 8c0f48a2620b004e459ec5ecf6149add  gcc/testsuite/gcc.dg/tree-ssa/pr124405.c
  5283f91d0eefda6d127eab3dcbb26458  gcc/testsuite/gcc.dg/tree-ssa/pr124560.c
  0054e44a9d7f98f16363e68bc8142e0f  gcc/testsuite/gcc.dg/tree-ssa/pr124746-1.c
  f5cfea6a1b6fc4b038b869d0d5b623f1  gcc/testsuite/gcc.dg/tree-ssa/pr124886.c
  f129dd468dfe8a551c430253beea7ece  gcc/testsuite/gcc.dg/tree-ssa/pr125104.c
  20283de4958877c9f56821eb4c2d19cd  gcc/testsuite/gcc.dg/tree-ssa/pr125214.c
  fff67bd84df25cc9f3265a2fd89436d9  gcc/testsuite/gcc.dg/tree-ssa/pr125259.c
+ dbbc66ce4aef2adea320e51207ff99b8  gcc/testsuite/gcc.dg/tree-ssa/pr125612-1.c
  78e6c5fe63f7305009c8a79840fe20dc  gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
  eab19e0c04884cd782c9879cbe292109  gcc/testsuite/gcc.dg/tree-ssa/pr14341.c
  9945ed7002a5f7d4918e8ff5eb4cb647  gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c
*************** bb0b47f2c9661cb2634cf2fd425b6616  gcc/te
*** 65476,65482 ****
  d399c54ff1f418672631b2663e309737  gcc/testsuite/gcc.dg/tree-ssa/pr45085.c
  a2fced1270cbdc50e78585c0f2078558  gcc/testsuite/gcc.dg/tree-ssa/pr45122.c
  63e3b82c1076066595c2b360166356e1  gcc/testsuite/gcc.dg/tree-ssa/pr45144.c
! e229772ee53d3e2888b309d217fc8ce6  gcc/testsuite/gcc.dg/tree-ssa/pr45397.c
  592ff825eb1ae28f2cc9fc5efa4063f8  gcc/testsuite/gcc.dg/tree-ssa/pr45427.c
  ef6ec480a985cb16007d515286369fd3  gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
  8793af956556b38743f84824ebfff4c6  gcc/testsuite/gcc.dg/tree-ssa/pr46555.c
--- 65525,65531 ----
  d399c54ff1f418672631b2663e309737  gcc/testsuite/gcc.dg/tree-ssa/pr45085.c
  a2fced1270cbdc50e78585c0f2078558  gcc/testsuite/gcc.dg/tree-ssa/pr45122.c
  63e3b82c1076066595c2b360166356e1  gcc/testsuite/gcc.dg/tree-ssa/pr45144.c
! 39034b48b15e10755ba65245878abfa1  gcc/testsuite/gcc.dg/tree-ssa/pr45397.c
  592ff825eb1ae28f2cc9fc5efa4063f8  gcc/testsuite/gcc.dg/tree-ssa/pr45427.c
  ef6ec480a985cb16007d515286369fd3  gcc/testsuite/gcc.dg/tree-ssa/pr46076.c
  8793af956556b38743f84824ebfff4c6  gcc/testsuite/gcc.dg/tree-ssa/pr46555.c
*************** cd3e3a590031a7862742691f55854a22  gcc/te
*** 65992,65997 ****
--- 66041,66048 ----
  f5f5b1ba3e8f4784cb58191b03eb37be  gcc/testsuite/gcc.dg/tree-ssa/sccp-16.c
  63d4e72c76cf7ed65099b2b2f48ab339  gcc/testsuite/gcc.dg/tree-ssa/sccp-2.c
  42b99510cc5b8fea4f6a5325548506f6  gcc/testsuite/gcc.dg/tree-ssa/sccp-3.c
+ 87aaf1bd1909052a33112c3e78bba088  gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi-not-optimized.c
+ 57afe7c53f245ca60d7ae82409367a22  gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi.c
  52daa8eedbd22c7715c760e3a07d16d9  gcc/testsuite/gcc.dg/tree-ssa/scev-1.c
  d49a52812d0306aed6b4afd71f9a8985  gcc/testsuite/gcc.dg/tree-ssa/scev-10.c
  7ae93208200262329f17a545b36f75c4  gcc/testsuite/gcc.dg/tree-ssa/scev-11.c
*************** c357233e58ef311b1373027fe085936c  gcc/te
*** 66571,66576 ****
--- 66622,66629 ----
  991d629b156ecf31676c1e9d61465dbc  gcc/testsuite/gcc.dg/tree-ssa/vrp-from-cst-agg-7.c
  b8bce41399c7a872e19e6af776f1b0e8  gcc/testsuite/gcc.dg/tree-ssa/vrp-loop-1.c
  65e1c44626dcbb799fcde072f844d5ee  gcc/testsuite/gcc.dg/tree-ssa/vrp-loop-2.c
+ 6e04f9ee20526c68646b907cf9007a92  gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-1.c
+ 49dc19c76f5b5796dd3da3d27b48ea85  gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-2.c
  05c12d9d18ddba971b5eade05baa3576  gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable-1.c
  d01238cbd63ed71c9b0e630b2f98aa57  gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable-2.c
  8dcdf713e57cfeaf7d8143542c4e46f9  gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c
*************** b6636fcf606d4b2a9b3c129b082bc808  gcc/te
*** 66785,66792 ****
  ff67662e443c4c2342a61fcc8b49fa51  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c
  a54b7ba09da80c0c34480370f680bd80  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c
  6347b95d14e1d49cc381a4e01ce31162  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c
! a1ffc0a57c0651fd28b468f33372ff64  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c
! e996be05f2813b3912182783baab0bc8  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c
  05bb20a3d7386d43eb1e3dd852eeffe3  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-2.c
  9a2a9a3d06ff9ff7cb6952d4035bdbe0  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-3.c
  90a10543424a4e0854a58f9c2eaea888  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-4.c
--- 66838,66845 ----
  ff67662e443c4c2342a61fcc8b49fa51  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c
  a54b7ba09da80c0c34480370f680bd80  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c
  6347b95d14e1d49cc381a4e01ce31162  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c
! 4c01ea0cb9bba47599b5343c8581bb4b  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c
! 87b8899801db198bf582474f2c79ed45  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c
  05bb20a3d7386d43eb1e3dd852eeffe3  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-2.c
  9a2a9a3d06ff9ff7cb6952d4035bdbe0  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-3.c
  90a10543424a4e0854a58f9c2eaea888  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-4.c
*************** bea7f326889c0a8fbd1c274d297acf07  gcc/te
*** 66821,66827 ****
  6dd5a7b8f1dd237a95a0f42766ee64d9  gcc/testsuite/gcc.dg/ubsan/pr81162.c
  06d93596c4d6b81478bcb057ef7533f0  gcc/testsuite/gcc.dg/ubsan/pr81223.c
  bb206afd27601853bf04c68fdf6d7763  gcc/testsuite/gcc.dg/ubsan/pr81505.c
! 313140a74f330a5c68bf78802afa5cab  gcc/testsuite/gcc.dg/ubsan/pr81981.c
  a03c3f43eab7504cac64b70f59c4026c  gcc/testsuite/gcc.dg/ubsan/pr82498.c
  e95ed112f0ea45770ff240c4770cd2c7  gcc/testsuite/gcc.dg/ubsan/pr83014.c
  17140111ae1f82e04770b40c7b3940e3  gcc/testsuite/gcc.dg/ubsan/pr84508-1.c
--- 66874,66880 ----
  6dd5a7b8f1dd237a95a0f42766ee64d9  gcc/testsuite/gcc.dg/ubsan/pr81162.c
  06d93596c4d6b81478bcb057ef7533f0  gcc/testsuite/gcc.dg/ubsan/pr81223.c
  bb206afd27601853bf04c68fdf6d7763  gcc/testsuite/gcc.dg/ubsan/pr81505.c
! 470c22c05f7b236f4976c31bcd53c345  gcc/testsuite/gcc.dg/ubsan/pr81981.c
  a03c3f43eab7504cac64b70f59c4026c  gcc/testsuite/gcc.dg/ubsan/pr82498.c
  e95ed112f0ea45770ff240c4770cd2c7  gcc/testsuite/gcc.dg/ubsan/pr83014.c
  17140111ae1f82e04770b40c7b3940e3  gcc/testsuite/gcc.dg/ubsan/pr84508-1.c
*************** bf09afbba6493ac87c2ff39ded34ec66  gcc/te
*** 67469,67474 ****
--- 67522,67531 ----
  3f8b62ba680dacc49ae1affdc8a4eec7  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/vla_vs_vls-9.c
  8895b7114b18f43d6bf43cb52eef46e7  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/vse-slp-1.c
  29a9e73b3585e2597cfe33c8cdd94e43  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/vse-slp-2.c
+ 39c4e4532463cc7d53925b667c156059  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-ordered.c
+ d9e346721f0a13b22daecd7677418664  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-unordered.c
+ a6a18b78a66ec75be165a3677a172cd5  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-ldst-cost.c
+ 815f6615a254defce253085af62b0763  gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-stmt-cost.c
  782f0b41429f222276333f508cb8f6be  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-alignpeel.c
  05fc220f1ddbdb4d47d859b5d07869e2  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-fast-math-vect-pr29925.c
  1cdf0d7e4e3b665e1cc3792b6ab6e912  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-1.c
*************** ae7dd7b535828dd877ea453ce08b1b4b  gcc/te
*** 67815,67820 ****
--- 67872,67878 ----
  2838d9516eba265f0e0975f689ddd518  gcc/testsuite/gcc.dg/vect/pr123043.c
  17c5c38b2c03547dce34b548af8a2143  gcc/testsuite/gcc.dg/vect/pr123525.c
  86e3be2c542c86cb2ddd62c5080014e5  gcc/testsuite/gcc.dg/vect/pr123731.c
+ d5aa71d5c3c97ae8aba5aa2049a772e3  gcc/testsuite/gcc.dg/vect/pr125509.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  915cf38408eaa7fee5013d90ec1c3251  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** b3ab989c7fd4a3722c72edff57ac7f9d  gcc/te
*** 71826,71831 ****
--- 71884,71891 ----
  a588c84982135f60225d2a017f7b53df  gcc/testsuite/gcc.target/aarch64/pr124078-1.c
  3416e11e7fd77f36803f713303e6145a  gcc/testsuite/gcc.target/aarch64/pr124167.c
  092b09603aba6f2d4c58084993c984b1  gcc/testsuite/gcc.target/aarch64/pr124572.c
+ 96507a42a05f136a062f99a03b8ba35f  gcc/testsuite/gcc.target/aarch64/pr124713.c
+ 1ce51765be6403daef68bb844e13a7ec  gcc/testsuite/gcc.target/aarch64/pr125538.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
*************** f75d0405345296dc1bd56b0e3ff06a29  gcc/te
*** 72681,72686 ****
--- 72741,72747 ----
  b1a33a791c89383f575f412606f068a3  gcc/testsuite/gcc.target/aarch64/sme/clamp_3.c
  40b2965232972e2440ee8fa61d13b581  gcc/testsuite/gcc.target/aarch64/sme/clamp_4.c
  062d08488f4319f8147d8ea7541765cb  gcc/testsuite/gcc.target/aarch64/sme/clamp_5.c
+ a877b4ec90c34ec3828d80d4d3cc637b  gcc/testsuite/gcc.target/aarch64/sme/inline-asm.c
  016560dc141726f25baa60ea9a10d721  gcc/testsuite/gcc.target/aarch64/sme/inlining_1.c
  6c03deff04e9af5b436db5415f96f864  gcc/testsuite/gcc.target/aarch64/sme/inlining_10.c
  f45b72225fb0d71f35b6a6b77c7cb8b8  gcc/testsuite/gcc.target/aarch64/sme/inlining_11.c
*************** d42dd1ea70f8104be50f2b828342ef9a  gcc/te
*** 76821,76826 ****
--- 76882,76888 ----
  b88eab54dea3d3e5a60ff794d3268d8e  gcc/testsuite/gcc.target/aarch64/sve/pr122749_6.c
  d4ac7a84edd49408935038ba429c4a6d  gcc/testsuite/gcc.target/aarch64/sve/pr122749_8.c
  aab87b2d9daa75eaf07f2f4e47d63c11  gcc/testsuite/gcc.target/aarch64/sve/pr122749_9.c
+ cbe63b7384f92925c6e39116fe7f79c6  gcc/testsuite/gcc.target/aarch64/sve/pr122827.c
  806909efa49b7a7a797b079996626314  gcc/testsuite/gcc.target/aarch64/sve/pr123697.c
  8d516514d55b6987b8c79e9e3ce2bdb1  gcc/testsuite/gcc.target/aarch64/sve/pr123767.c
  2f20cf370ca6fbaebfa9f5d929b67a4c  gcc/testsuite/gcc.target/aarch64/sve/pr123897.c
*************** fede82c538ecebf82ae0f495a35f66db  gcc/te
*** 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
--- 77341,77347 ----
  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
! 1ab7179a50ebe58789702ebb78849ab1  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
*************** d75418024f450ee16a7a73711a6003a1  gcc/te
*** 79180,79186 ****
  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
--- 79242,79248 ----
  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
! a0934805d29f10431b8bcedf035efde9  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
*************** df8b684ced3c67573d1feada188938b6  gcc/te
*** 84625,84631 ****
  489303cb175b4f8022fe7d831bef0fe6  gcc/testsuite/gcc.target/i386/20030217-1.c
  41e29ea15c2438cdb075d08b5368c25f  gcc/testsuite/gcc.target/i386/20030217-2.c
  a3e554dab8a93a4d3090e2c2ca07addf  gcc/testsuite/gcc.target/i386/20030926-1.c
! 0b950f2c377b855a8965330671d83d12  gcc/testsuite/gcc.target/i386/20040112-1.c
  23e274aa6bf5841c3542d212ba52d17e  gcc/testsuite/gcc.target/i386/20050113-1.c
  d1076fdd8a8da68773355e333bf1e717  gcc/testsuite/gcc.target/i386/20051216-1.c
  9c2b1a032cf616abe10eceed52867464  gcc/testsuite/gcc.target/i386/20060125-1.c
--- 84687,84693 ----
  489303cb175b4f8022fe7d831bef0fe6  gcc/testsuite/gcc.target/i386/20030217-1.c
  41e29ea15c2438cdb075d08b5368c25f  gcc/testsuite/gcc.target/i386/20030217-2.c
  a3e554dab8a93a4d3090e2c2ca07addf  gcc/testsuite/gcc.target/i386/20030926-1.c
! b3537853af47bede2cf127e4dbc789f0  gcc/testsuite/gcc.target/i386/20040112-1.c
  23e274aa6bf5841c3542d212ba52d17e  gcc/testsuite/gcc.target/i386/20050113-1.c
  d1076fdd8a8da68773355e333bf1e717  gcc/testsuite/gcc.target/i386/20051216-1.c
  9c2b1a032cf616abe10eceed52867464  gcc/testsuite/gcc.target/i386/20060125-1.c
*************** df2002d51980a8fe3227dd410dccc984  gcc/te
*** 84779,84808 ****
  a1942f841fd2f6a8c62ff45bb98c8346  gcc/testsuite/gcc.target/i386/apx-interrupt-1.c
  9e8b8925bafe362fcf8ebd984ba486a3  gcc/testsuite/gcc.target/i386/apx-legacy-insn-check-norex2-asm.c
  0048c251e7a719f7b18c2f8a3c7defaf  gcc/testsuite/gcc.target/i386/apx-legacy-insn-check-norex2.c
! 5445ad3695d579a1afc41a7bea257e5b  gcc/testsuite/gcc.target/i386/apx-ndd-2.c
! ea9e689c411902c90ae3a04f5f77a1bb  gcc/testsuite/gcc.target/i386/apx-ndd-adc.c
! 6b34f73f3bb8ff9896b82fef8ede6bdf  gcc/testsuite/gcc.target/i386/apx-ndd-base-index-1.c
! 2ddfa53e08aded4b29c13276c4069bf4  gcc/testsuite/gcc.target/i386/apx-ndd-cmov.c
! 8b086a995b0b4f32f6c1b9eb29490982  gcc/testsuite/gcc.target/i386/apx-ndd-no-seg-global-1.c
! 32e19088e7101b07b75e900e5bd470ed  gcc/testsuite/gcc.target/i386/apx-ndd-sbb.c
! 6dcc39fd3eb46590cc2797d40ac4e0b3  gcc/testsuite/gcc.target/i386/apx-ndd-seg-1.c
! 17e1a9ed8337f680367147bb1344e4e9  gcc/testsuite/gcc.target/i386/apx-ndd-seg-2.c
! b6e599b4cc96f57de7a64c27e3c92aa3  gcc/testsuite/gcc.target/i386/apx-ndd-seg-3.c
! 16ed52e3d71e0e6c3593b9de3004335e  gcc/testsuite/gcc.target/i386/apx-ndd-seg-4.c
! 72c881b384869173b01c4e092e547b4c  gcc/testsuite/gcc.target/i386/apx-ndd-seg-5.c
! 54e6959ccdc4af3a418d51fd8d3225e5  gcc/testsuite/gcc.target/i386/apx-ndd-shld-shrd.c
  72665232e4e20114192126c16383477e  gcc/testsuite/gcc.target/i386/apx-ndd-ti-shift.c
! 48bb1176822575f268cc1bcc92027c73  gcc/testsuite/gcc.target/i386/apx-ndd-tls-1a.c
! a0e6b1231d46a713748b5a9108bbad5b  gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c
! 26b973e578d113bfe19274f6b260423b  gcc/testsuite/gcc.target/i386/apx-ndd-tls-2.c
! f79d898ef40db39bcbc383d512549f5a  gcc/testsuite/gcc.target/i386/apx-ndd-tls-3.c
! f331bf34bdd0201dd7790981418cd8c8  gcc/testsuite/gcc.target/i386/apx-ndd-tls-4.c
! 8f85b1ea5d63bc623f9d08d772d0c819  gcc/testsuite/gcc.target/i386/apx-ndd-x32-1.c
! 0ee7ea4f3c832d8e63a29b0235446dc2  gcc/testsuite/gcc.target/i386/apx-ndd-x32-2a.c
! 586d3aad0d165c0981eb80ec0e7fb62e  gcc/testsuite/gcc.target/i386/apx-ndd-x32-2b.c
! b3c414f1b3d6c48c7e20a5673443690c  gcc/testsuite/gcc.target/i386/apx-ndd-x32-2c.c
! 3e95982a863780ff44ad8aaffdb6def8  gcc/testsuite/gcc.target/i386/apx-ndd-x32-2d.c
! 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
--- 84841,84870 ----
  a1942f841fd2f6a8c62ff45bb98c8346  gcc/testsuite/gcc.target/i386/apx-interrupt-1.c
  9e8b8925bafe362fcf8ebd984ba486a3  gcc/testsuite/gcc.target/i386/apx-legacy-insn-check-norex2-asm.c
  0048c251e7a719f7b18c2f8a3c7defaf  gcc/testsuite/gcc.target/i386/apx-legacy-insn-check-norex2.c
! fc4c4391126114b2453f5c93481bf914  gcc/testsuite/gcc.target/i386/apx-ndd-2.c
! 7f8bc20ec8f18def15b87ad8d72b8edf  gcc/testsuite/gcc.target/i386/apx-ndd-adc.c
! f02238e467f2946d202f6d718be9db28  gcc/testsuite/gcc.target/i386/apx-ndd-base-index-1.c
! cada0f8a782f8acbce1e56dbe723fdd1  gcc/testsuite/gcc.target/i386/apx-ndd-cmov.c
! 4e9e6b68850faa5f7d11d9ee9c827948  gcc/testsuite/gcc.target/i386/apx-ndd-no-seg-global-1.c
! af7a323d2943cf68087ba393f8306206  gcc/testsuite/gcc.target/i386/apx-ndd-sbb.c
! dc44128fffea608a1efc7355f7ec1a12  gcc/testsuite/gcc.target/i386/apx-ndd-seg-1.c
! c115469efb1006bea9c5b922c9d3f77a  gcc/testsuite/gcc.target/i386/apx-ndd-seg-2.c
! 9752af50b256044659d6197ad0144135  gcc/testsuite/gcc.target/i386/apx-ndd-seg-3.c
! 20fde25b67d83747a1a3d56edb583d2c  gcc/testsuite/gcc.target/i386/apx-ndd-seg-4.c
! 093dd32852a9f9df1b81d85151dc47d7  gcc/testsuite/gcc.target/i386/apx-ndd-seg-5.c
! e6cf1f57117a327c2a8403e9bd727fce  gcc/testsuite/gcc.target/i386/apx-ndd-shld-shrd.c
  72665232e4e20114192126c16383477e  gcc/testsuite/gcc.target/i386/apx-ndd-ti-shift.c
! a98fe0707c6ff1ebf16461739a1bd17f  gcc/testsuite/gcc.target/i386/apx-ndd-tls-1a.c
! 080ff0969444b894aae0f8c08309fa89  gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c
! 21f61a37661bcb2d9262601db70b0300  gcc/testsuite/gcc.target/i386/apx-ndd-tls-2.c
! 6563a8bd5e2517e9c3be1c8a3d088d0f  gcc/testsuite/gcc.target/i386/apx-ndd-tls-3.c
! 8ad147779c7f472ff1a33295af4cee29  gcc/testsuite/gcc.target/i386/apx-ndd-tls-4.c
! 265fa262e43012df9a10b7a4b6c90aa6  gcc/testsuite/gcc.target/i386/apx-ndd-x32-1.c
! 5ee3be724d2c5067df4898ef090c2bfd  gcc/testsuite/gcc.target/i386/apx-ndd-x32-2a.c
! c1546bcbe8f9919de21f3c3439801da2  gcc/testsuite/gcc.target/i386/apx-ndd-x32-2b.c
! 91bd8d7d3fa70e8512f7a0bf059365b6  gcc/testsuite/gcc.target/i386/apx-ndd-x32-2c.c
! f4cdffff9255a43d61c0b4925b4f263a  gcc/testsuite/gcc.target/i386/apx-ndd-x32-2d.c
! 35d73f791e6f05d544c3a3e04d85aeb1  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
*************** a0087c60ab6914bc07a95e55747be0f6  gcc/te
*** 84819,84824 ****
--- 84881,84887 ----
  3247c637a4f9e8976b8bc48f0c8aea40  gcc/testsuite/gcc.target/i386/apx-zu-1.c
  28515ca55dda5aa1ef1a093bad3796fa  gcc/testsuite/gcc.target/i386/apx-zu-2.c
  dcf2a424ef2dff7b26c8b3f00c3e2cb3  gcc/testsuite/gcc.target/i386/apx-zu-3.c
+ 21d1f348030c6afbef2724a1b656cc2a  gcc/testsuite/gcc.target/i386/apx-zu-4.c
  1d9d11dcd88432f117e44c643ec90ad2  gcc/testsuite/gcc.target/i386/ashldi3-1.c
  0fe4c919ffa886428aea4dfbafae6152  gcc/testsuite/gcc.target/i386/ashldi3-2.c
  6b37f3af0f281a50739a4dabbfa5799a  gcc/testsuite/gcc.target/i386/ashlti3-1.c
*************** a86fc7d9e3eb32e85df89db1a80bc4b2  gcc/te
*** 86171,86176 ****
--- 86234,86242 ----
  c6dd0e8c40911df14c1fab26ea71eb01  gcc/testsuite/gcc.target/i386/avx512-fma-7.h
  9f5f97d054e0b3fa4dae0cfafc067bd4  gcc/testsuite/gcc.target/i386/avx512-fma-8.h
  c20792613e2de72bf223a9deb9981150  gcc/testsuite/gcc.target/i386/avx512-pr115517.c
+ 4e22ac02ab15a9749ae3d79688009d30  gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-1.c
+ f4b3ed9a52fecb0f324e977c17e6be98  gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-2.c
+ 6e704bcb0877880683f8ee875bf90576  gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-3.c
  d29c79e3f90ea13ca131538d02e8cbea  gcc/testsuite/gcc.target/i386/avx512bf16-cvtsbh2ss-1.c
  62b19e80a3afe81ed00caf74d9ff1785  gcc/testsuite/gcc.target/i386/avx512bf16-pr108881.c
  be5ec5e06a11542721a6fb86aea97864  gcc/testsuite/gcc.target/i386/avx512bf16-truncsfbf.c
*************** a9b1dee6ec200856939709d32118cf4d  gcc/te
*** 89099,89146 ****
  98071546dc47914bb36a912c7912aca2  gcc/testsuite/gcc.target/i386/builtin-bswap-3.c
  3605b461ca62ccb4a3f70ccc13695ed5  gcc/testsuite/gcc.target/i386/builtin-bswap-4.c
  aa862ceda0d7a76c1857d703604c7cf7  gcc/testsuite/gcc.target/i386/builtin-bswap-5.c
! 1cbbb5c11d03ef14cc572f92367e634c  gcc/testsuite/gcc.target/i386/builtin-copysign-2.c
! d9fd556f0a900f1eeb821282dd2fdfc3  gcc/testsuite/gcc.target/i386/builtin-copysign-3.c
! 05a95e1275df019f68cbb9b92c22a753  gcc/testsuite/gcc.target/i386/builtin-copysign-4.c
! 05b8121d5ab95264781fe0c86c3733ad  gcc/testsuite/gcc.target/i386/builtin-copysign-5.c
! dd9e244450fc1186bb05177aa40dd649  gcc/testsuite/gcc.target/i386/builtin-copysign-6.c
! b2b902794a834905273f7d6e545af4a5  gcc/testsuite/gcc.target/i386/builtin-copysign-7.c
! 1652649eed3f3b6f25fe15e21b1602e8  gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c
! 5b70b593c48a53059fc4b6c69cdfc01e  gcc/testsuite/gcc.target/i386/builtin-copysign-8b.c
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
! 16a1772ee3b6cb3710aa245189c0ff5d  gcc/testsuite/gcc.target/i386/builtin-fabs-1.c
  eb024e3b157728adf6d4f14b1bd4c69d  gcc/testsuite/gcc.target/i386/builtin-fabs-2.c
  83540904d3592a74a85860a8850ad325  gcc/testsuite/gcc.target/i386/builtin-has-attribute.c
  c9f542098c7044c5b8ac4b18be20d199  gcc/testsuite/gcc.target/i386/builtin-issignaling-1.c
! f92820a41f6f283edfca4bf4ea0ab663  gcc/testsuite/gcc.target/i386/builtin-memmove-10.c
! af6879dd68c18d6fb9135172c62780cf  gcc/testsuite/gcc.target/i386/builtin-memmove-11a.c
! ec930842b833b3711093a46ebc85c416  gcc/testsuite/gcc.target/i386/builtin-memmove-11b.c
! 165cd0152d8823f6bc085362e3c1e3cd  gcc/testsuite/gcc.target/i386/builtin-memmove-11c.c
! 0080c5452a1fb8c09de48d901c5bd109  gcc/testsuite/gcc.target/i386/builtin-memmove-12.c
! 976ff34ad69649e4678e5ebc3f810abd  gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
! 5f0a205134ff8b7d5f1c8b73624ee28e  gcc/testsuite/gcc.target/i386/builtin-memmove-14.c
! e7cad3d08d996056fc8a28d9b56399ef  gcc/testsuite/gcc.target/i386/builtin-memmove-15.c
! 1f23c4a706489ed24893fbc9e5894432  gcc/testsuite/gcc.target/i386/builtin-memmove-1a.c
! 25092f6b662fe49e65ebf33d1e9d00f9  gcc/testsuite/gcc.target/i386/builtin-memmove-1b.c
! 04cfc49e9c98196fafafe6a9d2bd63e7  gcc/testsuite/gcc.target/i386/builtin-memmove-1c.c
! 8f82517cf2ac06ec2c9a754bd80cd5ce  gcc/testsuite/gcc.target/i386/builtin-memmove-1d.c
! 6718f8a9382ee3586fc04ffe32d11573  gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c
! 2e5c70cffae7e346547b87920e2fd87f  gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c
! a77ee050381cf7d797b66fea4ceb35bc  gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c
! 226971c24fe3bd0c7bf3cf434d4c6bb9  gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c
! f0f80d6211762c5a341c4ace48eb1cd1  gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c
! 7444ac6c92233f60ceb0f3d814d332dd  gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c
! 14b28a94acf493e599766a9b947c32a7  gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c
! 8f3ae53d29f1aa2a71f8e5d3e4aa2f7b  gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c
! b9d82ccd6b289bd9aa1abc158e734d5a  gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c
! fb04ffbc492314c31aafa028a20eeffd  gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c
! 34c225f06d7c81f4ae4395fca44611eb  gcc/testsuite/gcc.target/i386/builtin-memmove-5a.c
! 8365a134469e37f43c0315ef1ba7ddfe  gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c
! 422a9214d654c7d7147481de92fb21ae  gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c
! f8242baffe6049ab6171deca32bc1858  gcc/testsuite/gcc.target/i386/builtin-memmove-6.c
! af8deba3ec387b5885200e18bc784860  gcc/testsuite/gcc.target/i386/builtin-memmove-7.c
! 9805f45c28f2fa5c3f205001f2258c6e  gcc/testsuite/gcc.target/i386/builtin-memmove-8.c
! ec44fa62b70ca6336bf8860bd05b5486  gcc/testsuite/gcc.target/i386/builtin-memmove-9.c
  07c7b1b786ccb4b67484b353aa40d9c7  gcc/testsuite/gcc.target/i386/builtin-ucmp.c
  c8f91a97e3f4734a3595572bab26a3e7  gcc/testsuite/gcc.target/i386/builtin-unreachable.c
  5fa05e3eb27a2bfb180c0a1a14e3db07  gcc/testsuite/gcc.target/i386/builtin_target.c
--- 89165,89212 ----
  98071546dc47914bb36a912c7912aca2  gcc/testsuite/gcc.target/i386/builtin-bswap-3.c
  3605b461ca62ccb4a3f70ccc13695ed5  gcc/testsuite/gcc.target/i386/builtin-bswap-4.c
  aa862ceda0d7a76c1857d703604c7cf7  gcc/testsuite/gcc.target/i386/builtin-bswap-5.c
! 654b3662e0d1c66895af4e0b4c302291  gcc/testsuite/gcc.target/i386/builtin-copysign-2.c
! c77edd4d8dc9ee85bf93b6e2c114d962  gcc/testsuite/gcc.target/i386/builtin-copysign-3.c
! fa6ebeb8a38629b307b197117b388ef7  gcc/testsuite/gcc.target/i386/builtin-copysign-4.c
! 183539c22965737f5ebca3d3e47d261b  gcc/testsuite/gcc.target/i386/builtin-copysign-5.c
! 28a4a0d6bd0e09a7f1da7f5515db9c70  gcc/testsuite/gcc.target/i386/builtin-copysign-6.c
! eeb2c795579e4b693eed6b471e041925  gcc/testsuite/gcc.target/i386/builtin-copysign-7.c
! 4dde22c7279c7c8e684af5f718431d7d  gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c
! 19fe0cd1992bc2d71db601dda2c2bd34  gcc/testsuite/gcc.target/i386/builtin-copysign-8b.c
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
! 7c1badccd4856954ccba2139093860d2  gcc/testsuite/gcc.target/i386/builtin-fabs-1.c
  eb024e3b157728adf6d4f14b1bd4c69d  gcc/testsuite/gcc.target/i386/builtin-fabs-2.c
  83540904d3592a74a85860a8850ad325  gcc/testsuite/gcc.target/i386/builtin-has-attribute.c
  c9f542098c7044c5b8ac4b18be20d199  gcc/testsuite/gcc.target/i386/builtin-issignaling-1.c
! 796478c3e44716378949acd047135b20  gcc/testsuite/gcc.target/i386/builtin-memmove-10.c
! 2a909144f356c6abe5101ec9e2880e24  gcc/testsuite/gcc.target/i386/builtin-memmove-11a.c
! ca4ac7cac7f4e2b202119db822204403  gcc/testsuite/gcc.target/i386/builtin-memmove-11b.c
! 8c5a3a00914eebf9c467039b0b0987b6  gcc/testsuite/gcc.target/i386/builtin-memmove-11c.c
! 0da881a744f7455874ffb57af93ca6b9  gcc/testsuite/gcc.target/i386/builtin-memmove-12.c
! a36b2a8ea09b3ccd83284edb683f132e  gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
! e581bb0a3fb7e1eadbb5e26f9c5c052c  gcc/testsuite/gcc.target/i386/builtin-memmove-14.c
! 1196e40188bad91db0ea2bfa57e022f4  gcc/testsuite/gcc.target/i386/builtin-memmove-15.c
! b3d1977118e8680a2aa93f5ff59f54af  gcc/testsuite/gcc.target/i386/builtin-memmove-1a.c
! 91dc1ae7b1d3070536b853d79edb3060  gcc/testsuite/gcc.target/i386/builtin-memmove-1b.c
! c7486eacb8f21a9faa7a88250552d23b  gcc/testsuite/gcc.target/i386/builtin-memmove-1c.c
! 6bdd536952c2a8eb5975c34eebd15a0e  gcc/testsuite/gcc.target/i386/builtin-memmove-1d.c
! 38961a11e4d58f549f2126a9a5ab9093  gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c
! e54aef98789a7b0070da3175d8a63019  gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c
! 7d1ec4642974a3f49484c76d1b874bde  gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c
! be54bc9a406086941587722e0c31d4bb  gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c
! 975b37c4b37b3351a64587f05d06d9e7  gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c
! 28d0a29146665bbdf23ab12ce7a1e28c  gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c
! e81a2f410dffed53506c5656923df80e  gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c
! 2d4e883108aa7d3209d5c986d01c5b51  gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c
! ce85de4ada4ea5047b86c2100a6b97bf  gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c
! e9dc38e746248e3164588924e4aa229e  gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c
! f0ee0e5daef7ee8c6951c3cfbecf1139  gcc/testsuite/gcc.target/i386/builtin-memmove-5a.c
! 3f1e185bcf3fb7c439a84182f2c3c49c  gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c
! 492025d80fc99c083780b0fc33948922  gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c
! 67ced6d25a48687099d02468966de034  gcc/testsuite/gcc.target/i386/builtin-memmove-6.c
! ee4f3b3c9dd2fc966fd73009122dc04a  gcc/testsuite/gcc.target/i386/builtin-memmove-7.c
! a21a2135b5311d84b5e4be4d33156711  gcc/testsuite/gcc.target/i386/builtin-memmove-8.c
! b41d9e6002dd46f3c6c0d6d39dea37ee  gcc/testsuite/gcc.target/i386/builtin-memmove-9.c
  07c7b1b786ccb4b67484b353aa40d9c7  gcc/testsuite/gcc.target/i386/builtin-ucmp.c
  c8f91a97e3f4734a3595572bab26a3e7  gcc/testsuite/gcc.target/i386/builtin-unreachable.c
  5fa05e3eb27a2bfb180c0a1a14e3db07  gcc/testsuite/gcc.target/i386/builtin_target.c
*************** d9248423c9f1c716a36c066054a7f5b9  gcc/te
*** 89194,89206 ****
  b20d49e3df7ecba263d6a023f199461f  gcc/testsuite/gcc.target/i386/cet-switch-3.c
  5f04987af425e4bdd6af970c8dbd52c7  gcc/testsuite/gcc.target/i386/cf_check-1.c
  f4872e03d1c7304a4bec272a2fe13dce  gcc/testsuite/gcc.target/i386/cf_check-10.c
! d7c38121c6376676dd85c9457538537e  gcc/testsuite/gcc.target/i386/cf_check-11.c
  509c1c95f3a1096c762b7fd019e83e4e  gcc/testsuite/gcc.target/i386/cf_check-2.c
  77f13ccc769fbeb31556af0dea458693  gcc/testsuite/gcc.target/i386/cf_check-3.c
  5c3b7040795451a42f588086b955b02d  gcc/testsuite/gcc.target/i386/cf_check-4.c
  365b20e670ddcffaf52fe6a4f718095f  gcc/testsuite/gcc.target/i386/cf_check-5.c
  e3bc6bdf24f38e69ec436864405bc65d  gcc/testsuite/gcc.target/i386/cf_check-6.c
! 225c417de9175a95e5527845dca32cb3  gcc/testsuite/gcc.target/i386/cf_check-7.c
  5c8d09cd4849698374e9325b9233a400  gcc/testsuite/gcc.target/i386/cf_check-8.c
  89c6eae337ef104e2bfd58d5fabdc05b  gcc/testsuite/gcc.target/i386/cf_check-9.c
  d236bc684017e128d2809e943a21a577  gcc/testsuite/gcc.target/i386/cldemote-1.c
--- 89260,89272 ----
  b20d49e3df7ecba263d6a023f199461f  gcc/testsuite/gcc.target/i386/cet-switch-3.c
  5f04987af425e4bdd6af970c8dbd52c7  gcc/testsuite/gcc.target/i386/cf_check-1.c
  f4872e03d1c7304a4bec272a2fe13dce  gcc/testsuite/gcc.target/i386/cf_check-10.c
! da7afaa484f59e8dbdf4c68edba73d50  gcc/testsuite/gcc.target/i386/cf_check-11.c
  509c1c95f3a1096c762b7fd019e83e4e  gcc/testsuite/gcc.target/i386/cf_check-2.c
  77f13ccc769fbeb31556af0dea458693  gcc/testsuite/gcc.target/i386/cf_check-3.c
  5c3b7040795451a42f588086b955b02d  gcc/testsuite/gcc.target/i386/cf_check-4.c
  365b20e670ddcffaf52fe6a4f718095f  gcc/testsuite/gcc.target/i386/cf_check-5.c
  e3bc6bdf24f38e69ec436864405bc65d  gcc/testsuite/gcc.target/i386/cf_check-6.c
! cdcd52464119162fae9929d9eb5230fe  gcc/testsuite/gcc.target/i386/cf_check-7.c
  5c8d09cd4849698374e9325b9233a400  gcc/testsuite/gcc.target/i386/cf_check-8.c
  89c6eae337ef104e2bfd58d5fabdc05b  gcc/testsuite/gcc.target/i386/cf_check-9.c
  d236bc684017e128d2809e943a21a577  gcc/testsuite/gcc.target/i386/cldemote-1.c
*************** f82327ef3caa200d8024822491c53316  gcc/te
*** 89815,89827 ****
  cda0d89452347311cc45a79be2d8f0fc  gcc/testsuite/gcc.target/i386/memcpy-1.c
  6497cb2d22febb00a904f50025d863bd  gcc/testsuite/gcc.target/i386/memcpy-2.c
  536862ceddae932e3d7da830f0866d31  gcc/testsuite/gcc.target/i386/memcpy-3.c
! 61f067e97ef7661b328544cddc4fce84  gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
! 963cf7c70833417bd7ec72b655c36c05  gcc/testsuite/gcc.target/i386/memcpy-pr120683-2.c
! 294f0b7de37402b97963a25170136b44  gcc/testsuite/gcc.target/i386/memcpy-pr120683-3.c
! 5c40bfb81ef657b9d485b5f118285cfe  gcc/testsuite/gcc.target/i386/memcpy-pr120683-4.c
! 3dd30982a1b546fe9fb173e08b8dff39  gcc/testsuite/gcc.target/i386/memcpy-pr120683-5.c
! d8d5fa70bf0fe7ad815058c87f4256b2  gcc/testsuite/gcc.target/i386/memcpy-pr120683-6.c
! 71cbfaef4dc074d8da0d369485970861  gcc/testsuite/gcc.target/i386/memcpy-pr120683-7.c
  50517fb5d4646033c91f4ffec32d7d69  gcc/testsuite/gcc.target/i386/memcpy-pr120708-1.c
  3cf7b29a1b5359f4e7c6819c7d0fef69  gcc/testsuite/gcc.target/i386/memcpy-pr120708-2.c
  5cb0b1e67d33f6577154b5348833c2ea  gcc/testsuite/gcc.target/i386/memcpy-pr120708-3.c
--- 89881,89893 ----
  cda0d89452347311cc45a79be2d8f0fc  gcc/testsuite/gcc.target/i386/memcpy-1.c
  6497cb2d22febb00a904f50025d863bd  gcc/testsuite/gcc.target/i386/memcpy-2.c
  536862ceddae932e3d7da830f0866d31  gcc/testsuite/gcc.target/i386/memcpy-3.c
! 9fa7a6326f3d11b682cb479a8e377be9  gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
! 7dcdfb936a5e9319d0ce3de66d116f21  gcc/testsuite/gcc.target/i386/memcpy-pr120683-2.c
! 8c8645f997667de2ca5af8c64994b797  gcc/testsuite/gcc.target/i386/memcpy-pr120683-3.c
! e74cbebb014ae1d81d8b723847091547  gcc/testsuite/gcc.target/i386/memcpy-pr120683-4.c
! 96b01e25b238ff661a53a04edc225639  gcc/testsuite/gcc.target/i386/memcpy-pr120683-5.c
! ce214f76d1556b3d97b536d4f6631ec7  gcc/testsuite/gcc.target/i386/memcpy-pr120683-6.c
! 12e344dbf4ff44874eb33d217bd3fedf  gcc/testsuite/gcc.target/i386/memcpy-pr120683-7.c
  50517fb5d4646033c91f4ffec32d7d69  gcc/testsuite/gcc.target/i386/memcpy-pr120708-1.c
  3cf7b29a1b5359f4e7c6819c7d0fef69  gcc/testsuite/gcc.target/i386/memcpy-pr120708-2.c
  5cb0b1e67d33f6577154b5348833c2ea  gcc/testsuite/gcc.target/i386/memcpy-pr120708-3.c
*************** ddb515e6955a2e895cb9e026084d6457  gcc/te
*** 89832,89838 ****
  11e1d1767b79743e4e65a799f3369907  gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
  b82d9188c52a269893b5ac6b25f9e515  gcc/testsuite/gcc.target/i386/memcpy-strategy-10.c
  619cbc26dc85de4ded3f5a985d0a23a2  gcc/testsuite/gcc.target/i386/memcpy-strategy-11.c
! 4bb27cf351b9a20aabcf7d2fa1d5efe0  gcc/testsuite/gcc.target/i386/memcpy-strategy-12.c
  44dcb4858ee7dffcecaaa96814b9b8c2  gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
  a948cf11841f5be3746dbd9613e72c59  gcc/testsuite/gcc.target/i386/memcpy-strategy-14.c
  81a646881b73313339b3c5553f5de316  gcc/testsuite/gcc.target/i386/memcpy-strategy-15.c
--- 89898,89904 ----
  11e1d1767b79743e4e65a799f3369907  gcc/testsuite/gcc.target/i386/memcpy-strategy-1.c
  b82d9188c52a269893b5ac6b25f9e515  gcc/testsuite/gcc.target/i386/memcpy-strategy-10.c
  619cbc26dc85de4ded3f5a985d0a23a2  gcc/testsuite/gcc.target/i386/memcpy-strategy-11.c
! a40df075accc907af3e7a421587eb309  gcc/testsuite/gcc.target/i386/memcpy-strategy-12.c
  44dcb4858ee7dffcecaaa96814b9b8c2  gcc/testsuite/gcc.target/i386/memcpy-strategy-13.c
  a948cf11841f5be3746dbd9613e72c59  gcc/testsuite/gcc.target/i386/memcpy-strategy-14.c
  81a646881b73313339b3c5553f5de316  gcc/testsuite/gcc.target/i386/memcpy-strategy-15.c
*************** ee6163f62ab711d692467ababe19d6e8  gcc/te
*** 89847,89895 ****
  229037e2f4a7e551952f59d46c8a2267  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
  f6fd4449a72ddd84f5687641334109d2  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
! 144bb3ce21d3fddaf775a954d9b26afe  gcc/testsuite/gcc.target/i386/memset-pr120683-1.c
! d89075b38cba9757a17e02807f14afae  gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
! 2a950977ad569a565f9af272e2c31dba  gcc/testsuite/gcc.target/i386/memset-pr120683-11.c
! 94b4f8a026590940e722a0b5f30940d7  gcc/testsuite/gcc.target/i386/memset-pr120683-12.c
! 0aba3e9ba1cf4bf89491af9f4b1d3020  gcc/testsuite/gcc.target/i386/memset-pr120683-13.c
! 46815c785fe46d0da893cbc07e54c512  gcc/testsuite/gcc.target/i386/memset-pr120683-14.c
! a379b3507b29499a9ede7c8c939598d6  gcc/testsuite/gcc.target/i386/memset-pr120683-15.c
! 90ac5e5a9ca2fb087d80f8882c461fc3  gcc/testsuite/gcc.target/i386/memset-pr120683-16.c
! 863ee4109db521adeb83b9b8cff0a21c  gcc/testsuite/gcc.target/i386/memset-pr120683-17.c
! 5015d593fe9ee5d7da58f6a71533caf9  gcc/testsuite/gcc.target/i386/memset-pr120683-18.c
! 130750aab86baf6a72b4899c2effa115  gcc/testsuite/gcc.target/i386/memset-pr120683-19.c
! c097ce9a797cf4f3badca0ca8225a807  gcc/testsuite/gcc.target/i386/memset-pr120683-2.c
! 3376e8abdd21f1312a182cdbcc166b55  gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
! 3ca7907be983200a41e2a3ab932cd9df  gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
! 9bbdaa44eb61b179783974f67ca2f039  gcc/testsuite/gcc.target/i386/memset-pr120683-22.c
! e833d13a71fc8930094caec96537c2c2  gcc/testsuite/gcc.target/i386/memset-pr120683-23.c
! 7c5a7c0f16d9029e59fa5e082bbfa0a6  gcc/testsuite/gcc.target/i386/memset-pr120683-3.c
! 7bc91f7bb0ac2ec4eb5ea3e7faee0256  gcc/testsuite/gcc.target/i386/memset-pr120683-4.c
! 3d5b44dc66cd49adeea1534cf1418f6d  gcc/testsuite/gcc.target/i386/memset-pr120683-5.c
! 24cb5e20050ba9e0889a599525ecc0a9  gcc/testsuite/gcc.target/i386/memset-pr120683-6.c
! 5712eca2727131914b34b143f2ca248b  gcc/testsuite/gcc.target/i386/memset-pr120683-7.c
! 5ab4a94a2f8aeb20bbb713449c6c9de9  gcc/testsuite/gcc.target/i386/memset-pr120683-8.c
! dde2c8f3ed2090b842bca4dbe94e62ce  gcc/testsuite/gcc.target/i386/memset-pr120683-9.c
  d40214a38af3060ba1bba456c7399a32  gcc/testsuite/gcc.target/i386/memset-pr120708-1.c
  131f444cf3fea918073579825312e430  gcc/testsuite/gcc.target/i386/memset-pr120708-2.c
! 3f0255c241f24134fb749a823f1ad464  gcc/testsuite/gcc.target/i386/memset-pr70308-1a.c
! 98a6598531c96fdc42cde08bffce0708  gcc/testsuite/gcc.target/i386/memset-pr70308-1b.c
  5d42d8053ea9c0f90ccef1a5662638be  gcc/testsuite/gcc.target/i386/memset-strategy-1.c
! eda96df37fdef4ddbead9ea2a24d7804  gcc/testsuite/gcc.target/i386/memset-strategy-10.c
  80f552aba0b3173b7903784b13ff17d9  gcc/testsuite/gcc.target/i386/memset-strategy-11.c
  02939d69e3c8cdd4b15b50bd83322ba8  gcc/testsuite/gcc.target/i386/memset-strategy-12.c
! 6d3ac1d71d2783a2d169fab1267386e1  gcc/testsuite/gcc.target/i386/memset-strategy-13.c
  58bfce62a58f473b1dd0dc599a4a3aac  gcc/testsuite/gcc.target/i386/memset-strategy-14.c
  42dfcbe76f482f1cc458b2d38bec4d47  gcc/testsuite/gcc.target/i386/memset-strategy-15.c
  87a904e845122510f206442a6c10f24a  gcc/testsuite/gcc.target/i386/memset-strategy-16.c
  e34fc4954adf255e63dd959604f68e95  gcc/testsuite/gcc.target/i386/memset-strategy-2.c
! 779e343039c7a7c389207738c50e6d8a  gcc/testsuite/gcc.target/i386/memset-strategy-25.c
  a94047349a1abfeda6fc4e2dcf8263fe  gcc/testsuite/gcc.target/i386/memset-strategy-26.c
  7450283d0eb74c8d5f86beff98d12f17  gcc/testsuite/gcc.target/i386/memset-strategy-27.c
! 5afca45ae7031a0cf4da807090dedffe  gcc/testsuite/gcc.target/i386/memset-strategy-28.c
! b3df0b7131b5bce7bf021f2e3d7641d3  gcc/testsuite/gcc.target/i386/memset-strategy-29.c
  ab2b88f0bcce4626b92af0e20a2b1f62  gcc/testsuite/gcc.target/i386/memset-strategy-3.c
! a64da96a4e20f4289069675f0b8177c3  gcc/testsuite/gcc.target/i386/memset-strategy-30.c
  ff1b7cf76c072b384368284dd0926f42  gcc/testsuite/gcc.target/i386/memset-strategy-31.c
  20e5e2cabbded0b26bce978e68dfb2f0  gcc/testsuite/gcc.target/i386/memset-strategy-4.c
  fad1f723fea113cd6e9ed9c154a8ac50  gcc/testsuite/gcc.target/i386/memset-strategy-5.c
--- 89913,89961 ----
  229037e2f4a7e551952f59d46c8a2267  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c
  f6fd4449a72ddd84f5687641334109d2  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
! 647352383c809884f76f16938eb90cd2  gcc/testsuite/gcc.target/i386/memset-pr120683-1.c
! 70a808e73db361875f6c599499b93198  gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
! 9aa5521551927ee379c30c41a443754c  gcc/testsuite/gcc.target/i386/memset-pr120683-11.c
! 565f44063769009d8f8ba26668888087  gcc/testsuite/gcc.target/i386/memset-pr120683-12.c
! 4a4d1a9e4a261134b42dd364faf51acb  gcc/testsuite/gcc.target/i386/memset-pr120683-13.c
! d8852e9ba85b10d7405229fac53f2f31  gcc/testsuite/gcc.target/i386/memset-pr120683-14.c
! 2ff98490298b10f28e799dfe2a81e58d  gcc/testsuite/gcc.target/i386/memset-pr120683-15.c
! 02e99d4988030063c88e47b2bfd97805  gcc/testsuite/gcc.target/i386/memset-pr120683-16.c
! f1026c4772f01b6fb57781f66e6045f5  gcc/testsuite/gcc.target/i386/memset-pr120683-17.c
! 4f742411400abc5c2cec5e6e86ed1fde  gcc/testsuite/gcc.target/i386/memset-pr120683-18.c
! f4575bef60004117dbb65ea5f8556015  gcc/testsuite/gcc.target/i386/memset-pr120683-19.c
! 637fcf86b7a2c3daab120cbcd1084906  gcc/testsuite/gcc.target/i386/memset-pr120683-2.c
! 50aa905962ba752e9c5a888776462f0e  gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
! 76aa773c588362c8a1adc1c4c908ec6f  gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
! 602edd13bf908e5a9ba26dfafb0bf948  gcc/testsuite/gcc.target/i386/memset-pr120683-22.c
! 5d89afc4aa14e2d56f2eaa031aa49bea  gcc/testsuite/gcc.target/i386/memset-pr120683-23.c
! d3af2ec88903c3e500f840d1ccbe42ac  gcc/testsuite/gcc.target/i386/memset-pr120683-3.c
! 8d1e2f8436b12c4528647d1cb876c747  gcc/testsuite/gcc.target/i386/memset-pr120683-4.c
! 20b06e7988dd3aefbb9495a76c8c10a5  gcc/testsuite/gcc.target/i386/memset-pr120683-5.c
! b6f3b543c62afcaa2959d5f7f4d2f570  gcc/testsuite/gcc.target/i386/memset-pr120683-6.c
! 8e7ad000ed00cf85852f2df130792909  gcc/testsuite/gcc.target/i386/memset-pr120683-7.c
! e738e6d542da678aac0820cc3bbe6b59  gcc/testsuite/gcc.target/i386/memset-pr120683-8.c
! ed706878b8ac5e390117d42327d795e5  gcc/testsuite/gcc.target/i386/memset-pr120683-9.c
  d40214a38af3060ba1bba456c7399a32  gcc/testsuite/gcc.target/i386/memset-pr120708-1.c
  131f444cf3fea918073579825312e430  gcc/testsuite/gcc.target/i386/memset-pr120708-2.c
! 6d6d4ce7da68f65b65d1b32d037396cb  gcc/testsuite/gcc.target/i386/memset-pr70308-1a.c
! 68b68bbacf6dc95164589b566e47bc42  gcc/testsuite/gcc.target/i386/memset-pr70308-1b.c
  5d42d8053ea9c0f90ccef1a5662638be  gcc/testsuite/gcc.target/i386/memset-strategy-1.c
! 9956d1a012c7129a5014827c867915fd  gcc/testsuite/gcc.target/i386/memset-strategy-10.c
  80f552aba0b3173b7903784b13ff17d9  gcc/testsuite/gcc.target/i386/memset-strategy-11.c
  02939d69e3c8cdd4b15b50bd83322ba8  gcc/testsuite/gcc.target/i386/memset-strategy-12.c
! 59d79e63c425c50fb6e0f831622ecace  gcc/testsuite/gcc.target/i386/memset-strategy-13.c
  58bfce62a58f473b1dd0dc599a4a3aac  gcc/testsuite/gcc.target/i386/memset-strategy-14.c
  42dfcbe76f482f1cc458b2d38bec4d47  gcc/testsuite/gcc.target/i386/memset-strategy-15.c
  87a904e845122510f206442a6c10f24a  gcc/testsuite/gcc.target/i386/memset-strategy-16.c
  e34fc4954adf255e63dd959604f68e95  gcc/testsuite/gcc.target/i386/memset-strategy-2.c
! dadc15939833dd5ab99de2c78e9162c8  gcc/testsuite/gcc.target/i386/memset-strategy-25.c
  a94047349a1abfeda6fc4e2dcf8263fe  gcc/testsuite/gcc.target/i386/memset-strategy-26.c
  7450283d0eb74c8d5f86beff98d12f17  gcc/testsuite/gcc.target/i386/memset-strategy-27.c
! 97ec7f27bf115a9493769360e8b6297b  gcc/testsuite/gcc.target/i386/memset-strategy-28.c
! 57f79d0afad3c2383f13b3bd334f97b1  gcc/testsuite/gcc.target/i386/memset-strategy-29.c
  ab2b88f0bcce4626b92af0e20a2b1f62  gcc/testsuite/gcc.target/i386/memset-strategy-3.c
! 9057fe46e8e4a9982eb0618711a6f344  gcc/testsuite/gcc.target/i386/memset-strategy-30.c
  ff1b7cf76c072b384368284dd0926f42  gcc/testsuite/gcc.target/i386/memset-strategy-31.c
  20e5e2cabbded0b26bce978e68dfb2f0  gcc/testsuite/gcc.target/i386/memset-strategy-4.c
  fad1f723fea113cd6e9ed9c154a8ac50  gcc/testsuite/gcc.target/i386/memset-strategy-5.c
*************** d8cca194dc6db82d20ea1426711cc2ea  gcc/te
*** 90704,90710 ****
  1459550770245224c9edce111674e4e5  gcc/testsuite/gcc.target/i386/pr111340.c
  ad2f0edec823b4cdee132cd40ae9f03e  gcc/testsuite/gcc.target/i386/pr111657-1.c
  5792d8414a49aa4afbf19fa324e6fc73  gcc/testsuite/gcc.target/i386/pr111657.c
! 9b61b4c7f629c440acbc471b05b25789  gcc/testsuite/gcc.target/i386/pr111673.c
  d4cd7dbfdbbd5e89e09dc648e484762b  gcc/testsuite/gcc.target/i386/pr111698.c
  83c1fd77f5c5b1d08ae6f047d224f609  gcc/testsuite/gcc.target/i386/pr111736.c
  3c98ef59fa755a2495cfd58c6b263590  gcc/testsuite/gcc.target/i386/pr111745.c
--- 90770,90776 ----
  1459550770245224c9edce111674e4e5  gcc/testsuite/gcc.target/i386/pr111340.c
  ad2f0edec823b4cdee132cd40ae9f03e  gcc/testsuite/gcc.target/i386/pr111657-1.c
  5792d8414a49aa4afbf19fa324e6fc73  gcc/testsuite/gcc.target/i386/pr111657.c
! 319d02c0b743ed2b002a13e7539187ea  gcc/testsuite/gcc.target/i386/pr111673.c
  d4cd7dbfdbbd5e89e09dc648e484762b  gcc/testsuite/gcc.target/i386/pr111698.c
  83c1fd77f5c5b1d08ae6f047d224f609  gcc/testsuite/gcc.target/i386/pr111736.c
  3c98ef59fa755a2495cfd58c6b263590  gcc/testsuite/gcc.target/i386/pr111745.c
*************** e2fbf730f0ffcdee1cf99d081bd519e7  gcc/te
*** 90779,90786 ****
  7f3f6a6d920c535824da1f030746548a  gcc/testsuite/gcc.target/i386/pr113689-2.c
  89c3a24a466af34d716e0816462f6e1b  gcc/testsuite/gcc.target/i386/pr113689-3.c
  50ffaa51abcbb82cfc7644b67824e8fc  gcc/testsuite/gcc.target/i386/pr113690.c
! 4b502c99ffa8817f3bb38ce04bfb2133  gcc/testsuite/gcc.target/i386/pr113729-adc-sbb.c
! c9620173b7d760561377bb12f3643494  gcc/testsuite/gcc.target/i386/pr113729.c
  a9a573012fc484bb497dc872018bf972  gcc/testsuite/gcc.target/i386/pr113871-1a.c
  ad5a6a885aebfea78cc5e42d766fb108  gcc/testsuite/gcc.target/i386/pr113871-1b.c
  c6416e13d7dbfa56b101f9257c193a91  gcc/testsuite/gcc.target/i386/pr113871-2a.c
--- 90845,90852 ----
  7f3f6a6d920c535824da1f030746548a  gcc/testsuite/gcc.target/i386/pr113689-2.c
  89c3a24a466af34d716e0816462f6e1b  gcc/testsuite/gcc.target/i386/pr113689-3.c
  50ffaa51abcbb82cfc7644b67824e8fc  gcc/testsuite/gcc.target/i386/pr113690.c
! ff94da8bb18c2f118d4f0988f8821255  gcc/testsuite/gcc.target/i386/pr113729-adc-sbb.c
! ff6eaac06446a39cc8286f7617d5afb7  gcc/testsuite/gcc.target/i386/pr113729.c
  a9a573012fc484bb497dc872018bf972  gcc/testsuite/gcc.target/i386/pr113871-1a.c
  ad5a6a885aebfea78cc5e42d766fb108  gcc/testsuite/gcc.target/i386/pr113871-1b.c
  c6416e13d7dbfa56b101f9257c193a91  gcc/testsuite/gcc.target/i386/pr113871-2a.c
*************** ee181f50a327c5ee8df5da7cab955ca5  gcc/te
*** 90975,90992 ****
  307d8a4169ca59164e9e13b544538eab  gcc/testsuite/gcc.target/i386/pr120881-2b.c
  e33b63cd8f6d60b286b2286424f25714  gcc/testsuite/gcc.target/i386/pr120908.c
  b03b1d817538a863277c823b5e4cdf75  gcc/testsuite/gcc.target/i386/pr12092-1.c
! 6a25be6d33ab51c368ed8c183ba0aa29  gcc/testsuite/gcc.target/i386/pr120936-1.c
  1bdeaca98bb5b1fa8361226c6393cb12  gcc/testsuite/gcc.target/i386/pr120936-10.c
! b295978527c57d1d168202b01305b1e8  gcc/testsuite/gcc.target/i386/pr120936-11.c
  eefb4b4eea3e31af3dfd2f3cacfee486  gcc/testsuite/gcc.target/i386/pr120936-12.c
! c8123c9fc6a80e42416267a80d9de9d0  gcc/testsuite/gcc.target/i386/pr120936-2.c
  333853ab2fde81e9aaa0226bee84a90b  gcc/testsuite/gcc.target/i386/pr120936-3.c
! 60cfa2f2738a9b2bd49f8c3ad5e101e8  gcc/testsuite/gcc.target/i386/pr120936-4.c
! 7ea8e247e402e1014327254f47d30cb1  gcc/testsuite/gcc.target/i386/pr120936-5.c
  dce72b92e3248a6f50bb05e57e7400f1  gcc/testsuite/gcc.target/i386/pr120936-6.c
  e46459a506a641702fdeaa8713b478db  gcc/testsuite/gcc.target/i386/pr120936-7.c
  b56b7319ec16cc733aa742b3020839be  gcc/testsuite/gcc.target/i386/pr120936-8.c
! 41a473a58436434cb766d45d789ce070  gcc/testsuite/gcc.target/i386/pr120936-9.c
  7aab49fe981257c8717fc97ce53ade31  gcc/testsuite/gcc.target/i386/pr120941-1.c
  56e6214e78411271065383bb6b1486a7  gcc/testsuite/gcc.target/i386/pr121015.c
  7169595edef2ff6ffd51efdb76f2cbfc  gcc/testsuite/gcc.target/i386/pr121062-1.c
--- 91041,91058 ----
  307d8a4169ca59164e9e13b544538eab  gcc/testsuite/gcc.target/i386/pr120881-2b.c
  e33b63cd8f6d60b286b2286424f25714  gcc/testsuite/gcc.target/i386/pr120908.c
  b03b1d817538a863277c823b5e4cdf75  gcc/testsuite/gcc.target/i386/pr12092-1.c
! 76e290a7bf6d2085e240c338f6d0d3e8  gcc/testsuite/gcc.target/i386/pr120936-1.c
  1bdeaca98bb5b1fa8361226c6393cb12  gcc/testsuite/gcc.target/i386/pr120936-10.c
! f1d8daa4d966fecd1c35f5f7ec3a592d  gcc/testsuite/gcc.target/i386/pr120936-11.c
  eefb4b4eea3e31af3dfd2f3cacfee486  gcc/testsuite/gcc.target/i386/pr120936-12.c
! e2a0cd0d95ec0dd70be22b333b8a2005  gcc/testsuite/gcc.target/i386/pr120936-2.c
  333853ab2fde81e9aaa0226bee84a90b  gcc/testsuite/gcc.target/i386/pr120936-3.c
! 8a23fa3fad43c9c746696c807c194211  gcc/testsuite/gcc.target/i386/pr120936-4.c
! d384c47d0b43996490639d38de43cc8f  gcc/testsuite/gcc.target/i386/pr120936-5.c
  dce72b92e3248a6f50bb05e57e7400f1  gcc/testsuite/gcc.target/i386/pr120936-6.c
  e46459a506a641702fdeaa8713b478db  gcc/testsuite/gcc.target/i386/pr120936-7.c
  b56b7319ec16cc733aa742b3020839be  gcc/testsuite/gcc.target/i386/pr120936-8.c
! a7903c67418fa2cd7d8d07ad1e92e315  gcc/testsuite/gcc.target/i386/pr120936-9.c
  7aab49fe981257c8717fc97ce53ade31  gcc/testsuite/gcc.target/i386/pr120941-1.c
  56e6214e78411271065383bb6b1486a7  gcc/testsuite/gcc.target/i386/pr121015.c
  7169595edef2ff6ffd51efdb76f2cbfc  gcc/testsuite/gcc.target/i386/pr121062-1.c
*************** ae9cefa4d949ae63e9380aeb14fae221  gcc/te
*** 91059,91083 ****
  ff0a586f8aaac7078fb79402d3f0df4b  gcc/testsuite/gcc.target/i386/pr122320-mask4.c
  9a861d0f957f59a5dc5e7cafeddd1343  gcc/testsuite/gcc.target/i386/pr122320-mask64.c
  f6a03ec739c3c632b84006aa8e240dae  gcc/testsuite/gcc.target/i386/pr122320-mask8.c
! 45326b5bfc3d272e40b81aeae891e3cf  gcc/testsuite/gcc.target/i386/pr122343-1a.c
! f07910007f1912527ae919b6677082a3  gcc/testsuite/gcc.target/i386/pr122343-1b.c
! 9780bc58fb18cd60275a1f2b0a92d8e2  gcc/testsuite/gcc.target/i386/pr122343-2a.c
! 6aae25738ac220210fc9c72a006b981c  gcc/testsuite/gcc.target/i386/pr122343-2b.c
! 5bc6e9971e62b41ae74fb31f56b1c156  gcc/testsuite/gcc.target/i386/pr122343-3.c
! 3fa492381514ec5dfa39196008fa28d6  gcc/testsuite/gcc.target/i386/pr122343-4a.c
! b2a41015134301ed8f0b1f49f522f97f  gcc/testsuite/gcc.target/i386/pr122343-4b.c
! b4e6503fcde0c5e1fe990ba2d612f2cf  gcc/testsuite/gcc.target/i386/pr122343-5a.c
! 0b5ad6ab6bd66b78bfd5fb0d0f8eddaa  gcc/testsuite/gcc.target/i386/pr122343-5b.c
! 9616fc5d411acc9e7234b569b59a5657  gcc/testsuite/gcc.target/i386/pr122343-6a.c
! 9372a8680b4f9db4a59d56239d200316  gcc/testsuite/gcc.target/i386/pr122343-6b.c
! 0935219317f53279b008ff0b87ba6ad1  gcc/testsuite/gcc.target/i386/pr122343-7.c
  a23e3aee9cb7b8d2fe5895c930cac402  gcc/testsuite/gcc.target/i386/pr122390-1.c
  160b6bb9cb1df1775f284996fcddbc62  gcc/testsuite/gcc.target/i386/pr122390.c
  beaa59876937a489a8ce9f276a586c83  gcc/testsuite/gcc.target/i386/pr122457.c
  b5fef8fb540e17f32442a50d6ee40f1e  gcc/testsuite/gcc.target/i386/pr122518.c
  93c2651b636b33af98942b4d04ed3a85  gcc/testsuite/gcc.target/i386/pr122534.c
  609faa828d84f786709fd1c4f7c03431  gcc/testsuite/gcc.target/i386/pr122598.c
! 405fadb5a4007fdee8be974babcb3550  gcc/testsuite/gcc.target/i386/pr122675-1.c
  68c5cb935b4b7d76ed31899761e6b756  gcc/testsuite/gcc.target/i386/pr123027.c
  6631a523638aaa28883a1480bb393315  gcc/testsuite/gcc.target/i386/pr123121.c
  2931c5829c33b01bbef9a329552be2bb  gcc/testsuite/gcc.target/i386/pr123210.c
--- 91125,91149 ----
  ff0a586f8aaac7078fb79402d3f0df4b  gcc/testsuite/gcc.target/i386/pr122320-mask4.c
  9a861d0f957f59a5dc5e7cafeddd1343  gcc/testsuite/gcc.target/i386/pr122320-mask64.c
  f6a03ec739c3c632b84006aa8e240dae  gcc/testsuite/gcc.target/i386/pr122320-mask8.c
! e19262d2716f104afc6ca73e92175af5  gcc/testsuite/gcc.target/i386/pr122343-1a.c
! a91c81ee1151f8eb72972a5ca1c4f5e5  gcc/testsuite/gcc.target/i386/pr122343-1b.c
! d4d2c5bfecd2f6bdf686431a77bf4e89  gcc/testsuite/gcc.target/i386/pr122343-2a.c
! 3c6e695d8a0e4a4e246f7d62552d1807  gcc/testsuite/gcc.target/i386/pr122343-2b.c
! 3ec07a892980f6c3ea3bd95a6d03f07e  gcc/testsuite/gcc.target/i386/pr122343-3.c
! e51fcfee6f2a7cafac7c30d85656c49d  gcc/testsuite/gcc.target/i386/pr122343-4a.c
! dc441bebea22c5b1d8b014a60d0be676  gcc/testsuite/gcc.target/i386/pr122343-4b.c
! a9f95c83c8cfe8c675891c3a3fe30bcd  gcc/testsuite/gcc.target/i386/pr122343-5a.c
! 0b661b1593adb6d5aec9b192d1ff8c5f  gcc/testsuite/gcc.target/i386/pr122343-5b.c
! c0a2648ae6688edf7592159b52d2c323  gcc/testsuite/gcc.target/i386/pr122343-6a.c
! de6e22b443d2b7eda0a3831d24b86dde  gcc/testsuite/gcc.target/i386/pr122343-6b.c
! 180323b8bcc7eb6910a7c191b2bf9506  gcc/testsuite/gcc.target/i386/pr122343-7.c
  a23e3aee9cb7b8d2fe5895c930cac402  gcc/testsuite/gcc.target/i386/pr122390-1.c
  160b6bb9cb1df1775f284996fcddbc62  gcc/testsuite/gcc.target/i386/pr122390.c
  beaa59876937a489a8ce9f276a586c83  gcc/testsuite/gcc.target/i386/pr122457.c
  b5fef8fb540e17f32442a50d6ee40f1e  gcc/testsuite/gcc.target/i386/pr122518.c
  93c2651b636b33af98942b4d04ed3a85  gcc/testsuite/gcc.target/i386/pr122534.c
  609faa828d84f786709fd1c4f7c03431  gcc/testsuite/gcc.target/i386/pr122598.c
! 7eefab607e340ac77b1e87bf53facec5  gcc/testsuite/gcc.target/i386/pr122675-1.c
  68c5cb935b4b7d76ed31899761e6b756  gcc/testsuite/gcc.target/i386/pr123027.c
  6631a523638aaa28883a1480bb393315  gcc/testsuite/gcc.target/i386/pr123121.c
  2931c5829c33b01bbef9a329552be2bb  gcc/testsuite/gcc.target/i386/pr123210.c
*************** f3cfd64327a4277836bd9cb3b1aca08d  gcc/te
*** 91118,91132 ****
  a7914bedf774cd238c5877b4c741b754  gcc/testsuite/gcc.target/i386/pr125100-1.c
  870b7a92f7ef38497e07181df4080eb6  gcc/testsuite/gcc.target/i386/pr125100-2.c
  1212d4cdb8cd4262def0965fb2ac0fad  gcc/testsuite/gcc.target/i386/pr125100-3.c
! 9a4e6614300a689aff09bb56ff734070  gcc/testsuite/gcc.target/i386/pr125100-4.c
  2452d87d24cd7ed49934ad5aecd255e2  gcc/testsuite/gcc.target/i386/pr125180.c
  df76ec06f1f94b77cb1652a61b635dcd  gcc/testsuite/gcc.target/i386/pr125238.c
  02bcd898871c488722d8481d6020b391  gcc/testsuite/gcc.target/i386/pr125239.c
  014fb32893a5812986a3d672ecf6682d  gcc/testsuite/gcc.target/i386/pr125245.c
  83da3f12f4b2e9f51434bf8ad312884d  gcc/testsuite/gcc.target/i386/pr125308.c
  dc1ca8471081be67fdad4d340997d425  gcc/testsuite/gcc.target/i386/pr125351.c
! b7294c9a200c00a9779bc70185f7be63  gcc/testsuite/gcc.target/i386/pr125355-2.c
! 10dc742236e7e84bc62c2214e6691b2b  gcc/testsuite/gcc.target/i386/pr125355.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
--- 91184,91198 ----
  a7914bedf774cd238c5877b4c741b754  gcc/testsuite/gcc.target/i386/pr125100-1.c
  870b7a92f7ef38497e07181df4080eb6  gcc/testsuite/gcc.target/i386/pr125100-2.c
  1212d4cdb8cd4262def0965fb2ac0fad  gcc/testsuite/gcc.target/i386/pr125100-3.c
! d28e5235664b0b453e47baf61b0e494b  gcc/testsuite/gcc.target/i386/pr125100-4.c
  2452d87d24cd7ed49934ad5aecd255e2  gcc/testsuite/gcc.target/i386/pr125180.c
  df76ec06f1f94b77cb1652a61b635dcd  gcc/testsuite/gcc.target/i386/pr125238.c
  02bcd898871c488722d8481d6020b391  gcc/testsuite/gcc.target/i386/pr125239.c
  014fb32893a5812986a3d672ecf6682d  gcc/testsuite/gcc.target/i386/pr125245.c
  83da3f12f4b2e9f51434bf8ad312884d  gcc/testsuite/gcc.target/i386/pr125308.c
  dc1ca8471081be67fdad4d340997d425  gcc/testsuite/gcc.target/i386/pr125351.c
! 5f36a236a4e793e8c1156a9da39a7d44  gcc/testsuite/gcc.target/i386/pr125355-2.c
! e76bdb8a14f4e33095bb74f45fe7b07b  gcc/testsuite/gcc.target/i386/pr125355.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
*************** b5a1195fb0000fa62d98484dc9e5e87b  gcc/te
*** 92177,92186 ****
  616daf2d4d783e488553e78b6c46d260  gcc/testsuite/gcc.target/i386/pr79173-10.c
  480c378e954d49ead07ff613c02aa220  gcc/testsuite/gcc.target/i386/pr79173-11.c
  7b3c56c3a7c4a5016a3ea348a5e0d550  gcc/testsuite/gcc.target/i386/pr79173-12.c
! baf0732cf42a94b060c4de633778b4f5  gcc/testsuite/gcc.target/i386/pr79173-13.c
! e916d5e1a945f303e2a85d7790faab02  gcc/testsuite/gcc.target/i386/pr79173-14.c
! c9998116e2318243f3968fddeb6e204a  gcc/testsuite/gcc.target/i386/pr79173-15.c
! a3b492fb2ea1a804dc72f32b39337d7e  gcc/testsuite/gcc.target/i386/pr79173-16.c
  0f3a227d412ba32302bbede4b5ce7546  gcc/testsuite/gcc.target/i386/pr79173-17.c
  0d6779043f5ed635a63b754d791b1bb1  gcc/testsuite/gcc.target/i386/pr79173-18.c
  170afdaa9dbc731764f764f8d5d55a1c  gcc/testsuite/gcc.target/i386/pr79173-2.c
--- 92243,92252 ----
  616daf2d4d783e488553e78b6c46d260  gcc/testsuite/gcc.target/i386/pr79173-10.c
  480c378e954d49ead07ff613c02aa220  gcc/testsuite/gcc.target/i386/pr79173-11.c
  7b3c56c3a7c4a5016a3ea348a5e0d550  gcc/testsuite/gcc.target/i386/pr79173-12.c
! 0351d3ed0af4b96dc2c12d5c0ea82006  gcc/testsuite/gcc.target/i386/pr79173-13.c
! ba119c1249455c082b6cc229f16d7836  gcc/testsuite/gcc.target/i386/pr79173-14.c
! d422cf9ebb7d52559025452fb6da15b3  gcc/testsuite/gcc.target/i386/pr79173-15.c
! f2d13eda4169b6b1922c9c2e2a216bfb  gcc/testsuite/gcc.target/i386/pr79173-16.c
  0f3a227d412ba32302bbede4b5ce7546  gcc/testsuite/gcc.target/i386/pr79173-17.c
  0d6779043f5ed635a63b754d791b1bb1  gcc/testsuite/gcc.target/i386/pr79173-18.c
  170afdaa9dbc731764f764f8d5d55a1c  gcc/testsuite/gcc.target/i386/pr79173-2.c
*************** bc9d6a8d154ce394c0572ac7f1b29989  gcc/te
*** 92307,92314 ****
  9d3708841372a6448fa90429994de766  gcc/testsuite/gcc.target/i386/pr82002-1.c
  1a3ac3c6bda9ea1b07e65710ba432a8a  gcc/testsuite/gcc.target/i386/pr82002-2a.c
  d9ff7a9247a5112ba833001b7198d194  gcc/testsuite/gcc.target/i386/pr82002-2b.c
! fe18eef083c5c64986de67cb83d3dda7  gcc/testsuite/gcc.target/i386/pr82142a.c
! 7776a330e1401d184565f7477df6a65f  gcc/testsuite/gcc.target/i386/pr82142b.c
  23d6be59a257952d289606af88ad99d1  gcc/testsuite/gcc.target/i386/pr82145.c
  a341930c846fbfc81a481d40beae5f8e  gcc/testsuite/gcc.target/i386/pr82166.c
  f7220805243aa4ae76bae9889d4575a8  gcc/testsuite/gcc.target/i386/pr82196-1.c
--- 92373,92380 ----
  9d3708841372a6448fa90429994de766  gcc/testsuite/gcc.target/i386/pr82002-1.c
  1a3ac3c6bda9ea1b07e65710ba432a8a  gcc/testsuite/gcc.target/i386/pr82002-2a.c
  d9ff7a9247a5112ba833001b7198d194  gcc/testsuite/gcc.target/i386/pr82002-2b.c
! 29481f95c4101ad31b7f003c2a2c35e3  gcc/testsuite/gcc.target/i386/pr82142a.c
! 65a47aaecbde7be222cb5b66e931d7c8  gcc/testsuite/gcc.target/i386/pr82142b.c
  23d6be59a257952d289606af88ad99d1  gcc/testsuite/gcc.target/i386/pr82145.c
  a341930c846fbfc81a481d40beae5f8e  gcc/testsuite/gcc.target/i386/pr82166.c
  f7220805243aa4ae76bae9889d4575a8  gcc/testsuite/gcc.target/i386/pr82196-1.c
*************** e1a47196028cf3d7d1da3ad695db60b3  gcc/te
*** 92751,92757 ****
  7c666da60bf0f91a71a0449e0dc05fe9  gcc/testsuite/gcc.target/i386/pr92080-14.c
  be1e0e8eba7c0a6e5b4edccfb5c6ee30  gcc/testsuite/gcc.target/i386/pr92080-15.c
  7e4ed332aefc3d639a093680c490517e  gcc/testsuite/gcc.target/i386/pr92080-16.c
! 00d36324dbc5a854d6da6f2af81f548c  gcc/testsuite/gcc.target/i386/pr92080-17.c
  0af0fd636c3a72d334625b16a51242d3  gcc/testsuite/gcc.target/i386/pr92080-18.c
  494c2614cf731267b1b0f41709bfbca9  gcc/testsuite/gcc.target/i386/pr92080-19.c
  72ca6ad41495194d27cf4156a0bea46d  gcc/testsuite/gcc.target/i386/pr92080-2.c
--- 92817,92823 ----
  7c666da60bf0f91a71a0449e0dc05fe9  gcc/testsuite/gcc.target/i386/pr92080-14.c
  be1e0e8eba7c0a6e5b4edccfb5c6ee30  gcc/testsuite/gcc.target/i386/pr92080-15.c
  7e4ed332aefc3d639a093680c490517e  gcc/testsuite/gcc.target/i386/pr92080-16.c
! af608aa8cd87cda88b12ce3bac34ddc2  gcc/testsuite/gcc.target/i386/pr92080-17.c
  0af0fd636c3a72d334625b16a51242d3  gcc/testsuite/gcc.target/i386/pr92080-18.c
  494c2614cf731267b1b0f41709bfbca9  gcc/testsuite/gcc.target/i386/pr92080-19.c
  72ca6ad41495194d27cf4156a0bea46d  gcc/testsuite/gcc.target/i386/pr92080-2.c
*************** a0e47f84ef019a0c0609e9c44732ef14  gcc/te
*** 93956,93961 ****
--- 94022,94028 ----
  f09f84c085c0e194eb110e475ef95081  gcc/testsuite/gcc.target/i386/ssse3-phsubw.c
  e6a3ecb80a089c5e971a5a097701255d  gcc/testsuite/gcc.target/i386/ssse3-pmaddubsw.c
  9779e9b9b03ccba1bbd02aa8014a0c6e  gcc/testsuite/gcc.target/i386/ssse3-pmulhrsw.c
+ 7fe48df578c96c6992918e4881f43572  gcc/testsuite/gcc.target/i386/ssse3-pr125611.c
  15e3df89b9592d7a755e5107a4c6b718  gcc/testsuite/gcc.target/i386/ssse3-pshufb.c
  b3082251265483716a53827b31517936  gcc/testsuite/gcc.target/i386/ssse3-psignb.c
  5c58d5d7c2e35b22f6a4c28d124bde6f  gcc/testsuite/gcc.target/i386/ssse3-psignd.c
*************** b628655d5e6da478a0338b6a99c2b547  gcc/te
*** 97546,97551 ****
--- 97613,97620 ----
  7ec712d12c713ee380709b1ec03b395d  gcc/testsuite/gcc.target/powerpc/pr106769-p9.c
  0963f14ccd4877c21a47d1a3bd7eb59e  gcc/testsuite/gcc.target/powerpc/pr106769.h
  cc371da54f8baaffe7810cf7f4a388f7  gcc/testsuite/gcc.target/powerpc/pr106833.c
+ 439dfed057478eb39589fad7adcaa1d7  gcc/testsuite/gcc.target/powerpc/pr106895-1.c
+ 4c3b06b36d8622937b64d64259da54f6  gcc/testsuite/gcc.target/powerpc/pr106895-2.c
  c7290ae4c5b6c919339124b4be070eb8  gcc/testsuite/gcc.target/powerpc/pr107412.c
  cf6fc6f2cd4ce40de4bfcae2384bc88d  gcc/testsuite/gcc.target/powerpc/pr108272-1.c
  f50d5d85d2fd6cdb2c24ba2f99c5ed50  gcc/testsuite/gcc.target/powerpc/pr108272-2.c
*************** deb12224fed195721b2ddc8b70e46a23  gcc/te
*** 97610,97615 ****
--- 97679,97685 ----
  da26cb6383a24e6a94a6c247d777f6b8  gcc/testsuite/gcc.target/powerpc/pr118663.c
  800df636a3d7634e8c0d66c59de11951  gcc/testsuite/gcc.target/powerpc/pr121007.c
  5dc8065d72c427b79c75ffd95b743639  gcc/testsuite/gcc.target/powerpc/pr124637.c
+ dc2d3a4c7ab86e1b45428b2a6f0d94f6  gcc/testsuite/gcc.target/powerpc/pr125327.c
  f0441edf54193f1b965b7d96e3ad8f52  gcc/testsuite/gcc.target/powerpc/pr16155.c
  6f5ca156bb125cbf24502221226bb56e  gcc/testsuite/gcc.target/powerpc/pr16286.c
  198d8a69d2887e8fadcb050d90e21aa6  gcc/testsuite/gcc.target/powerpc/pr16458-1.c
*************** ff856fed5ddef759c9032d497def7520  gcc/te
*** 99348,99353 ****
--- 99418,99424 ----
  1347057ac85e5b42b22bfa5afbfbb569  gcc/testsuite/gcc.target/riscv/arch-59.c
  2cd6ade559b1ab254703146aa7008e18  gcc/testsuite/gcc.target/riscv/arch-6.c
  106936adac7a80b5a01db383e2095b7a  gcc/testsuite/gcc.target/riscv/arch-60.c
+ 5539b0e4c70ccfdce29c44efd02d1ce9  gcc/testsuite/gcc.target/riscv/arch-61.c
  81519955d6644acb55c78120405494a5  gcc/testsuite/gcc.target/riscv/arch-7.c
  def4ef484e9166f9a01c65a411a9d916  gcc/testsuite/gcc.target/riscv/arch-8.c
  618e0be396e7e79ffa293a23f42b305d  gcc/testsuite/gcc.target/riscv/arch-9.c
*************** bf010688ceeadb1d6c96536579c3ddd5  gcc/te
*** 100259,100271 ****
  fff9d84e7d142a27609a7e87d10bfded  gcc/testsuite/gcc.target/riscv/pr123092.c
  61858fbf3627a6a698ef76b904f1ab7b  gcc/testsuite/gcc.target/riscv/pr123274.c
  ba319008fc3d471c58bb29fc9d29ccbc  gcc/testsuite/gcc.target/riscv/pr123278.c
  6eca389fe57f7e888581742c60e40dd4  gcc/testsuite/gcc.target/riscv/pr123318.c
  c5510efb0e85b94c43e177d92c8bfa96  gcc/testsuite/gcc.target/riscv/pr123322.c
  36f2729f33d66359ae39ca96a9075786  gcc/testsuite/gcc.target/riscv/pr123380.c
  331dce227538529fceff71229d276a03  gcc/testsuite/gcc.target/riscv/pr123838.c
  c8329d7f70c2170589156e008b96bd42  gcc/testsuite/gcc.target/riscv/pr123904.c
  ac11119f9210fdbe0a0f2e3211742dd1  gcc/testsuite/gcc.target/riscv/pr123911.c
! 090c30ca6ca92e9f6b86f8a46ad8d913  gcc/testsuite/gcc.target/riscv/pr124009.c
  9fe4e473a13fa1c11a62a88ae71a3c68  gcc/testsuite/gcc.target/riscv/pr124029.c
  a06f50eaf9ffceda3f1e44f0fe8c75f8  gcc/testsuite/gcc.target/riscv/pr124674.c
  52cb197377816f789e27e2a0005cdc17  gcc/testsuite/gcc.target/riscv/pr124760.c
--- 100330,100343 ----
  fff9d84e7d142a27609a7e87d10bfded  gcc/testsuite/gcc.target/riscv/pr123092.c
  61858fbf3627a6a698ef76b904f1ab7b  gcc/testsuite/gcc.target/riscv/pr123274.c
  ba319008fc3d471c58bb29fc9d29ccbc  gcc/testsuite/gcc.target/riscv/pr123278.c
+ 7cea04476014306136403ac3c5d0d505  gcc/testsuite/gcc.target/riscv/pr123313.c
  6eca389fe57f7e888581742c60e40dd4  gcc/testsuite/gcc.target/riscv/pr123318.c
  c5510efb0e85b94c43e177d92c8bfa96  gcc/testsuite/gcc.target/riscv/pr123322.c
  36f2729f33d66359ae39ca96a9075786  gcc/testsuite/gcc.target/riscv/pr123380.c
  331dce227538529fceff71229d276a03  gcc/testsuite/gcc.target/riscv/pr123838.c
  c8329d7f70c2170589156e008b96bd42  gcc/testsuite/gcc.target/riscv/pr123904.c
  ac11119f9210fdbe0a0f2e3211742dd1  gcc/testsuite/gcc.target/riscv/pr123911.c
! 232cb725cd8279cd7a85d9c9368c3996  gcc/testsuite/gcc.target/riscv/pr124009.c
  9fe4e473a13fa1c11a62a88ae71a3c68  gcc/testsuite/gcc.target/riscv/pr124029.c
  a06f50eaf9ffceda3f1e44f0fe8c75f8  gcc/testsuite/gcc.target/riscv/pr124674.c
  52cb197377816f789e27e2a0005cdc17  gcc/testsuite/gcc.target/riscv/pr124760.c
*************** dbe7e01002e5a8097f16f6e89450e72f  gcc/te
*** 100275,100280 ****
--- 100347,100353 ----
  689058565a07dcb181ca0bd08374dcc0  gcc/testsuite/gcc.target/riscv/pr124984.c
  7f393994eaf6402baf4e43a673c3f1f5  gcc/testsuite/gcc.target/riscv/pr125152.c
  de7f2cc01b369ea994e72e2ba0a8b39a  gcc/testsuite/gcc.target/riscv/pr125320.c
+ e7c81dc9311e0ed5e4c52e29259d2a41  gcc/testsuite/gcc.target/riscv/pr125387.c
  37a08389ba95284cc27832767dfc1430  gcc/testsuite/gcc.target/riscv/pr43644.c
  8eba488c3d26a288644785954ea86af2  gcc/testsuite/gcc.target/riscv/pr52345.c
  f035fac0dc9b5f42ec0a469a8391163c  gcc/testsuite/gcc.target/riscv/pr56096.c
*************** bb3ce8a10b4ccd999a29306694940662  gcc/te
*** 104655,104664 ****
  0d2c1eb715d12f9f8cdc2e2cef6b2121  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr109773-1.c
  2d1a6ed55cf0bf3a8fdef6337e91e6c2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr109773-2.c
  f7bb9440137e4f574f9857865f6c6b85  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr109974.c
! 925adccb9e39faea2c76e8ae1bcc49eb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-1.c
  aa3e92c7340cd3485c6598b9e132677f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c
  88faf0ceb114638ae22b50efefe9ae09  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-3.c
! eda3b4a21e2ba426a62611455401de48  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-4.c
  2964fe9eda823f3624d74f0e0234051a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111234.c
  21d0ef938cb46d03c8a121c2becb80ea  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111255.c
  887ea885b64d4a5071b9c9a947e6051f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111927.c
--- 104728,104737 ----
  0d2c1eb715d12f9f8cdc2e2cef6b2121  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr109773-1.c
  2d1a6ed55cf0bf3a8fdef6337e91e6c2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr109773-2.c
  f7bb9440137e4f574f9857865f6c6b85  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr109974.c
! 7cdd83eeac1513d6fe7488fce8390c05  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-1.c
  aa3e92c7340cd3485c6598b9e132677f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c
  88faf0ceb114638ae22b50efefe9ae09  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-3.c
! 7d5802b974f25e2e20a05e741bda4ae7  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-4.c
  2964fe9eda823f3624d74f0e0234051a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111234.c
  21d0ef938cb46d03c8a121c2becb80ea  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111255.c
  887ea885b64d4a5071b9c9a947e6051f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111927.c
*************** c85dd72a05191265ed466d39c4b6b5e7  gcc/te
*** 104673,104679 ****
  0ca5195ca0b13630a73cab3d7bfdd77c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112929-2.c
  92fc9dd150d1769bb8d75f82a2c6198d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112988-1.c
  1f59839cf415d948822ef4462b427dec  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112988-2.c
! c0713b9aa6ed439fab330ab7223032dc  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113248.c
  14e4ce1dbfe4c1978792e21458b54f60  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c
  231f16f9d08fd8f85a1f7dac951a33d9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113696.c
  7af3daa5fca47d3622e18dcf26901c3a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr115214.c
--- 104746,104752 ----
  0ca5195ca0b13630a73cab3d7bfdd77c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112929-2.c
  92fc9dd150d1769bb8d75f82a2c6198d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112988-1.c
  1f59839cf415d948822ef4462b427dec  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112988-2.c
! 740c1cbc9a681099966183d4587d9a26  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113248.c
  14e4ce1dbfe4c1978792e21458b54f60  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c
  231f16f9d08fd8f85a1f7dac951a33d9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113696.c
  7af3daa5fca47d3622e18dcf26901c3a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr115214.c
*************** a8f53ad5180333afb72d569d125c3922  gcc/te
*** 104998,105004 ****
  fe865d9009af7551d830f6d4e3008ebe  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
  10c2fe61483d221e6648e72c6ff9f6a0  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vsext.c
  23788d7500abf7340ab20ef598d9da5e  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vzext.c
! a386969bb05f0b25b6858b649fbdf79e  gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
  89d90b13c13c2658dcc8319771cd755f  gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h
  e52f03a6378cd78f7ea04149c2b8215a  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c
  1de70dbaccb7e9fe73b8e90ec7430b4d  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c
--- 105071,105077 ----
  fe865d9009af7551d830f6d4e3008ebe  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
  10c2fe61483d221e6648e72c6ff9f6a0  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vsext.c
  23788d7500abf7340ab20ef598d9da5e  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vzext.c
! c899d104a613d62b9c43f960982f58af  gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
  89d90b13c13c2658dcc8319771cd755f  gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h
  e52f03a6378cd78f7ea04149c2b8215a  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c
  1de70dbaccb7e9fe73b8e90ec7430b4d  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c
*************** ce1f5a8c1be42c75ccca5343fdb18ad0  gcc/te
*** 105368,105373 ****
--- 105441,105459 ----
  c5af1c4d69acb1899c4adaa4e4e54343  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-11-u32.c
  7a4bbe7058bc2057e480f43a1509d516  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-11-u64.c
  c0b5f302acd535ba23111b71087742c1  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-11-u8.c
+ abe65e2233ac971a17f76c314c019a15  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u128.c
+ 9fd035e35473765b58084861d76c4656  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u32.c
+ 25cbed377e247c0d1a8ffa5e7bc56e81  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv32.c
+ 0c6556c940c488ad9d691b68737da34a  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv64.c
+ 9106a74fba17871c2366f30ea5f1acc2  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u128.c
+ d97a4a4b07535c4b3d8707b437ffae45  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv32.c
+ d315359993297dfad45328e5bf880374  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv64.c
+ 9d647fa2d9c1a83cd8462e2550a2e157  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u64-from-u128.c
+ 451832877bdc39e00b4a1f8f0fc79f52  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u128.c
+ 3412cbfd7e120519eb8410708ea2e1be  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u16.c
+ 185a155c9d3ee44c75f1a74aca76453a  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u32.c
+ 8dc65a05268d36980daea0c420bcf616  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv32.c
+ 7125a8afc4840917e6e9d977bb933d2c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv64.c
  251cfaed4fc07574d958d0681d1dfec5  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-2-u16-from-u64.c
  5b0850fbdfe60f0c7b2f6b7451708398  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-2-u32-from-u64.c
  6543eb493f3a5de8524d7043324fb135  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-2-u8-from-u64.c
*************** e0b23d8f36e34204d803dd95ca3e4b1f  gcc/te
*** 105471,105476 ****
--- 105557,105572 ----
  93b6537da58eb066d471bb18f5e3859c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-11-u32.c
  d095e04dc69da9ab251a0a82497b0147  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-11-u64.c
  6468a037e6bbb17ec4a42eaace9e0a40  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-11-u8.c
+ 799d5d2592042824469b73ad635cee94  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u128.c
+ e7593dc3e36ec4e8c9011341bd078062  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u32.c
+ 8d24d7034e5bfe1dc29b177dd05de215  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u64.c
+ 72ebcfc0033129d8f76af2a2fa24a208  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u128.c
+ 966127929b0e8e5bc4d98f6b8935f861  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u64.c
+ 62e62d30c0dacf69ce3167c66ae58fe9  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u64-from-u128.c
+ 799d5d2592042824469b73ad635cee94  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u128.c
+ c5f780388275a98ca12b0a66ab737208  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u16.c
+ 4b29d83fe36c2bb0683a64baef5ede6b  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u32.c
+ ad410a025682465e1431f5902fd4930e  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u64.c
  6e4e3e7e8157d61d92fd2d57b879983c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-3-u16.c
  7c4b9349b8740bc9b8a5febcbb96897c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-3-u32.c
  4c1f4994dcf2fb5cd55247f60b8383f3  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-3-u64.c
*************** eb9fea9eb3ccdd5fb4d85ac011c10dc5  gcc/te
*** 107403,107409 ****
  eab3dd9c7afd97e9615ef7573877aeeb  gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
  1943f3e1f1253e644f6fe445637c2dec  gcc/testsuite/gcc.target/sparc/sparc-trap-1.c
  2beea1f4d6dac65ba6099a688c546ad0  gcc/testsuite/gcc.target/sparc/sparc.exp
! 36ce6bf50327f9b2f6c9980aea9830d2  gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c
  8e13d07524eb18b1e933aa690c21a993  gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c
  5d69e23986a330c5632e88c446563bf7  gcc/testsuite/gcc.target/sparc/tls-ld-int16.c
  aacbb54603a04293c4726975701e79e5  gcc/testsuite/gcc.target/sparc/tls-ld-int32.c
--- 107499,107505 ----
  eab3dd9c7afd97e9615ef7573877aeeb  gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
  1943f3e1f1253e644f6fe445637c2dec  gcc/testsuite/gcc.target/sparc/sparc-trap-1.c
  2beea1f4d6dac65ba6099a688c546ad0  gcc/testsuite/gcc.target/sparc/sparc.exp
! c8d25465f28bb3a0d1227086ce4b5290  gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c
  8e13d07524eb18b1e933aa690c21a993  gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c
  5d69e23986a330c5632e88c446563bf7  gcc/testsuite/gcc.target/sparc/tls-ld-int16.c
  aacbb54603a04293c4726975701e79e5  gcc/testsuite/gcc.target/sparc/tls-ld-int32.c
*************** eae1c01e9cd07e06f5b2053c9c8e8d0c  gcc/te
*** 112988,112993 ****
--- 113084,113091 ----
  60795209d96fe6d73334d162b3138c27  gcc/testsuite/gfortran.dg/altreturn_8.f90
  14f153f4930c4715ce36663b7f2859d1  gcc/testsuite/gfortran.dg/altreturn_9_0.f90
  3c92d543d83475baecb2a7bac4775a08  gcc/testsuite/gfortran.dg/altreturn_9_1.f90
+ 3233ae346a158cb684f59b9a476bef9f  gcc/testsuite/gfortran.dg/always_inline_1.f90
+ c33ea9bd37e1033734e720a4406dd9c8  gcc/testsuite/gfortran.dg/always_inline_2.f90
  5efcafe8829b585812ac42002ce9079c  gcc/testsuite/gfortran.dg/ambiguous_reference_1.f90
  407349fe5dc0dd80df43de2e773a4cab  gcc/testsuite/gfortran.dg/ambiguous_reference_2.f90
  4a2d243fa69596ed5111843ecb20b347  gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
*************** bc053b737dfa9b94047dc769c31f6a67  gcc/te
*** 113197,113202 ****
--- 113295,113301 ----
  cbd03f59c658425aa443e870f7904e76  gcc/testsuite/gfortran.dg/asan/asan.exp
  3b8425a2f59699b47aac6da29c11aba9  gcc/testsuite/gfortran.dg/asan/associate_58.f90
  e9f58df1de071d2b106b16b3af8f6764  gcc/testsuite/gfortran.dg/asan/associate_59.f90
+ f3a2f2d532dfb58980122e4734146c0d  gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90
  32f63bfc5a1fd9dda988b63c860b03bd  gcc/testsuite/gfortran.dg/asan/finalize_1.f90
  66de6cb3bf07d14487491fac7d1ee72f  gcc/testsuite/gfortran.dg/asan/pointer_assign_16.f90
  68c306b7235f43b669fee04a590362d9  gcc/testsuite/gfortran.dg/asan/pr110415-2.f90
*************** e0fe6119bfcf724ee51375d3156cacc5  gcc/te
*** 113301,113307 ****
--- 113400,113408 ----
  741671a391caf8cb1c98e29e99735660  gcc/testsuite/gfortran.dg/associate_78.f90
  5a67561f9b0d9f903558a99dceabeb25  gcc/testsuite/gfortran.dg/associate_79.f90
  3c2206420bb8717914aa447789b5f079  gcc/testsuite/gfortran.dg/associate_8.f03
+ c7ede1ebcb10a45e043e636af05828b5  gcc/testsuite/gfortran.dg/associate_80.f90
  0406413659a92c10d44ed1f1576987b9  gcc/testsuite/gfortran.dg/associate_9.f03
+ 93b46707a76210c61d3344b378b624bd  gcc/testsuite/gfortran.dg/associate_infer_program_type.f90
  51f82584276ab8f411b8d9d7e84fadc8  gcc/testsuite/gfortran.dg/associated_1.f90
  76b7fa8062aee263b1ef942bd8bc01bf  gcc/testsuite/gfortran.dg/associated_2.f90
  dd5a4a295ba62a8846fa5d3878b5dfa6  gcc/testsuite/gfortran.dg/associated_3.f90
*************** d0dda7d4f02cde55063cdbc07f9865df  gcc/te
*** 115251,115256 ****
--- 115352,115359 ----
  566e25d512fab9b0fe403d4bcaab5cce  gcc/testsuite/gfortran.dg/do_concurrent_8_f2023.f90
  2fe0da2c9dbe8582e4644dc6911d0c0a  gcc/testsuite/gfortran.dg/do_concurrent_9.f90
  cbd9864a0e437c82bc4732c67efaffeb  gcc/testsuite/gfortran.dg/do_concurrent_all_clauses.f90
+ f9615f85b01ea0b68ab422dceffcd43b  gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90
+ 8d93dbabaf43459b40abe1177dba89ed  gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90
  7910395d8f0f8e1c4c3b19bf52ac51b4  gcc/testsuite/gfortran.dg/do_concurrent_basic.f90
  eec12ded6b543d22e4513f1fd5b84033  gcc/testsuite/gfortran.dg/do_concurrent_constraints.f90
  c4a3ee13c42841a8c629fe8c2fcf7be8  gcc/testsuite/gfortran.dg/do_concurrent_local_init.f90
*************** b8f902f76eb78d41248d3f43e7203c3e  gcc/te
*** 116022,116027 ****
--- 116125,116132 ----
  37cd6187e808ee365884bcbc55152cbf  gcc/testsuite/gfortran.dg/generic_35.f90
  2ecee9dd67a37d46386d24fb1f25af74  gcc/testsuite/gfortran.dg/generic_36-1.f90
  a5bbbc17d24a1ce19bfca4527daacdab  gcc/testsuite/gfortran.dg/generic_36-2.f90
+ 2731ff7984c99a1c47c5a3e700de3215  gcc/testsuite/gfortran.dg/generic_37.f90
+ 93b7edb55c79b97907efd43c68be6026  gcc/testsuite/gfortran.dg/generic_38.f90
  a5a419e931b944ccee23f03064f3067a  gcc/testsuite/gfortran.dg/generic_4.f90
  6b638ae392f7e94c1592d0efbc053876  gcc/testsuite/gfortran.dg/generic_5.f90
  dc5927a86c1c614c2ff8285c60cf86f9  gcc/testsuite/gfortran.dg/generic_6.f90
*************** c20c9f1e0f2b7f6bc763a7e20b0857ef  gcc/te
*** 116332,116346 ****
  8594f381e1344c5f1587ee1f8c22ed77  gcc/testsuite/gfortran.dg/gomp/allocate-12.f90
  a0f40b3f2545e1ffe3ba1eb23a11fa60  gcc/testsuite/gfortran.dg/gomp/allocate-13.f90
  ff6d377128556e0e1848678ee32b2b30  gcc/testsuite/gfortran.dg/gomp/allocate-13a.f90
! 1427e63cdfa6a6ee32467781b3cdc26a  gcc/testsuite/gfortran.dg/gomp/allocate-14.f90
  4502284686c6bf4f4967dbf067276b5a  gcc/testsuite/gfortran.dg/gomp/allocate-15.f90
  32066313030d772ed76eb71e1b3b3625  gcc/testsuite/gfortran.dg/gomp/allocate-16.f90
  f599914502cce400a69c7df0fd407965  gcc/testsuite/gfortran.dg/gomp/allocate-2.f90
  16e9d68b7804e4ecd40f3bd6702cf3c5  gcc/testsuite/gfortran.dg/gomp/allocate-3.f90
  3bdac730a5748360ce01b4b1d4550b1b  gcc/testsuite/gfortran.dg/gomp/allocate-4.f90
  8332d54a8612efaffd56b742ccc46420  gcc/testsuite/gfortran.dg/gomp/allocate-5.f90
! 8c46487581140059e2ecbcffbb0495a4  gcc/testsuite/gfortran.dg/gomp/allocate-6.f90
! ec8293d35d2af0891574bfa038e7d749  gcc/testsuite/gfortran.dg/gomp/allocate-7.f90
  db9a9c9e9be7de239493d5f606d71961  gcc/testsuite/gfortran.dg/gomp/allocate-8.f90
  77868d12d537788c591fbb0f45ff5bbd  gcc/testsuite/gfortran.dg/gomp/allocate-9.f90
  4acd7d30dbb157b399ab53244bf88e88  gcc/testsuite/gfortran.dg/gomp/allocate-clause.f90
--- 116437,116451 ----
  8594f381e1344c5f1587ee1f8c22ed77  gcc/testsuite/gfortran.dg/gomp/allocate-12.f90
  a0f40b3f2545e1ffe3ba1eb23a11fa60  gcc/testsuite/gfortran.dg/gomp/allocate-13.f90
  ff6d377128556e0e1848678ee32b2b30  gcc/testsuite/gfortran.dg/gomp/allocate-13a.f90
! 6e6c8d27c8d46332621f6948434b8922  gcc/testsuite/gfortran.dg/gomp/allocate-14.f90
  4502284686c6bf4f4967dbf067276b5a  gcc/testsuite/gfortran.dg/gomp/allocate-15.f90
  32066313030d772ed76eb71e1b3b3625  gcc/testsuite/gfortran.dg/gomp/allocate-16.f90
  f599914502cce400a69c7df0fd407965  gcc/testsuite/gfortran.dg/gomp/allocate-2.f90
  16e9d68b7804e4ecd40f3bd6702cf3c5  gcc/testsuite/gfortran.dg/gomp/allocate-3.f90
  3bdac730a5748360ce01b4b1d4550b1b  gcc/testsuite/gfortran.dg/gomp/allocate-4.f90
  8332d54a8612efaffd56b742ccc46420  gcc/testsuite/gfortran.dg/gomp/allocate-5.f90
! 1e4f555a97f55f3e49f5c8a938fb36e2  gcc/testsuite/gfortran.dg/gomp/allocate-6.f90
! 3713bde6cc999f94c1a3603fc8d243f9  gcc/testsuite/gfortran.dg/gomp/allocate-7.f90
  db9a9c9e9be7de239493d5f606d71961  gcc/testsuite/gfortran.dg/gomp/allocate-8.f90
  77868d12d537788c591fbb0f45ff5bbd  gcc/testsuite/gfortran.dg/gomp/allocate-9.f90
  4acd7d30dbb157b399ab53244bf88e88  gcc/testsuite/gfortran.dg/gomp/allocate-clause.f90
*************** a81fcf292a341e29920f0576722dfd3e  gcc/te
*** 116918,116925 ****
--- 117023,117038 ----
  874160eb3e56004e967fed8574857c36  gcc/testsuite/gfortran.dg/gomp/target-exit-data.f90
  255df1293a7e993064b5f2531dd1a039  gcc/testsuite/gfortran.dg/gomp/target-has-device-addr-1.f90
  533ad130fc9c9f6a430f9cdefc575831  gcc/testsuite/gfortran.dg/gomp/target-has-device-addr-2.f90
+ ab3926feb9d2679efdfeecf9d51ab7b4  gcc/testsuite/gfortran.dg/gomp/target-map-iterators-1.f90
+ 8d9e0ae2f57e9370def93dc1813e7ab5  gcc/testsuite/gfortran.dg/gomp/target-map-iterators-2.f90
+ 90299739dd01d1e5d4a625e094ceb46e  gcc/testsuite/gfortran.dg/gomp/target-map-iterators-3.f90
+ 54d705cb518ca1b4b1e16ca31bcfb01c  gcc/testsuite/gfortran.dg/gomp/target-map-iterators-4.f90
+ 280d7dafe6860cbe3097772730b9c907  gcc/testsuite/gfortran.dg/gomp/target-map-iterators-6.f90
  3c3ee23796192e475b1597bfe4ae9d72  gcc/testsuite/gfortran.dg/gomp/target-parallel1.f90
  69d4ca23e09530908dad71ad87c932c1  gcc/testsuite/gfortran.dg/gomp/target-update-1.f90
+ 6234efd00b945893b6d83d1a14a1770e  gcc/testsuite/gfortran.dg/gomp/target-update-iterators-1.f90
+ bec74c4b35a105037172549f0132f030  gcc/testsuite/gfortran.dg/gomp/target-update-iterators-2.f90
+ 7bdc9622cb46edabdd00694547f9f318  gcc/testsuite/gfortran.dg/gomp/target-update-iterators-3.f90
  ace8eeae9c6c9db051a9c0f4380b3cf1  gcc/testsuite/gfortran.dg/gomp/target1.f90
  b75e4a6eaec211becf176c75768a3f3d  gcc/testsuite/gfortran.dg/gomp/target2.f90
  4a93baff2b168f10d86571d18de637ba  gcc/testsuite/gfortran.dg/gomp/target3.f90
*************** b75cb93f87f099ad715aceb9cb7b1bf2  gcc/te
*** 117310,117315 ****
--- 117423,117429 ----
  59abe5f1f158e0816b2237fd238c777c  gcc/testsuite/gfortran.dg/implied_do_1.f90
  79d235d8144a6b966e05d500c1aec29d  gcc/testsuite/gfortran.dg/implied_do_2.f90
  247f9262ffe475b62c0ef01e63fadeb2  gcc/testsuite/gfortran.dg/implied_do_3.f90
+ bcc7ccd2d78cd1cf66642218ac0d879a  gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90
  5065379e91a4d65a73a912a4ec5a4dce  gcc/testsuite/gfortran.dg/implied_do_io_1.f90
  9fd9e2d26f02a28f5dd5a9964e433600  gcc/testsuite/gfortran.dg/implied_do_io_2.f90
  4b57cf5b0a32bb03de538f4d89b2ec2c  gcc/testsuite/gfortran.dg/implied_do_io_3.f90
*************** ec558a82bb4b8209168624a762e13383  gcc/te
*** 117431,117436 ****
--- 117545,117552 ----
  452645ba47a1260f909898a7313d9d8f  gcc/testsuite/gfortran.dg/initialization_7.f90
  cc4d6e061d5fbfc0742e0c48dad42d09  gcc/testsuite/gfortran.dg/initialization_8.f90
  113aa5e18ce48309d252bdc0c12429de  gcc/testsuite/gfortran.dg/initialization_9.f90
+ c3d485c2bce0cbc1b7ad2003686bff6d  gcc/testsuite/gfortran.dg/inline_1.f90
+ 4c74771d7b233a14078dd62e3dbaa368  gcc/testsuite/gfortran.dg/inline_2.f90
  1cc76d4c1acac6297df84e3574966378  gcc/testsuite/gfortran.dg/inline_matmul_1.f90
  77f3febffafae6303787ea418d1d31d5  gcc/testsuite/gfortran.dg/inline_matmul_10.f90
  78ba6e618e4a1cd6e7597233a5e8e65d  gcc/testsuite/gfortran.dg/inline_matmul_11.f90
*************** fe90073fb4e5cee39b74c1beaf9d4591  gcc/te
*** 117887,117892 ****
--- 118003,118009 ----
  4abeb696fc1ff42b90e057d532450170  gcc/testsuite/gfortran.dg/literal_constants.f90
  216d406d940fe0e645023a615aa3efa6  gcc/testsuite/gfortran.dg/loc_1.f90
  fe9cce4d0817f89d4e60de501adfaccb  gcc/testsuite/gfortran.dg/loc_2.f90
+ 3ffa23b93aef28b7b125c964d026c83b  gcc/testsuite/gfortran.dg/loc_3.f90
  9db6334e52b121d0e2608f5e942e19d4  gcc/testsuite/gfortran.dg/logical_1.f90
  eaf85485d1421620a4a3895b334ef211  gcc/testsuite/gfortran.dg/logical_2.f90
  e3c9788d90071688e2490dada0714d02  gcc/testsuite/gfortran.dg/logical_3.f90
*************** b89a8aa7030c869fe0210fab0f943107  gcc/te
*** 118611,118617 ****
  c8268112a25855a7d481b68d88cd5849  gcc/testsuite/gfortran.dg/pdt_56.f03
  4c9df43a3147b0d88edf8e884cd7539f  gcc/testsuite/gfortran.dg/pdt_57.f03
  dfae0584c34f174386746029a2bbf0b1  gcc/testsuite/gfortran.dg/pdt_58.f03
! a5070ccaa9b85c10608985b219421c39  gcc/testsuite/gfortran.dg/pdt_59.f03
  65d2ad728417ad3174fc1ce2b51a458d  gcc/testsuite/gfortran.dg/pdt_6.f03
  9dbc08fbae591c5a9da5818dd56b234e  gcc/testsuite/gfortran.dg/pdt_60.f03
  e8c4c8bb9c03a99a4368a372096fdfb9  gcc/testsuite/gfortran.dg/pdt_61.f03
--- 118728,118734 ----
  c8268112a25855a7d481b68d88cd5849  gcc/testsuite/gfortran.dg/pdt_56.f03
  4c9df43a3147b0d88edf8e884cd7539f  gcc/testsuite/gfortran.dg/pdt_57.f03
  dfae0584c34f174386746029a2bbf0b1  gcc/testsuite/gfortran.dg/pdt_58.f03
! 72e395b4e1231fbb8e42912cecda81ea  gcc/testsuite/gfortran.dg/pdt_59.f03
  65d2ad728417ad3174fc1ce2b51a458d  gcc/testsuite/gfortran.dg/pdt_6.f03
  9dbc08fbae591c5a9da5818dd56b234e  gcc/testsuite/gfortran.dg/pdt_60.f03
  e8c4c8bb9c03a99a4368a372096fdfb9  gcc/testsuite/gfortran.dg/pdt_61.f03
*************** f545f62c1e71dc7bd67638aeeb2db587  gcc/te
*** 118648,118653 ****
--- 118765,118771 ----
  c621629f10feffbfa9fef1441a610e53  gcc/testsuite/gfortran.dg/pdt_9.f03
  d990a49ad7534a4a10800a8a538fa04a  gcc/testsuite/gfortran.dg/pdt_90.f03
  fda16d44f3a45aad8ceeb1e18d56f6f1  gcc/testsuite/gfortran.dg/pdt_91.f03
+ e9a08468bbfc30d53eb47dd61f7f2bbe  gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90
  ce217e87870d47796b72f99a0b0f46b7  gcc/testsuite/gfortran.dg/pdt_generic_1.f90
  4555f630cb01a40d0eaf421fd7ad9e77  gcc/testsuite/gfortran.dg/pointer_1.f90
  b836f09e53badc9a7066eb5692c28f74  gcc/testsuite/gfortran.dg/pointer_2.f90
*************** a62ae094c8ca1f9dabc977243d63673a  gcc/te
*** 118850,118855 ****
--- 118968,118974 ----
  ef927a22b87a85d511ab9004a456c6b5  gcc/testsuite/gfortran.dg/pr105456.f90
  d7a956964080feaa84755b3114519005  gcc/testsuite/gfortran.dg/pr105473.f90
  ace309aa44f1d37b7e1187c47c4975be  gcc/testsuite/gfortran.dg/pr105501.f90
+ b933f761fa1987592cdb38c3965c877e  gcc/testsuite/gfortran.dg/pr105594.f90
  04437d9e5ce70eee9f187cabd7a3ae39  gcc/testsuite/gfortran.dg/pr105633.f90
  e427a01da58f1d7d585e51cf6e40f25f  gcc/testsuite/gfortran.dg/pr105847.f90
  d4e9f09fafa1c1f5e009aedb22732715  gcc/testsuite/gfortran.dg/pr105954.f90
*************** e45932f2002bdc1431a9d1f393d02f34  gcc/te
*** 119527,119533 ****
  b4a710f78170379226385d38f9ee29fd  gcc/testsuite/gfortran.dg/pr87117.f90
  a7c7916226de2a451ee13e79701ffcdb  gcc/testsuite/gfortran.dg/pr87217.f
  577ae3ca82714dfd467f92b954cfb1b7  gcc/testsuite/gfortran.dg/pr87360.f90
! d0a1f00eafe5dcca6f3a5f28ce4b72f3  gcc/testsuite/gfortran.dg/pr87907.f90
  aa095a787c42cdeb4d2b7777cbeccfe3  gcc/testsuite/gfortran.dg/pr87922.f90
  f8e6352c1c80659a4023e56075d6f1cc  gcc/testsuite/gfortran.dg/pr87945_1.f90
  b37e2980deb28560322fe1668580dd8c  gcc/testsuite/gfortran.dg/pr87945_2.f90
--- 119646,119652 ----
  b4a710f78170379226385d38f9ee29fd  gcc/testsuite/gfortran.dg/pr87117.f90
  a7c7916226de2a451ee13e79701ffcdb  gcc/testsuite/gfortran.dg/pr87217.f
  577ae3ca82714dfd467f92b954cfb1b7  gcc/testsuite/gfortran.dg/pr87360.f90
! 8063d4a82a71b92ce8fe9d8425210f3b  gcc/testsuite/gfortran.dg/pr87907.f90
  aa095a787c42cdeb4d2b7777cbeccfe3  gcc/testsuite/gfortran.dg/pr87922.f90
  f8e6352c1c80659a4023e56075d6f1cc  gcc/testsuite/gfortran.dg/pr87945_1.f90
  b37e2980deb28560322fe1668580dd8c  gcc/testsuite/gfortran.dg/pr87945_2.f90
*************** c7e316d6485eeefb75d9244215792467  gcc/te
*** 119671,119677 ****
  06ceb251cd1f91efba4a449cd034efcc  gcc/testsuite/gfortran.dg/pr93365.f90
  134c0658337cda14d175a3fad4e528f8  gcc/testsuite/gfortran.dg/pr93366.f90
  0415e73e153ba2916356f98ab5f50962  gcc/testsuite/gfortran.dg/pr93423.f90
! db4f2455ee82f701b58ba5d66bdd530e  gcc/testsuite/gfortran.dg/pr93461.f90
  94161ac0b4a6fa07f91b94a267e5093a  gcc/testsuite/gfortran.dg/pr93473.f90
  e853cb1d6d53cebb57679b7de592a8cb  gcc/testsuite/gfortran.dg/pr93484_1.f90
  d422d9251e2f720fa41ed649ec3ed4e4  gcc/testsuite/gfortran.dg/pr93484_2.f90
--- 119790,119796 ----
  06ceb251cd1f91efba4a449cd034efcc  gcc/testsuite/gfortran.dg/pr93365.f90
  134c0658337cda14d175a3fad4e528f8  gcc/testsuite/gfortran.dg/pr93366.f90
  0415e73e153ba2916356f98ab5f50962  gcc/testsuite/gfortran.dg/pr93423.f90
! 095f2c8387e0d55cdfac4c284b58afb6  gcc/testsuite/gfortran.dg/pr93461.f90
  94161ac0b4a6fa07f91b94a267e5093a  gcc/testsuite/gfortran.dg/pr93473.f90
  e853cb1d6d53cebb57679b7de592a8cb  gcc/testsuite/gfortran.dg/pr93484_1.f90
  d422d9251e2f720fa41ed649ec3ed4e4  gcc/testsuite/gfortran.dg/pr93484_2.f90
*************** efca3c0c5b68406fe373475bbaf52c74  gcc/te
*** 120621,120627 ****
  09b7366d147b36ed483432327ffbe1b8  gcc/testsuite/gfortran.dg/structure_constructor_8.f03
  1b4199459240df20399bbbee2041836e  gcc/testsuite/gfortran.dg/structure_constructor_9.f90
  120108ca58b428ca1b6d5320c8f3588f  gcc/testsuite/gfortran.dg/submodule_1.f08
! 43c1a59eedc5eb389c662954c8605d21  gcc/testsuite/gfortran.dg/submodule_10.f08
  c5c423f619065775d57095b6232e392b  gcc/testsuite/gfortran.dg/submodule_11.f08
  9542945224c8744c6179ede6b10e8b0d  gcc/testsuite/gfortran.dg/submodule_12.f08
  f52d9c0fcdf271bd2e5abda2cc3b4855  gcc/testsuite/gfortran.dg/submodule_13.f08
--- 120740,120746 ----
  09b7366d147b36ed483432327ffbe1b8  gcc/testsuite/gfortran.dg/structure_constructor_8.f03
  1b4199459240df20399bbbee2041836e  gcc/testsuite/gfortran.dg/structure_constructor_9.f90
  120108ca58b428ca1b6d5320c8f3588f  gcc/testsuite/gfortran.dg/submodule_1.f08
! 9c87bc920957f76046c7aa4a62632396  gcc/testsuite/gfortran.dg/submodule_10.f08
  c5c423f619065775d57095b6232e392b  gcc/testsuite/gfortran.dg/submodule_11.f08
  9542945224c8744c6179ede6b10e8b0d  gcc/testsuite/gfortran.dg/submodule_12.f08
  f52d9c0fcdf271bd2e5abda2cc3b4855  gcc/testsuite/gfortran.dg/submodule_13.f08
*************** aa943f2bec85bb461999d2cb2adfc73a  gcc/te
*** 120646,120659 ****
  1150b8f6fefdb0cd92bc1b1145ca90bd  gcc/testsuite/gfortran.dg/submodule_30.f08
  701cab3628ee98dbcccc1d64e72d4ed6  gcc/testsuite/gfortran.dg/submodule_31.f08
  2d0d1435c8fc29f13f4d8d923dcdddc5  gcc/testsuite/gfortran.dg/submodule_32.f08
! e87560f12976c9545d8b7ae479b2618c  gcc/testsuite/gfortran.dg/submodule_33.f08
  ce6def9eadc42b1a4cd9adf6d9fe55ee  gcc/testsuite/gfortran.dg/submodule_34.f90
  68f9f70d888318a31160ba732171726f  gcc/testsuite/gfortran.dg/submodule_4.f08
  d470cf2de70b478f82f67f0729c09b76  gcc/testsuite/gfortran.dg/submodule_5.f08
  125419a41557152ac79de8af903ef20a  gcc/testsuite/gfortran.dg/submodule_6.f08
  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
--- 120765,120785 ----
  1150b8f6fefdb0cd92bc1b1145ca90bd  gcc/testsuite/gfortran.dg/submodule_30.f08
  701cab3628ee98dbcccc1d64e72d4ed6  gcc/testsuite/gfortran.dg/submodule_31.f08
  2d0d1435c8fc29f13f4d8d923dcdddc5  gcc/testsuite/gfortran.dg/submodule_32.f08
! fe1e1739d8ff308cc149809a99c7555c  gcc/testsuite/gfortran.dg/submodule_33.f08
  ce6def9eadc42b1a4cd9adf6d9fe55ee  gcc/testsuite/gfortran.dg/submodule_34.f90
+ f64529a65fc3e9378e61590ca8124b07  gcc/testsuite/gfortran.dg/submodule_35.f90
+ 06b0b1e479a58fb5fa876dfb324c1ff2  gcc/testsuite/gfortran.dg/submodule_35_aux.f90
+ 515228b5fbd12b23ede253b4e6f5556d  gcc/testsuite/gfortran.dg/submodule_36.f90
+ daa27d22ee8933c77f6dbf1b9b8ec026  gcc/testsuite/gfortran.dg/submodule_37.f90
+ 656e45267c629a6cddc36d51445dc1e3  gcc/testsuite/gfortran.dg/submodule_38.f90
  68f9f70d888318a31160ba732171726f  gcc/testsuite/gfortran.dg/submodule_4.f08
  d470cf2de70b478f82f67f0729c09b76  gcc/testsuite/gfortran.dg/submodule_5.f08
  125419a41557152ac79de8af903ef20a  gcc/testsuite/gfortran.dg/submodule_6.f08
  8b4b5d6a33ef9520206432c7652a183f  gcc/testsuite/gfortran.dg/submodule_7.f08
  0588325ee7072ce91be610f63a4baee1  gcc/testsuite/gfortran.dg/submodule_8.f08
  bbf9d850641248605c066ac6bca34a54  gcc/testsuite/gfortran.dg/submodule_9.f08
+ c992f2a0eed15d92da719ed3d3b7e665  gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90
+ fd539823e8dfe45b6bb6038fdd70cd12  gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90
  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
*************** b6cbc2d7f0f983561ecfb1e889cc9564  gcc/te
*** 121187,121192 ****
--- 121313,121319 ----
  3392d3d67c1af3233bcb1cb1563137c7  gcc/testsuite/gfortran.dg/vect/pr116956.f90
  968b7f70f6ea492d4668938e2d929b2c  gcc/testsuite/gfortran.dg/vect/pr123016.f90
  69ce1acd2174b1da669fa0ee2dcfcd74  gcc/testsuite/gfortran.dg/vect/pr123986.f90
+ 586131e6c904729b8febde3dbc667a68  gcc/testsuite/gfortran.dg/vect/pr125431.f90
  a17cb1ab891a5af3471298da97331dda  gcc/testsuite/gfortran.dg/vect/pr19049.f90
  fdb4a5f5d5eff2fd75822f14875bd776  gcc/testsuite/gfortran.dg/vect/pr32377.f90
  bbb6998ea100c6c2039976c6446a0c10  gcc/testsuite/gfortran.dg/vect/pr32380.f
*************** de4ede524274f9710ef8bf904fe6ec06  gcc/te
*** 121797,121802 ****
--- 121924,121931 ----
  0683e282cbd968a6f1dfa78c956bd80d  gcc/testsuite/gm2.dg/spell/iso/fail/badimport2.mod
  6109d687a613909b86fef68d3b2436b1  gcc/testsuite/gm2.dg/spell/iso/fail/badimport3.mod
  dad8856ff49fe71a7752d5bad615ab0a  gcc/testsuite/gm2.dg/spell/iso/fail/badimport4.mod
+ 0c5eb3fe51e0b530de7515434a726505  gcc/testsuite/gm2.dg/spell/iso/fail/badmodule.mod
+ 9581f83080e02bbcd46078c0102946f1  gcc/testsuite/gm2.dg/spell/iso/fail/badrecord.mod
  bac3b2f6653a8c5706652acb80672851  gcc/testsuite/gm2.dg/spell/iso/fail/badspellabs.mod
  629a261c471eee1fd867cb40ab126a66  gcc/testsuite/gm2.dg/spell/iso/fail/badspelladr.mod
  36f7e140b207b9b84c44ebecea4be888  gcc/testsuite/gm2.dg/spell/iso/fail/badspellcap.mod
*************** a5e57fa132253a43e0c0249910ffd45e  gcc/te
*** 121808,121813 ****
--- 121937,121943 ----
  ed18ae57bd12eb7e4afbec5f51238b8f  gcc/testsuite/gm2.dg/spell/iso/fail/badspellincl.mod
  fba1c621a45c06d14612cfa475f94517  gcc/testsuite/gm2.dg/spell/iso/fail/badspellnew.mod
  910ca9bef7c2a9c2b16d30443bcd21c9  gcc/testsuite/gm2.dg/spell/iso/fail/badspellsize.mod
+ ec32310ed48856d4a5ef26382cc42fa1  gcc/testsuite/gm2.dg/spell/iso/fail/color.def
  2dcba0fe0cfbbf9ae4a1a80eb761fa58  gcc/testsuite/gm2.dg/spell/iso/fail/dg-spell-iso-fail.exp
  f8106e6cfe3ff2e00a64011fdc09ec12  gcc/testsuite/gm2/base-lang/pass/SYSTEM.def
  60d00e18e126604df9335bb83e6daba3  gcc/testsuite/gm2/base-lang/pass/base-lang-test.sh
*************** cd8ba5dd4250a5b2e05a86d17653003a  gcc/te
*** 124261,124267 ****
  dc0d018c7ef4988da05274a87a491db9  gcc/testsuite/gnat.dg/atomic7_pkg2.adb
  1e3f2b6f0d918e36ae539ab32f3a4b31  gcc/testsuite/gnat.dg/atomic7_pkg2.ads
  16c10ef2b56763079ce902fa8a6be517  gcc/testsuite/gnat.dg/atomic8.adb
! 9cf0427260327c8df6b99da823648ff4  gcc/testsuite/gnat.dg/atomic9.adb
  d0f41363293cf0ce8de4f15905ffba68  gcc/testsuite/gnat.dg/auto_var_init.adb
  3a29826c9a71b419b0c2323869c82f42  gcc/testsuite/gnat.dg/bad_array.adb
  8ed54c1eb565f97d5511a00d165ab799  gcc/testsuite/gnat.dg/bias1.adb
--- 124391,124397 ----
  dc0d018c7ef4988da05274a87a491db9  gcc/testsuite/gnat.dg/atomic7_pkg2.adb
  1e3f2b6f0d918e36ae539ab32f3a4b31  gcc/testsuite/gnat.dg/atomic7_pkg2.ads
  16c10ef2b56763079ce902fa8a6be517  gcc/testsuite/gnat.dg/atomic8.adb
! e5091ed1d302f492811c96f548859552  gcc/testsuite/gnat.dg/atomic9.adb
  d0f41363293cf0ce8de4f15905ffba68  gcc/testsuite/gnat.dg/auto_var_init.adb
  3a29826c9a71b419b0c2323869c82f42  gcc/testsuite/gnat.dg/bad_array.adb
  8ed54c1eb565f97d5511a00d165ab799  gcc/testsuite/gnat.dg/bias1.adb
*************** a0ed36c59884ca42f622cc1d30faff4d  gcc/te
*** 128912,128918 ****
  999cfa769885f2a876551163115fe602  gcc/testsuite/lib/g++-dg.exp
  8f61c91e9ce681c3472f2a307c7d7f00  gcc/testsuite/lib/g++.exp
  2ebe67e0e1de7772a7339a397dba5dc4  gcc/testsuite/lib/gcc-defs.exp
! 4509e498c1b9c26e0114d658e21335ff  gcc/testsuite/lib/gcc-dg.exp
  5a6de494accc5d43d4daa0ed3d05846b  gcc/testsuite/lib/gcc-gdb-test.exp
  5d43c86c0be2338b09999f28a2d4ae79  gcc/testsuite/lib/gcc-simulate-thread.exp
  f137fa2e280bd8fee6a57544dbe520a8  gcc/testsuite/lib/gcc.exp
--- 129042,129048 ----
  999cfa769885f2a876551163115fe602  gcc/testsuite/lib/g++-dg.exp
  8f61c91e9ce681c3472f2a307c7d7f00  gcc/testsuite/lib/g++.exp
  2ebe67e0e1de7772a7339a397dba5dc4  gcc/testsuite/lib/gcc-defs.exp
! beea177adf92fe95e8df49c09e98fb22  gcc/testsuite/lib/gcc-dg.exp
  5a6de494accc5d43d4daa0ed3d05846b  gcc/testsuite/lib/gcc-gdb-test.exp
  5d43c86c0be2338b09999f28a2d4ae79  gcc/testsuite/lib/gcc-simulate-thread.exp
  f137fa2e280bd8fee6a57544dbe520a8  gcc/testsuite/lib/gcc.exp
*************** de9eeadec9703aff96169206e31a3a22  gcc/te
*** 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
--- 129101,129107 ----
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  6f6a566231f79b409eb113cf2e7f5132  gcc/testsuite/lib/target-supports-dg.exp
! 19cd4ba3c3ca93751a382a71827defaf  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
*************** cf008cdbb160a8d4eded875132b8af0d  gcc/te
*** 130066,130071 ****
--- 130196,130202 ----
  bef0b63cc1001918d661e9e13db5ef66  gcc/testsuite/rust/compile/array_empty_list.rs
  57922881fbda5f036b116d8caa6456d0  gcc/testsuite/rust/compile/arrays1.rs
  b844641ffa836259966da8bbdb705602  gcc/testsuite/rust/compile/arrays2.rs
+ 293314113a4ba4b608178368155ed2fa  gcc/testsuite/rust/compile/assert_missing_panic.rs
  0e211ddb899f5f3123a498cfad360aa2  gcc/testsuite/rust/compile/assume.rs
  1eefc880259227fbe7000d396bfa5565  gcc/testsuite/rust/compile/attr-macro.rs
  86f36986db04879d961e8610ff5743b5  gcc/testsuite/rust/compile/attr-mismatch-crate-name.rs
*************** baa3a0d30775ed604f878df5231cba48  gcc/te
*** 130111,130117 ****
  0168c54787b8a0fe1adaf95ec9d34577  gcc/testsuite/rust/compile/break_continue_outside_loop.rs
  bd0c3f42f2caa1d391123da46b68a0e8  gcc/testsuite/rust/compile/break_with_value_inside_loop.rs
  3089e5cf84922d853bd7c44b22155de5  gcc/testsuite/rust/compile/broken_utf8.rs
! 7e9f1a01503b162cce7c0e3c782bf840  gcc/testsuite/rust/compile/bswap.rs
  bf288f5c0e5145fb8d4726a44c5a66a2  gcc/testsuite/rust/compile/bug-with-default-generic.rs
  8df49cd8be0ccc61f2a2b4e3b40cadaa  gcc/testsuite/rust/compile/bytecharstring.rs
  47f2827b01658a867a4f66627f986611  gcc/testsuite/rust/compile/canonical_paths1.rs
--- 130242,130248 ----
  0168c54787b8a0fe1adaf95ec9d34577  gcc/testsuite/rust/compile/break_continue_outside_loop.rs
  bd0c3f42f2caa1d391123da46b68a0e8  gcc/testsuite/rust/compile/break_with_value_inside_loop.rs
  3089e5cf84922d853bd7c44b22155de5  gcc/testsuite/rust/compile/broken_utf8.rs
! d2aaa83aac21a0079b403bb1089990f2  gcc/testsuite/rust/compile/bswap.rs
  bf288f5c0e5145fb8d4726a44c5a66a2  gcc/testsuite/rust/compile/bug-with-default-generic.rs
  8df49cd8be0ccc61f2a2b4e3b40cadaa  gcc/testsuite/rust/compile/bytecharstring.rs
  47f2827b01658a867a4f66627f986611  gcc/testsuite/rust/compile/canonical_paths1.rs
*************** b8ca829745dd2a35cb6e5ad418cfda91  gcc/te
*** 130140,130146 ****
  81007cbec0af22f948a0b6fa4bf8ac8c  gcc/testsuite/rust/compile/compiler_builtins_gate.rs
  ea8b519b5f6dc20919765a2d12253cf0  gcc/testsuite/rust/compile/complex-path1.rs
  b8caa30e14e18cfb49d1bed1ae69d8e0  gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs
! 7b21d552483815a7f5bc7562d25dff08  gcc/testsuite/rust/compile/const-issue1440.rs
  02fd8e7a37841f01f3b3d004213940f7  gcc/testsuite/rust/compile/const1.rs
  ffbde230976ce80df05385f373e042a4  gcc/testsuite/rust/compile/const10.rs
  fd81390ede0d9920e2de0ccbbe66ca76  gcc/testsuite/rust/compile/const2.rs
--- 130271,130278 ----
  81007cbec0af22f948a0b6fa4bf8ac8c  gcc/testsuite/rust/compile/compiler_builtins_gate.rs
  ea8b519b5f6dc20919765a2d12253cf0  gcc/testsuite/rust/compile/complex-path1.rs
  b8caa30e14e18cfb49d1bed1ae69d8e0  gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs
! 381a6270bc64cc7f67612601b01ffdfd  gcc/testsuite/rust/compile/const-compound-assignment.rs
! a36a3e611db61c414803115cc04663a7  gcc/testsuite/rust/compile/const-issue1440.rs
  02fd8e7a37841f01f3b3d004213940f7  gcc/testsuite/rust/compile/const1.rs
  ffbde230976ce80df05385f373e042a4  gcc/testsuite/rust/compile/const10.rs
  fd81390ede0d9920e2de0ccbbe66ca76  gcc/testsuite/rust/compile/const2.rs
*************** a76f341ccd5fefbbc01a53f44e7feaf2  gcc/te
*** 130174,130183 ****
  25eb2b47069bab5628a45c28451d0425  gcc/testsuite/rust/compile/const_trait_fn.rs
  6721281195cc56cd12e84384cd45cd14  gcc/testsuite/rust/compile/continue1.rs
  3370848ae37e0693aa39989f2c545c89  gcc/testsuite/rust/compile/crate-metavar1.rs
! c05e382293596d6db07a68db7ac92ff4  gcc/testsuite/rust/compile/ctlz.rs
! 9faa922b70fcfa4e42cf0622f60be08f  gcc/testsuite/rust/compile/ctlz_nonzero.rs
! 3158b338fb88c41e9720caa331fed16d  gcc/testsuite/rust/compile/cttz.rs
! 32e0d094fc3d19605b5bdc758a79f1d4  gcc/testsuite/rust/compile/cttz_nonzero.rs
  0e35180eb3f40915dc324e9d5517c1aa  gcc/testsuite/rust/compile/deadcode_err1.rs
  274c5bccf4091c298f8b3bcb0001befb  gcc/testsuite/rust/compile/deadcode_err2.rs
  938e724daf0b9c0267c67985ebfc93e8  gcc/testsuite/rust/compile/debug-diagnostics-default.rs
--- 130306,130315 ----
  25eb2b47069bab5628a45c28451d0425  gcc/testsuite/rust/compile/const_trait_fn.rs
  6721281195cc56cd12e84384cd45cd14  gcc/testsuite/rust/compile/continue1.rs
  3370848ae37e0693aa39989f2c545c89  gcc/testsuite/rust/compile/crate-metavar1.rs
! b510d87d13fab162e1a275914ee681e4  gcc/testsuite/rust/compile/ctlz.rs
! 39d2b1d47d794da7478d0ecd91625f6e  gcc/testsuite/rust/compile/ctlz_nonzero.rs
! 0508792255106678deb4e026eff1c7e9  gcc/testsuite/rust/compile/cttz.rs
! 9e91f83282433dae17447ab85d62c19b  gcc/testsuite/rust/compile/cttz_nonzero.rs
  0e35180eb3f40915dc324e9d5517c1aa  gcc/testsuite/rust/compile/deadcode_err1.rs
  274c5bccf4091c298f8b3bcb0001befb  gcc/testsuite/rust/compile/deadcode_err2.rs
  938e724daf0b9c0267c67985ebfc93e8  gcc/testsuite/rust/compile/debug-diagnostics-default.rs
*************** e96087da06d9ce6f60ee46403f0f5157  gcc/te
*** 130191,130196 ****
--- 130323,130329 ----
  995f4a134a7219cf1482622f43e12df7  gcc/testsuite/rust/compile/decl_macro6.rs
  0d5616f10a3ce29f6f870e51fea09c3d  gcc/testsuite/rust/compile/decl_macro7.rs
  2060f9066523d761abfbca3e268dda72  gcc/testsuite/rust/compile/default_not_a_kw.rs
+ 283044e9dacd28a10de7c2557dc57f4f  gcc/testsuite/rust/compile/deferred-suffix-validation.rs
  298d05b397725dfc6e627f0ba41464fc  gcc/testsuite/rust/compile/deferred_const_inference.rs
  858a7790df723414c375b55ada9d5b5e  gcc/testsuite/rust/compile/deprecated-fn.rs
  44ea052639e0e1d05623b495d146cbef  gcc/testsuite/rust/compile/derive-debug1.rs
*************** b923aeb3b899eb38e6171f196d629aa4  gcc/te
*** 130215,130233 ****
--- 130348,130370 ----
  b9d63212cced17f6d52eb1b38435a8bc  gcc/testsuite/rust/compile/doc_isolated_cr_inner_line_comment.rs
  325f757f357f27fb55dacdaed8f24d6a  gcc/testsuite/rust/compile/doc_isolated_cr_line_comment.rs
  ead4df48e55f0f1f47527f8f29ed0ce4  gcc/testsuite/rust/compile/doc_macro.rs
+ 7b6ea58d42bad3b93ea13f14c2afc6e3  gcc/testsuite/rust/compile/drop-lang-item.rs
  ffccd19a7721d4e438526bc94d785560  gcc/testsuite/rust/compile/dropck_eyepatch_feature_gate.rs
  95d3e14a4c9c5b1fb5d1171f270642c7  gcc/testsuite/rust/compile/dup_fields.rs
  7d596256980e172cd54a08f34b7f7d48  gcc/testsuite/rust/compile/e0579-neg-float-fail.rs
  f73c3350fbe5e538bfe6eef0852dc34a  gcc/testsuite/rust/compile/e0579-neg-float.rs
  702ed6eef747ba42a54fa1875a12ad6e  gcc/testsuite/rust/compile/early_feature_gate_in_macro.rs
+ 57f8ff16b377cf9593f9454c8a6a5477  gcc/testsuite/rust/compile/empty-non-decimal.rs
  68b329da9893e34099c7d8ad5cb9c940  gcc/testsuite/rust/compile/empty.in
  564795495212ff88b9e379884a8dac14  gcc/testsuite/rust/compile/empty_comment_before_match.rs
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/rust/compile/empty_file
+ cf4082704937dcd6f276b012cae7821d  gcc/testsuite/rust/compile/empty_path.rs
  2f7a4ecab50f00b5f6a6a56206aa9078  gcc/testsuite/rust/compile/empty_union.rs
  d7a19aa4ebfd5e24ab46829e8f056008  gcc/testsuite/rust/compile/enum_discriminant1.rs
  255c1797a6389fb9d3d1afa0de60842a  gcc/testsuite/rust/compile/enum_discriminant2.rs
  a9e08c5d4009f77dffa67287a47e44c3  gcc/testsuite/rust/compile/enum_discriminant3.rs
  2a334ae2f153c70fc2c5b473c90b308c  gcc/testsuite/rust/compile/enum_variant_name.rs
+ 3a4043be7e667b71b7a1bd1e36a7a4d9  gcc/testsuite/rust/compile/evaluate-integer-or-float.rs
  8c264b62a9fcd868449f37332b134faf  gcc/testsuite/rust/compile/exclusive_range_pattern.rs
  a017a785b809075c624123c7c3f19848  gcc/testsuite/rust/compile/exclusive_range_pattern_feature_gate.rs
  d258c7c2d32f482d26eaddf68e107dc3  gcc/testsuite/rust/compile/exhaustiveness1.rs
*************** e364c68fafebd1608e50787d90c6b3e6  gcc/te
*** 130247,130254 ****
  291933df6286b5d2289e0120718719ab  gcc/testsuite/rust/compile/feature_intrinsics.rs
  6f9e00ba38fde78d12dfe07c558689d8  gcc/testsuite/rust/compile/feature_rust_attri0.rs
  afa033c1c4fe2a31381283d6e822cbaa  gcc/testsuite/rust/compile/feature_rust_attri1.rs
! 68873c48c2ca9a38f4772934095861e4  gcc/testsuite/rust/compile/for-loop1.rs
! 91ec856a3fb478e28220b6115ceeccd1  gcc/testsuite/rust/compile/for-loop2.rs
  867005dd9a2dc5871d483b69f5d191c4  gcc/testsuite/rust/compile/for_expr.rs
  29a952da6c0ce6dfcf6fef8e670c7fd0  gcc/testsuite/rust/compile/for_lifetimes.rs
  e6f4744aaa9cc54b3b72abbab66f796e  gcc/testsuite/rust/compile/format_args_basic_expansion.rs
--- 130384,130391 ----
  291933df6286b5d2289e0120718719ab  gcc/testsuite/rust/compile/feature_intrinsics.rs
  6f9e00ba38fde78d12dfe07c558689d8  gcc/testsuite/rust/compile/feature_rust_attri0.rs
  afa033c1c4fe2a31381283d6e822cbaa  gcc/testsuite/rust/compile/feature_rust_attri1.rs
! 5c079fa99106c412becfa756d5d5973d  gcc/testsuite/rust/compile/for-loop1.rs
! 59ff350085e259f0850f2b29cc652056  gcc/testsuite/rust/compile/for-loop2.rs
  867005dd9a2dc5871d483b69f5d191c4  gcc/testsuite/rust/compile/for_expr.rs
  29a952da6c0ce6dfcf6fef8e670c7fd0  gcc/testsuite/rust/compile/for_lifetimes.rs
  e6f4744aaa9cc54b3b72abbab66f796e  gcc/testsuite/rust/compile/format_args_basic_expansion.rs
*************** b5ce6a25e409a2368920d8a11afafaac  gcc/te
*** 130320,130326 ****
  60238af197ff77810e6b85e5b1f52731  gcc/testsuite/rust/compile/issue-1006.rs
  b3e2a2c0f569d317e0297f8411a2c5af  gcc/testsuite/rust/compile/issue-1019.rs
  e1535bacfb51ef60dd71669a144bc8e5  gcc/testsuite/rust/compile/issue-1023.rs
! 6bcbda4d1c22037d46a19557be9d5605  gcc/testsuite/rust/compile/issue-1031.rs
  071c2db16aa47f6a32ffea5b8e121241  gcc/testsuite/rust/compile/issue-1034.rs
  700530c63c203591e551a34f2c4af517  gcc/testsuite/rust/compile/issue-1048.rs
  277734ea77f7d8bf026cf09dc61bed37  gcc/testsuite/rust/compile/issue-1073.rs
--- 130457,130463 ----
  60238af197ff77810e6b85e5b1f52731  gcc/testsuite/rust/compile/issue-1006.rs
  b3e2a2c0f569d317e0297f8411a2c5af  gcc/testsuite/rust/compile/issue-1019.rs
  e1535bacfb51ef60dd71669a144bc8e5  gcc/testsuite/rust/compile/issue-1023.rs
! 294d9ae40f3ad12d9ddec7772529d1c4  gcc/testsuite/rust/compile/issue-1031.rs
  071c2db16aa47f6a32ffea5b8e121241  gcc/testsuite/rust/compile/issue-1034.rs
  700530c63c203591e551a34f2c4af517  gcc/testsuite/rust/compile/issue-1048.rs
  277734ea77f7d8bf026cf09dc61bed37  gcc/testsuite/rust/compile/issue-1073.rs
*************** f03684c646423e96704aeed055ca307c  gcc/te
*** 130343,130349 ****
  1c3a466c6e21e92aabcdd92474ccf219  gcc/testsuite/rust/compile/issue-1251.rs
  df0bbdcb0c2b0cd92f37f0c3ae7ac5ec  gcc/testsuite/rust/compile/issue-1271.rs
  d35d1891be19b66162da604943246e21  gcc/testsuite/rust/compile/issue-1272.rs
! d8eefc3ef39a2ab0253b212432a4f0bd  gcc/testsuite/rust/compile/issue-1289.rs
  25373ab7544c45d6124c227e439d05e3  gcc/testsuite/rust/compile/issue-1323-1.rs
  cb1662a0d7577f3aca90c7977c66877a  gcc/testsuite/rust/compile/issue-1323-2.rs
  e4ee8234acd0a37211eb2ce16089f712  gcc/testsuite/rust/compile/issue-1361.rs
--- 130480,130486 ----
  1c3a466c6e21e92aabcdd92474ccf219  gcc/testsuite/rust/compile/issue-1251.rs
  df0bbdcb0c2b0cd92f37f0c3ae7ac5ec  gcc/testsuite/rust/compile/issue-1271.rs
  d35d1891be19b66162da604943246e21  gcc/testsuite/rust/compile/issue-1272.rs
! 175e68cc39439b5e81fcda4e729af32d  gcc/testsuite/rust/compile/issue-1289.rs
  25373ab7544c45d6124c227e439d05e3  gcc/testsuite/rust/compile/issue-1323-1.rs
  cb1662a0d7577f3aca90c7977c66877a  gcc/testsuite/rust/compile/issue-1323-2.rs
  e4ee8234acd0a37211eb2ce16089f712  gcc/testsuite/rust/compile/issue-1361.rs
*************** e7f4ff1f157eb1430ae62e491b2a8b69  gcc/te
*** 130491,130496 ****
--- 130628,130634 ----
  8c5bc4ae8d56f72bf0612167612e3878  gcc/testsuite/rust/compile/issue-3525.rs
  14cd327be593673b0aed26e16a236d78  gcc/testsuite/rust/compile/issue-3530-1.rs
  da5455f5eeefc71d81325f48a7acf0e9  gcc/testsuite/rust/compile/issue-3530-2.rs
+ 5fe79f2efe99e722c458dfcfb46b3ee5  gcc/testsuite/rust/compile/issue-3537.rs
  51c80cab608dedddd28dc8f38ba05114  gcc/testsuite/rust/compile/issue-3538.rs
  007b0d238d5c43bb3e64aa8bdc40e293  gcc/testsuite/rust/compile/issue-3541-1.rs
  b76ac33736a777ab60b5c604b6761789  gcc/testsuite/rust/compile/issue-3541-2.rs
*************** ee58b560afd747660d7c246708e54ea2  gcc/te
*** 130578,130583 ****
--- 130716,130722 ----
  c3b3bcd2de2f4330a9d7f7964ba3c70d  gcc/testsuite/rust/compile/issue-3966.rs
  16715e4199544d20d2b9e04d8f37bab6  gcc/testsuite/rust/compile/issue-3969.rs
  5e0567fc75434d70427426e2fbe709e1  gcc/testsuite/rust/compile/issue-3971.rs
+ 2c65806a16eb35d0bb4e69d978fad6a8  gcc/testsuite/rust/compile/issue-3972.rs
  b6fa159f78fb7f5d61fc8e1b8b3870f6  gcc/testsuite/rust/compile/issue-3974.rs
  820c12f1b2df552d56a118c769a891e4  gcc/testsuite/rust/compile/issue-3977.rs
  8fdea57988d7137d42c68d0789c6f2f8  gcc/testsuite/rust/compile/issue-3978.rs
*************** b4f44a1ecb9e115e05e69f84570863c6  gcc/te
*** 130594,130604 ****
--- 130733,130746 ----
  5e2d47722fdc6011b18c1aafc4f1cad6  gcc/testsuite/rust/compile/issue-4146.rs
  af8b5fa8155d9dba9f951dc65949bac0  gcc/testsuite/rust/compile/issue-4148.rs
  c68fada68436ff9bede7e8e38b3db37f  gcc/testsuite/rust/compile/issue-4155.rs
+ 4c34c8653873675f2f07e8011a77f303  gcc/testsuite/rust/compile/issue-4158.rs
+ 5302e7270d9196a54cb94475544c9f64  gcc/testsuite/rust/compile/issue-4159.rs
  8bda45fc41b02b17b7719286ff7894ef  gcc/testsuite/rust/compile/issue-4162.rs
  2dcdb23a9194ed02f4aab959c6c5d6d5  gcc/testsuite/rust/compile/issue-4163-2.rs
  5f811abe07eebecdce5ef2772005e2cb  gcc/testsuite/rust/compile/issue-4163.rs
  84a704ef0e97dedcd0f4d8af88b5baa0  gcc/testsuite/rust/compile/issue-4165.rs
  9bc37769eb10d8305459bb40928ec2f4  gcc/testsuite/rust/compile/issue-4166.rs
+ 12e12e1a735777c7fad4951288e05438  gcc/testsuite/rust/compile/issue-4167.rs
  610ad666e072f89c564434a0597df717  gcc/testsuite/rust/compile/issue-4168.rs
  bba85eca8c3804e196d2b890587c5419  gcc/testsuite/rust/compile/issue-4188.rs
  6fe7039fbe2f615d3d3401d6d88ab506  gcc/testsuite/rust/compile/issue-4212.rs
*************** beb150200d09ac1befce9e72c3e91953  gcc/te
*** 130640,130646 ****
  ef28cba4ab6fb8e74465eb070b887387  gcc/testsuite/rust/compile/issue-867.rs
  a84db31db1ee4fdf339e745cda91d4e3  gcc/testsuite/rust/compile/issue-925.rs
  a9f1fae1fccdf4c532a7aa0372993dd2  gcc/testsuite/rust/compile/issue_4402_foo.rs
! 1b6b24150133d5d289bc3d802d3ff5a0  gcc/testsuite/rust/compile/iterators1.rs
  5a347e59d47b125a2cd33d06e8663f67  gcc/testsuite/rust/compile/lang-impl.rs
  b13a9b4fdde57deff61e694ae3c96e53  gcc/testsuite/rust/compile/lang_feature_gate.rs
  4f3427d14c7a910ca47c17d9c09dbbb9  gcc/testsuite/rust/compile/let_alt.rs
--- 130782,130788 ----
  ef28cba4ab6fb8e74465eb070b887387  gcc/testsuite/rust/compile/issue-867.rs
  a84db31db1ee4fdf339e745cda91d4e3  gcc/testsuite/rust/compile/issue-925.rs
  a9f1fae1fccdf4c532a7aa0372993dd2  gcc/testsuite/rust/compile/issue_4402_foo.rs
! 8128baae1ca44f7d332f2fd81123b04a  gcc/testsuite/rust/compile/iterators1.rs
  5a347e59d47b125a2cd33d06e8663f67  gcc/testsuite/rust/compile/lang-impl.rs
  b13a9b4fdde57deff61e694ae3c96e53  gcc/testsuite/rust/compile/lang_feature_gate.rs
  4f3427d14c7a910ca47c17d9c09dbbb9  gcc/testsuite/rust/compile/let_alt.rs
*************** b23f62fc9d1eb805631bc50ee1e59f27  gcc/te
*** 130819,130824 ****
--- 130961,130967 ----
  e05003672155738b42ff0078b90b057c  gcc/testsuite/rust/compile/missing_closing_paren.rs
  b156f9fdfb8912df64086e4f8eb959dd  gcc/testsuite/rust/compile/missing_constructor_fields.rs
  9b6e3f6b3dd4d34b65d0488caa8b8def  gcc/testsuite/rust/compile/missing_return1.rs
+ 337e1df3e5e3bd1d3dec508b4c0e9f19  gcc/testsuite/rust/compile/missing_staged_api.rs
  69ce5ca8d9cd89167d372f1e02f637fa  gcc/testsuite/rust/compile/mod_missing_middle.rs
  8be74e65315656ba49991eeddb4db9df  gcc/testsuite/rust/compile/mod_missing_middle/missing_middle/both_path.rs
  c77634f91d8ff73375a4fd3937c763c7  gcc/testsuite/rust/compile/mod_missing_middle/missing_middle/explicit.not.rs
*************** c72552190a0a381dbcb7bab442fa77be  gcc/te
*** 130938,130944 ****
  748c0d25ebc8672a5304e34e8e9b574c  gcc/testsuite/rust/compile/rust-const-blog-issue.rs
  20623a5ba18e604ddf1be1ed636b6b15  gcc/testsuite/rust/compile/rust_abi.rs
  52d16f29dbd1ca8921fdc064b00537f4  gcc/testsuite/rust/compile/rustc_attr1.rs
! e08b87d9d85bd8cf258b156d8c8074fd  gcc/testsuite/rust/compile/rustc_const_stable.rs
  4b559d8796e89809f073fb08909aee03  gcc/testsuite/rust/compile/rustc_const_unstable.rs
  a66752fffa3bdfeb59eada30f50ce317  gcc/testsuite/rust/compile/same_field_name.rs
  29393f315ab90f0cc70a576074df16c6  gcc/testsuite/rust/compile/self-in-impl.rs
--- 131081,131087 ----
  748c0d25ebc8672a5304e34e8e9b574c  gcc/testsuite/rust/compile/rust-const-blog-issue.rs
  20623a5ba18e604ddf1be1ed636b6b15  gcc/testsuite/rust/compile/rust_abi.rs
  52d16f29dbd1ca8921fdc064b00537f4  gcc/testsuite/rust/compile/rustc_attr1.rs
! bf62b7606c00db6b184c45b231db1408  gcc/testsuite/rust/compile/rustc_const_stable.rs
  4b559d8796e89809f073fb08909aee03  gcc/testsuite/rust/compile/rustc_const_unstable.rs
  a66752fffa3bdfeb59eada30f50ce317  gcc/testsuite/rust/compile/same_field_name.rs
  29393f315ab90f0cc70a576074df16c6  gcc/testsuite/rust/compile/self-in-impl.rs
*************** b50cb749da23fbae22b68db3f6aab2ad  gcc/te
*** 131102,131117 ****
  d6a70b203e21498fa0449bb3e2be4762  gcc/testsuite/rust/compile/torture/intrinsics-2.rs
  08e73f4fc48b464f67bb3181d1e24cf3  gcc/testsuite/rust/compile/torture/intrinsics-3.rs
  97b3db8374f4d7454d3a6edac75ff171  gcc/testsuite/rust/compile/torture/intrinsics-4.rs
! 8d3c92830826480016eaf2ef43aadf6a  gcc/testsuite/rust/compile/torture/intrinsics-5.rs
  10959ef262885359c19cc59bde35de55  gcc/testsuite/rust/compile/torture/intrinsics-6.rs
! 87dc18b0ed0f632386c7be2e202fe7ac  gcc/testsuite/rust/compile/torture/intrinsics-7.rs
  a09fcc3bdcebd39d4ddb707da813da3c  gcc/testsuite/rust/compile/torture/intrinsics-8.rs
  67ccc3aea3129501f7c4c1d49a0e3a90  gcc/testsuite/rust/compile/torture/intrinsics-math.rs
  fb119123cce8147824e5cd5290f22138  gcc/testsuite/rust/compile/torture/isolated_cr_block_comment.rs
  65ee17c65a88536a84b35e5cc7a9c19c  gcc/testsuite/rust/compile/torture/isolated_cr_line_comment.rs
  104ba3c72f184df5679c480613f03aaf  gcc/testsuite/rust/compile/torture/issue-1024.rs
! d6fc17687a9e3feef817701a70faffcf  gcc/testsuite/rust/compile/torture/issue-1075.rs
! d7c0280a63b4a0c1f64f26f103f00e86  gcc/testsuite/rust/compile/torture/issue-1432.rs
  1bb8bb1eabd30d091ede09d5cac455b1  gcc/testsuite/rust/compile/torture/issue-1434.rs
  fc2dcd82a87660b6ebd5632f3bb38df5  gcc/testsuite/rust/compile/torture/issue-1506.rs
  5be36b7e20bf7e0f144c556927b63b5b  gcc/testsuite/rust/compile/torture/issue-1555.rs
--- 131245,131260 ----
  d6a70b203e21498fa0449bb3e2be4762  gcc/testsuite/rust/compile/torture/intrinsics-2.rs
  08e73f4fc48b464f67bb3181d1e24cf3  gcc/testsuite/rust/compile/torture/intrinsics-3.rs
  97b3db8374f4d7454d3a6edac75ff171  gcc/testsuite/rust/compile/torture/intrinsics-4.rs
! 4c5d250f5eeb92bef29aca3506c09fb0  gcc/testsuite/rust/compile/torture/intrinsics-5.rs
  10959ef262885359c19cc59bde35de55  gcc/testsuite/rust/compile/torture/intrinsics-6.rs
! 476de7bb857ec8ba647df72c99a314d9  gcc/testsuite/rust/compile/torture/intrinsics-7.rs
  a09fcc3bdcebd39d4ddb707da813da3c  gcc/testsuite/rust/compile/torture/intrinsics-8.rs
  67ccc3aea3129501f7c4c1d49a0e3a90  gcc/testsuite/rust/compile/torture/intrinsics-math.rs
  fb119123cce8147824e5cd5290f22138  gcc/testsuite/rust/compile/torture/isolated_cr_block_comment.rs
  65ee17c65a88536a84b35e5cc7a9c19c  gcc/testsuite/rust/compile/torture/isolated_cr_line_comment.rs
  104ba3c72f184df5679c480613f03aaf  gcc/testsuite/rust/compile/torture/issue-1024.rs
! 89f1980fd4abe2dc7ade2f3941846bf7  gcc/testsuite/rust/compile/torture/issue-1075.rs
! 0bb18706a2fe872391f197d7da59d86f  gcc/testsuite/rust/compile/torture/issue-1432.rs
  1bb8bb1eabd30d091ede09d5cac455b1  gcc/testsuite/rust/compile/torture/issue-1434.rs
  fc2dcd82a87660b6ebd5632f3bb38df5  gcc/testsuite/rust/compile/torture/issue-1506.rs
  5be36b7e20bf7e0f144c556927b63b5b  gcc/testsuite/rust/compile/torture/issue-1555.rs
*************** d40ce2d48bba8843cd0e93ac661eedd7  gcc/te
*** 131280,131285 ****
--- 131423,131429 ----
  8b304de462bdd3a5334cc718188cbcb1  gcc/testsuite/rust/compile/try-expr1.rs
  4332c6947d7efcf39dae7ca1e49d5594  gcc/testsuite/rust/compile/try-trait.rs
  2d3631938f83e46c9fbd784136ba96db  gcc/testsuite/rust/compile/try_block1.rs
+ e14478d29820a856610dc8243566a832  gcc/testsuite/rust/compile/tuple-index.rs
  b7ca9c8e0c33cf331b28cbd512f6a0ab  gcc/testsuite/rust/compile/tuple1.rs
  acb2c81fa58337382f5c1793465c63b0  gcc/testsuite/rust/compile/tuple_float_index.rs
  b6da4ee91dde918e5b199a8ea04dffed  gcc/testsuite/rust/compile/tuple_index_on_non_tuple.rs
*************** c7800d2a071ca2035e1e11d541d30282  gcc/te
*** 131356,131361 ****
--- 131500,131507 ----
  28335e6adaa7ca29f05ca2cad1ffd1c3  gcc/testsuite/rust/debug/win64-abi.rs
  66f1763e73f2ea3328ba2b4ceaa057d0  gcc/testsuite/rust/execute/black_box.rs
  62ba180d7563201b9ef58cd0f08239e4  gcc/testsuite/rust/execute/bswap.rs
+ 88b00a09a41ef0fed7704188b89d3129  gcc/testsuite/rust/execute/cf-labeled-block.rs
+ a56f460658cfa395fe3344ba68ff230f  gcc/testsuite/rust/execute/const-compound-assignment.rs
  4f364d5e8f1e982f8dd260d4e285ddcb  gcc/testsuite/rust/execute/crate-metavar1.rs
  ee134a130743701047cd96c1fbf6fd01  gcc/testsuite/rust/execute/execute.exp
  5fce9179d59f0126f11a1db088901e50  gcc/testsuite/rust/execute/ident_pat_vs_path_1.rs
*************** df172c49ad820a8bd226fa8ff054fe24  gcc/te
*** 131400,131406 ****
  cf3c2e8a32e22bb5a54cc44916eb077d  gcc/testsuite/rust/execute/torture/const-generics-4.rs
  1f74e4dd53f1d0d458fbb60ad7cf1fd9  gcc/testsuite/rust/execute/torture/const-generics-5.rs
  58c7e820d2c21a7712e30b1af826fecb  gcc/testsuite/rust/execute/torture/const-generics-6.rs
! 34a186516ce33376a20b2d14c036b08e  gcc/testsuite/rust/execute/torture/const-generics-7.rs
  33ad06adb25c05095005ac4533596c40  gcc/testsuite/rust/execute/torture/const_block1.rs
  bb0ddd95fe3f5578010121054958e8a8  gcc/testsuite/rust/execute/torture/const_fold1.rs
  a1b8764cdc045929458a55830e126e25  gcc/testsuite/rust/execute/torture/const_fold2.rs
--- 131546,131552 ----
  cf3c2e8a32e22bb5a54cc44916eb077d  gcc/testsuite/rust/execute/torture/const-generics-4.rs
  1f74e4dd53f1d0d458fbb60ad7cf1fd9  gcc/testsuite/rust/execute/torture/const-generics-5.rs
  58c7e820d2c21a7712e30b1af826fecb  gcc/testsuite/rust/execute/torture/const-generics-6.rs
! 013336c2baba6696a1138b3f5f9dbbdc  gcc/testsuite/rust/execute/torture/const-generics-7.rs
  33ad06adb25c05095005ac4533596c40  gcc/testsuite/rust/execute/torture/const_block1.rs
  bb0ddd95fe3f5578010121054958e8a8  gcc/testsuite/rust/execute/torture/const_fold1.rs
  a1b8764cdc045929458a55830e126e25  gcc/testsuite/rust/execute/torture/const_fold2.rs
*************** cb35f9697071bbbc6f20d8dd5a14c43b  gcc/te
*** 131443,131450 ****
  562bc23ec3b98403ff008cfc00d1460f  gcc/testsuite/rust/execute/torture/exit_error.rs
  26fe45787f889b302963bbbae9071098  gcc/testsuite/rust/execute/torture/extern_mod4.rs
  7fc01aec2c7078efed4d06dfc67fcc26  gcc/testsuite/rust/execute/torture/extern_mod4/modules/mod.rs
! 8a977d4571480fdff071314ac95ea238  gcc/testsuite/rust/execute/torture/for-loop1.rs
! 8488f14d89d66435530e089558a1cd96  gcc/testsuite/rust/execute/torture/for-loop2.rs
  06a0bd431d9927ef09d0cab9ed034492  gcc/testsuite/rust/execute/torture/func1.rs
  fc1beda49a2edb7c8758ea335a47edbf  gcc/testsuite/rust/execute/torture/gat1.rs
  7f8fb008b2c55c947a6d5fa71b0aa884  gcc/testsuite/rust/execute/torture/helloworld1.rs
--- 131589,131596 ----
  562bc23ec3b98403ff008cfc00d1460f  gcc/testsuite/rust/execute/torture/exit_error.rs
  26fe45787f889b302963bbbae9071098  gcc/testsuite/rust/execute/torture/extern_mod4.rs
  7fc01aec2c7078efed4d06dfc67fcc26  gcc/testsuite/rust/execute/torture/extern_mod4/modules/mod.rs
! 0917c3c089d1178005afd035902201b2  gcc/testsuite/rust/execute/torture/for-loop1.rs
! a131ff010712c9b79fbc68f139dc7e20  gcc/testsuite/rust/execute/torture/for-loop2.rs
  06a0bd431d9927ef09d0cab9ed034492  gcc/testsuite/rust/execute/torture/func1.rs
  fc1beda49a2edb7c8758ea335a47edbf  gcc/testsuite/rust/execute/torture/gat1.rs
  7f8fb008b2c55c947a6d5fa71b0aa884  gcc/testsuite/rust/execute/torture/helloworld1.rs
*************** d1bf4d03901b291d3115f4895ffb2fb7  gcc/te
*** 131463,131475 ****
  afb7e67a4d935ed8d1a12c35764227ee  gcc/testsuite/rust/execute/torture/index1.rs
  6111cbbe2a2a24f1275318d0cf00b40b  gcc/testsuite/rust/execute/torture/inline_asm_mov_x_5_ARM.rs
  f109265d65cc9052a6971ac6af0307c5  gcc/testsuite/rust/execute/torture/inline_asm_mov_x_5_x86_64.rs
! 65e7f865d922903b53235979f6512255  gcc/testsuite/rust/execute/torture/issue-1120.rs
! a657bfe1397a0a16bce849f67f1c72b1  gcc/testsuite/rust/execute/torture/issue-1133.rs
  fcf88ba89d2ae050b7b33fc92b3b23da  gcc/testsuite/rust/execute/torture/issue-1198.rs
  676030ac3e34ec8dfb5edd5fddded91a  gcc/testsuite/rust/execute/torture/issue-1231.rs
! 04bfd4cff17033674aef907053ca98b7  gcc/testsuite/rust/execute/torture/issue-1232.rs
  e48fe71ec8f512c3631bc8792b240302  gcc/testsuite/rust/execute/torture/issue-1249.rs
! e0021d5b369a726eb4508a890eeef046  gcc/testsuite/rust/execute/torture/issue-1436.rs
  8bfc5bebac918c937ca06ab24395fe8b  gcc/testsuite/rust/execute/torture/issue-1481.rs
  53132db8058b5ff8a94ee3ef1e8a9df1  gcc/testsuite/rust/execute/torture/issue-1482.rs
  8ced47e2e7816de5ae25f2c026743d47  gcc/testsuite/rust/execute/torture/issue-1496.rs
--- 131609,131621 ----
  afb7e67a4d935ed8d1a12c35764227ee  gcc/testsuite/rust/execute/torture/index1.rs
  6111cbbe2a2a24f1275318d0cf00b40b  gcc/testsuite/rust/execute/torture/inline_asm_mov_x_5_ARM.rs
  f109265d65cc9052a6971ac6af0307c5  gcc/testsuite/rust/execute/torture/inline_asm_mov_x_5_x86_64.rs
! 64d892ae57b85d167d8eb8a8bcc8c17b  gcc/testsuite/rust/execute/torture/issue-1120.rs
! 0385cb1ccd2cd6089da7e034a18a8646  gcc/testsuite/rust/execute/torture/issue-1133.rs
  fcf88ba89d2ae050b7b33fc92b3b23da  gcc/testsuite/rust/execute/torture/issue-1198.rs
  676030ac3e34ec8dfb5edd5fddded91a  gcc/testsuite/rust/execute/torture/issue-1231.rs
! 05ce46f741444f73e9476e79f5999b1a  gcc/testsuite/rust/execute/torture/issue-1232.rs
  e48fe71ec8f512c3631bc8792b240302  gcc/testsuite/rust/execute/torture/issue-1249.rs
! e34e714c66fffc59b187d73507f5cb74  gcc/testsuite/rust/execute/torture/issue-1436.rs
  8bfc5bebac918c937ca06ab24395fe8b  gcc/testsuite/rust/execute/torture/issue-1481.rs
  53132db8058b5ff8a94ee3ef1e8a9df1  gcc/testsuite/rust/execute/torture/issue-1482.rs
  8ced47e2e7816de5ae25f2c026743d47  gcc/testsuite/rust/execute/torture/issue-1496.rs
*************** b76cea2823da2d50b3021e0b1f7cd1d0  gcc/te
*** 131497,131503 ****
  9b817423d0e8776cf2604a0b41b8d820  gcc/testsuite/rust/execute/torture/issue-858.rs
  f43c5706216ee3dc9b89df61bce6422a  gcc/testsuite/rust/execute/torture/issue-976.rs
  0474cd29f4ac38394ad1d8524ccea351  gcc/testsuite/rust/execute/torture/issue-995.rs
! dd32d1597fea1a996435cacac9027674  gcc/testsuite/rust/execute/torture/iter1.rs
  ac590b73bc5cfae237744467959766c4  gcc/testsuite/rust/execute/torture/let-identifierpattern-subpattern.rs
  6969bcb5a486f388eff11f7c9b331cfb  gcc/testsuite/rust/execute/torture/let-pattern-1.rs
  db0a8a09ed0ac8ea04a088b75daac98d  gcc/testsuite/rust/execute/torture/link-name.rs
--- 131643,131649 ----
  9b817423d0e8776cf2604a0b41b8d820  gcc/testsuite/rust/execute/torture/issue-858.rs
  f43c5706216ee3dc9b89df61bce6422a  gcc/testsuite/rust/execute/torture/issue-976.rs
  0474cd29f4ac38394ad1d8524ccea351  gcc/testsuite/rust/execute/torture/issue-995.rs
! 124437c19e55d22cc420254b191c9fd1  gcc/testsuite/rust/execute/torture/iter1.rs
  ac590b73bc5cfae237744467959766c4  gcc/testsuite/rust/execute/torture/let-identifierpattern-subpattern.rs
  6969bcb5a486f388eff11f7c9b331cfb  gcc/testsuite/rust/execute/torture/let-pattern-1.rs
  db0a8a09ed0ac8ea04a088b75daac98d  gcc/testsuite/rust/execute/torture/link-name.rs
*************** fd0b644aeed45743ff4a35dc32fc1732  gcc/te
*** 131595,131604 ****
  b6b0488adbae59f318209017eca9e7ee  gcc/testsuite/rust/execute/torture/ref-pattern1.rs
  bfbda2cfe3a3e19ba6bf108d3aa58c5f  gcc/testsuite/rust/execute/torture/ref-pattern2.rs
  e9f7608080c979233c093620e4e5c0e6  gcc/testsuite/rust/execute/torture/sip-hasher.rs
! 3a504675697269e3df59124fe6f134eb  gcc/testsuite/rust/execute/torture/slice-magic.rs
! a88cc8f930d864487dfc5483978cad0f  gcc/testsuite/rust/execute/torture/slice-magic2.rs
  27a69f2206e9d35294f982d42e12d17d  gcc/testsuite/rust/execute/torture/slice1.rs
! 2e2d98c5883f2de8d49f45a7f049e03c  gcc/testsuite/rust/execute/torture/str-layout1.rs
  b581a3a9ce49920ae4e05d37faadf9fc  gcc/testsuite/rust/execute/torture/str-zero.rs
  5d52d7c98cf0d51336c808f86d878915  gcc/testsuite/rust/execute/torture/struct-pattern-match.rs
  21b3497905d7a4a57f6ad63dccbfe5d4  gcc/testsuite/rust/execute/torture/struct_pattern1.rs
--- 131741,131750 ----
  b6b0488adbae59f318209017eca9e7ee  gcc/testsuite/rust/execute/torture/ref-pattern1.rs
  bfbda2cfe3a3e19ba6bf108d3aa58c5f  gcc/testsuite/rust/execute/torture/ref-pattern2.rs
  e9f7608080c979233c093620e4e5c0e6  gcc/testsuite/rust/execute/torture/sip-hasher.rs
! 65b85fcd82ae5a7fba79178ef45d7733  gcc/testsuite/rust/execute/torture/slice-magic.rs
! 8475dd2b2026cb0e1c82e73a4ccaa12d  gcc/testsuite/rust/execute/torture/slice-magic2.rs
  27a69f2206e9d35294f982d42e12d17d  gcc/testsuite/rust/execute/torture/slice1.rs
! 64c03dcfe8159c63ce218a7287ba0c7f  gcc/testsuite/rust/execute/torture/str-layout1.rs
  b581a3a9ce49920ae4e05d37faadf9fc  gcc/testsuite/rust/execute/torture/str-zero.rs
  5d52d7c98cf0d51336c808f86d878915  gcc/testsuite/rust/execute/torture/struct-pattern-match.rs
  21b3497905d7a4a57f6ad63dccbfe5d4  gcc/testsuite/rust/execute/torture/struct_pattern1.rs
*************** c0b991692c06f34bf7f8673802e7b155  gcc/te
*** 131707,131713 ****
  8b251aa9a2fa89337ef04014c5c6b537  gcc/testsuite/selftests/riscv/empty-func.rtl
  759df2498a0496873d40f6e066a84048  gcc/testsuite/selftests/simple-cse.rtl
  54b496abd7df06d1a8671978482ce8c9  gcc/testsuite/selftests/symbol-ref.rtl
! 513d3d48c332f420096cf4860afd5f9c  gcc/testsuite/selftests/x86_64/call-insn.rtl
  5fb2390505ce446a223d21f02b332874  gcc/testsuite/selftests/x86_64/copy-hard-reg-into-frame.rtl
  e42076aeff1c5ac155a88db5b1993d38  gcc/testsuite/selftests/x86_64/times-two.rtl
  195d431640249dac1928ced4d93ecb76  gcc/testsuite/selftests/x86_64/unspec.rtl
--- 131853,131859 ----
  8b251aa9a2fa89337ef04014c5c6b537  gcc/testsuite/selftests/riscv/empty-func.rtl
  759df2498a0496873d40f6e066a84048  gcc/testsuite/selftests/simple-cse.rtl
  54b496abd7df06d1a8671978482ce8c9  gcc/testsuite/selftests/symbol-ref.rtl
! 958fc488dc7e057d01e6cf2ca020719d  gcc/testsuite/selftests/x86_64/call-insn.rtl
  5fb2390505ce446a223d21f02b332874  gcc/testsuite/selftests/x86_64/copy-hard-reg-into-frame.rtl
  e42076aeff1c5ac155a88db5b1993d38  gcc/testsuite/selftests/x86_64/times-two.rtl
  195d431640249dac1928ced4d93ecb76  gcc/testsuite/selftests/x86_64/unspec.rtl
*************** a0c02d542dbd50cb44704b2ffce2739c  gcc/tr
*** 131756,131762 ****
  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
--- 131902,131908 ----
  9e024483d94f1dc1bd27e0830583ba9c  gcc/tree-chrec.cc
  1cf760e3e7aab6f94a5e56897486623d  gcc/tree-chrec.h
  f6230fc0d600174a276b14cbea9f0e37  gcc/tree-complex.cc
! d3ccd3304fc182827fc9b36850d97224  gcc/tree-core.h
  872c20fe2fd8d662c991f9f0b4ddaaef  gcc/tree-data-ref.cc
  8a41e760788789609c052d419c155691  gcc/tree-data-ref.h
  89ef786b9c4639015bae3652c90fa60f  gcc/tree-dfa.cc
*************** fe7cb8d01db48420c7b2914863f3580c  gcc/tr
*** 131798,131807 ****
  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
--- 131944,131953 ----
  d370934f01e7c80fa4e88a80fabbcb95  gcc/tree-phinodes.h
  e955b77da9f61f19437f61d65861e763  gcc/tree-predcom.cc
  47856333edaecc32813dad93ecb96fbe  gcc/tree-pretty-print-markup.h
! 22d3a68b8d4f84b3274676efe2904e09  gcc/tree-pretty-print.cc
  c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tree-pretty-print.h
  fb27a9c19b7277714515baa728b01a3e  gcc/tree-profile.cc
! a5d549b577480d9f00caa8fb844f28dc  gcc/tree-scalar-evolution.cc
  0ac41331ad8cbe754ee005d5ef9aff94  gcc/tree-scalar-evolution.h
  c3b5af33118e23a3f3b653f87a6181d3  gcc/tree-sra.cc
  3c8e89a03a1e2e77a99e5b05bb2976ae  gcc/tree-sra.h
*************** b36c3bd52f9df56746196a0cf2b3ac14  gcc/tr
*** 131817,131827 ****
  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
--- 131963,131973 ----
  121090f76aa83f677c00129216885e7e  gcc/tree-ssa-copy.cc
  df4e4238b30ad2c7205810ae235106fa  gcc/tree-ssa-dce.cc
  34546de59e69d1a125c3fa7747d7f0e2  gcc/tree-ssa-dce.h
! 9b9bca456aa2a0c4caab79604e0245d2  gcc/tree-ssa-dom.cc
  ec31925fe8431d27258939fc79f1f02e  gcc/tree-ssa-dom.h
  ec4fb47e62593f549e393a7e359eab42  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
! d0662b3aa31805c62a8f334db2fe66d8  gcc/tree-ssa-forwprop.cc
  3e4848e9a46f33eab1b56187075818bb  gcc/tree-ssa-ifcombine.cc
  b1c1f1362ac401ede3373f8aa23c02f1  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
*************** b1c1f1362ac401ede3373f8aa23c02f1  gcc/tr
*** 131832,131838 ****
  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
--- 131978,131984 ----
  73db7c26eb3c2afa63524b388a9849fd  gcc/tree-ssa-loop-ivopts.h
  9c2771407c6cb32b3d230d8b3c87a2b8  gcc/tree-ssa-loop-manip.cc
  d6013c7f2ea70d40b0d82c53eacccd45  gcc/tree-ssa-loop-manip.h
! 1f5fd3f718f384d0567fc90206033ead  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
*************** c1590659dad2b41a69adb7654db65644  gcc/tr
*** 131843,131856 ****
  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
--- 131989,132002 ----
  fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  56d25f9d7a5f35aa3637460c00b7eb7e  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
! 9834fb754f6e147d101caed2a57fc659  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
! fd14a1fb7e916f0952a233f9c3dda4a8  gcc/tree-ssa-reassoc.cc
  9a67eb78dfcbdb36f2fbf9b5dd4ff29c  gcc/tree-ssa-reassoc.h
! eb3a66517ec5e91d910c12aead1a961d  gcc/tree-ssa-sccvn.cc
  969557a6ff2537ae4a6d36fde566e436  gcc/tree-ssa-sccvn.h
  2b138ac94e5d6a2e499018e91e58a737  gcc/tree-ssa-scopedtables.cc
  f9f30b312deca96b11a781af60153767  gcc/tree-ssa-scopedtables.h
*************** fa20fc0102b6036d5fa58b953c127e15  gcc/tr
*** 131884,131893 ****
  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
--- 132030,132039 ----
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
  79d28d0d4ca64025fb1a08e9dcbcb5c1  gcc/tree-vect-data-refs.cc
  8d27b93ebf87d8bcc1776ea3342d49c8  gcc/tree-vect-generic.cc
! b23df7453f6fd1a32703ffc42b78d0ec  gcc/tree-vect-loop-manip.cc
  611eb64702d58ba91622f696b7c3df7c  gcc/tree-vect-loop.cc
  a578c6e238754943f93881eb99ffb11b  gcc/tree-vect-patterns.cc
! 4eab6d0f40af2653170a2f7ecf2d6fc1  gcc/tree-vect-slp-patterns.cc
  6b7806488a0b4885fcd026df4e52e7f3  gcc/tree-vect-slp.cc
  151339ea3bf2b1a62eac3aee470b8353  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
*************** fb28fa3e9bc0bb169e4cdfe015405cc6  gcc/wa
*** 131947,131954 ****
  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
--- 132093,132100 ----
  e164527fa2ee6715cf2af8861bacd107  gcc/wide-int-bitmask.h
  1b202f82a19624ac3a25fa1a3f24fc9d  gcc/wide-int-print.cc
  9edad7be0af7a88f4f4b05afeef55e59  gcc/wide-int-print.h
! 74e335f882036807d3fd2512f7ef5770  gcc/wide-int.cc
! ca925427ce3affa856d0cada63a72951  gcc/wide-int.h
  270601d5667d37001f6cceedc54db709  gcc/xcoff.h
  9bbcc6c5fc2143d227f9bb62f34ddaed  gcc/xml-printer.h
  36083181908ce997d5ccb6a13d6a0420  gcc/xml.cc
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 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
--- 132114,132120 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! e0ce1a3bc1e478e3581ba85a982f0940  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  e4fcea241d25fd2866c6026dcccbe5bd  include/ansidecl.h
*************** c80f0d1413922b6c23015d781fb57ade  includ
*** 131993,131999 ****
  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
--- 132139,132145 ----
  1f473e7d70366fbbe39ec745cde53247  include/gcc-interface.h
  449fdb595aee67684de51e4fd976f01b  include/gdb/gdb-index.h
  22135c8657b517d667c6d7e6b9b0de3c  include/getopt.h
! 5115ce6e1a0085669e80ffa0ce1b3ce7  include/gomp-constants.h
  3c78dff688fb8d8a53788a7820f5f1f8  include/hashtab.h
  e10a926ac9146a394aa47259c571ac55  include/hsa.h
  834b1af17bcbcd3944b557484c126a73  include/hsa_ext_amd.h
*************** f26e462c6f89f856041d649e1dfa527e  includ
*** 132028,132034 ****
  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
--- 132174,132180 ----
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  ab9e00e84d092822a6cc241ba44f609b  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 12846730f6f986d5ab6cab5e78498f00  libatomic/ChangeLog
  7774b8df5edff5c25147dd50568e9695  libatomic/Makefile.am
  9d8df11efea7190e7628fd28505b1691  libatomic/Makefile.in
  7ff46642515d8d59f1f5f78b96cf1b91  libatomic/acinclude.m4
*************** c9c90eb06e3ff9f716b28f94d5f5249c  libato
*** 132049,132060 ****
  c557645bc3cf31aaff1f1d89b4b65afc  libatomic/config/linux/arm/store_n.c
  77ac8bcb583aeeae1fd42cef6f6d8845  libatomic/config/loongarch/host-config.h
  c7621cd5bd41c23652a7215f64c8c461  libatomic/config/mingw/host-config.h
! e37429e393fd3c6f401e931c0dda837c  libatomic/config/mingw/lock.c
  77e9d21116285cab134af6a4c59cd87a  libatomic/config/nvptx/host-config.h
  84f115204a8d7d6b30b238d498a4ff89  libatomic/config/nvptx/lock.c
  e189966b494cf8aa73e29f90edd16403  libatomic/config/pa/fenv.c
  6c99b10b45d35297db2743c5b7dee929  libatomic/config/posix/host-config.h
! b18c3bf6adb8a72f54a09233d54f6623  libatomic/config/posix/lock.c
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
  cfe02bc4c8df8cd5b24f265139934ba8  libatomic/config/rtems/host-config.h
  f98b1713370a73aa34e5d369bd5c3a9b  libatomic/config/rtems/lock.c
--- 132195,132206 ----
  c557645bc3cf31aaff1f1d89b4b65afc  libatomic/config/linux/arm/store_n.c
  77ac8bcb583aeeae1fd42cef6f6d8845  libatomic/config/loongarch/host-config.h
  c7621cd5bd41c23652a7215f64c8c461  libatomic/config/mingw/host-config.h
! 7384a7c6dd912849af885281f2f68717  libatomic/config/mingw/lock.c
  77e9d21116285cab134af6a4c59cd87a  libatomic/config/nvptx/host-config.h
  84f115204a8d7d6b30b238d498a4ff89  libatomic/config/nvptx/lock.c
  e189966b494cf8aa73e29f90edd16403  libatomic/config/pa/fenv.c
  6c99b10b45d35297db2743c5b7dee929  libatomic/config/posix/host-config.h
! 821e2f9aac109e2d2da55f0cc0ea58c4  libatomic/config/posix/lock.c
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
  cfe02bc4c8df8cd5b24f265139934ba8  libatomic/config/rtems/host-config.h
  f98b1713370a73aa34e5d369bd5c3a9b  libatomic/config/rtems/lock.c
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 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
--- 132272,132278 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 8045530c972ef2d5dae910e233e6ee0e  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  3666db75f4b55461411d215c60f35beb  libbacktrace/Makefile.am
  f9e4383641cb9203faa7433e51857ce2  libbacktrace/Makefile.in
*************** af9ddebed2e099e1b87b2f3ca1d3c59d  libbac
*** 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
--- 132292,132298 ----
  46ec0883605fc53660c7f51dbe16b83f  libbacktrace/dwarf.c
  883b410489e200aea1b6ecc248562d86  libbacktrace/edtest.c
  1908cd42481d0b1a8a32ff691f4eaeb9  libbacktrace/edtest2.c
! e3f851f0aeeafe99349001633094f7b6  libbacktrace/elf.c
  46ea221f18220bbecd9d7128ca3f6741  libbacktrace/fileline.c
  2101239b2b163b2ca53d5ae30bbfaadf  libbacktrace/filetype.awk
  f074a8be4c44a8cd964cec9d10340d19  libbacktrace/install-debuginfo-for-buildid.sh.in
*************** fc49680d0c6e77e437523ea496a6b8c4  libga6
*** 132816,132822 ****
  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
--- 132962,132968 ----
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  4ad0dcaa2eb0b81efb58d47400b0933d  libga68/standard.a68.in
! 77424d43eca68699be497588a442423b  libgcc/ChangeLog
  9ce0b8c50fec68eb0555ae800e4e457e  libgcc/Makefile.in
  9bebe7e0d6cbbeda9b0b588a1ab371eb  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** b558b0fe1c1f3450c92a793927788906  libgcc
*** 132828,132834 ****
  d1dea04ccca0a3e0d8c326ec80ed9e0b  libgcc/config/aarch64/__arm_za_disable.S
  6c2c3710b9c76f04f3343af5aa6c3492  libgcc/config/aarch64/aarch64-asm.h
  9f312c9f3db89426a0989d3893f9eff5  libgcc/config/aarch64/aarch64-unwind-def.h
! 4f5b35f3742a00078d24b0a176ade3f1  libgcc/config/aarch64/aarch64-unwind.h
  bd96de89003e020f3d23b68bd4e4eb93  libgcc/config/aarch64/cpuinfo.c
  6cc87f33b499891be619a53a7f9be46b  libgcc/config/aarch64/crtfastmath.c
  1d706d7d57d1bc606988c8f2a24906a7  libgcc/config/aarch64/crti.S
--- 132974,132980 ----
  d1dea04ccca0a3e0d8c326ec80ed9e0b  libgcc/config/aarch64/__arm_za_disable.S
  6c2c3710b9c76f04f3343af5aa6c3492  libgcc/config/aarch64/aarch64-asm.h
  9f312c9f3db89426a0989d3893f9eff5  libgcc/config/aarch64/aarch64-unwind-def.h
! d8c6d1674d20f39198bf26d837ca394c  libgcc/config/aarch64/aarch64-unwind.h
  bd96de89003e020f3d23b68bd4e4eb93  libgcc/config/aarch64/cpuinfo.c
  6cc87f33b499891be619a53a7f9be46b  libgcc/config/aarch64/crtfastmath.c
  1d706d7d57d1bc606988c8f2a24906a7  libgcc/config/aarch64/crti.S
*************** e06033e6f9902c9e703e237d511df6c4  libgcc
*** 132861,132867 ****
  072eed9d14afc03c0ae64dc96769d3ed  libgcc/config/alpha/vms-dwarf2.S
  2ef7ca2778a84515d35d96e8d584eb3c  libgcc/config/alpha/vms-dwarf2eh.S
  095b946b888db21d13b5594810f782b2  libgcc/config/alpha/vms-gcc_shell_handler.c
! c8edd80876388bf084f483f261c2f3aa  libgcc/config/alpha/vms-unwind.h
  e0c34d2b9cb54342a0816b5fadac8f07  libgcc/config/arc/asm.h
  a3256f684b1b97b5cd2d9217d5cae23f  libgcc/config/arc/crti.S
  92ccc44cd638cc1bed01e01a560b567e  libgcc/config/arc/crtn.S
--- 133007,133013 ----
  072eed9d14afc03c0ae64dc96769d3ed  libgcc/config/alpha/vms-dwarf2.S
  2ef7ca2778a84515d35d96e8d584eb3c  libgcc/config/alpha/vms-dwarf2eh.S
  095b946b888db21d13b5594810f782b2  libgcc/config/alpha/vms-gcc_shell_handler.c
! d63b738704bfa3a062cfb497accaf0f7  libgcc/config/alpha/vms-unwind.h
  e0c34d2b9cb54342a0816b5fadac8f07  libgcc/config/arc/asm.h
  a3256f684b1b97b5cd2d9217d5cae23f  libgcc/config/arc/crti.S
  92ccc44cd638cc1bed01e01a560b567e  libgcc/config/arc/crtn.S
*************** a0be71b8185b54af931287e1283e0763  libgcc
*** 132885,132892 ****
  8054398de8a5d7ccd66e30e62a1c4b86  libgcc/config/arc/ieee-754/divdf3.S
  d6062428ba70575c316c384dee6c38c7  libgcc/config/arc/ieee-754/divsf3-stdmul.S
  e142d0c003e762ffc288b1673b73e441  libgcc/config/arc/ieee-754/divsf3.S
! f58c0d0c996908ad53fc2e36f97c4f97  libgcc/config/arc/ieee-754/divtab-arc-df.c
! 91592251656c9513b228ac417123a698  libgcc/config/arc/ieee-754/divtab-arc-sf.c
  4a4ef7d17fe6a06a062658c877edbadb  libgcc/config/arc/ieee-754/eqdf2.S
  e1df1bfc5d4b48e99423029e204d346e  libgcc/config/arc/ieee-754/eqsf2.S
  80c7137ba0c393537c36cc4222ddec16  libgcc/config/arc/ieee-754/extendsfdf2.S
--- 133031,133038 ----
  8054398de8a5d7ccd66e30e62a1c4b86  libgcc/config/arc/ieee-754/divdf3.S
  d6062428ba70575c316c384dee6c38c7  libgcc/config/arc/ieee-754/divsf3-stdmul.S
  e142d0c003e762ffc288b1673b73e441  libgcc/config/arc/ieee-754/divsf3.S
! d6935e194e88f127b68e030241a48487  libgcc/config/arc/ieee-754/divtab-arc-df.c
! c3a9312fca39ee7860d55e980bf100f0  libgcc/config/arc/ieee-754/divtab-arc-sf.c
  4a4ef7d17fe6a06a062658c877edbadb  libgcc/config/arc/ieee-754/eqdf2.S
  e1df1bfc5d4b48e99423029e204d346e  libgcc/config/arc/ieee-754/eqsf2.S
  80c7137ba0c393537c36cc4222ddec16  libgcc/config/arc/ieee-754/extendsfdf2.S
*************** feef9044b037e270ce0d6b4fbcc2d97c  libgcc
*** 132924,132930 ****
  3e4f65510d07bdadbd7b67250fb8e3b5  libgcc/config/arm/crtfastmath.c
  e5799142a016db71bbb9922e831ebc87  libgcc/config/arm/crti.S
  2ab60375f0c482ce2319db7a2e19e044  libgcc/config/arm/crtn.S
! 7736aa76565ac0cad5c91ae91e6d8840  libgcc/config/arm/fp16.c
  494419fb4bb582e2253edb45775ae008  libgcc/config/arm/freebsd-atomic.c
  0d08a844e171001e58e9c22f1646b1a3  libgcc/config/arm/ieee754-df.S
  bbd1c56e7029818aaff9ae84f03d7041  libgcc/config/arm/ieee754-sf.S
--- 133070,133076 ----
  3e4f65510d07bdadbd7b67250fb8e3b5  libgcc/config/arm/crtfastmath.c
  e5799142a016db71bbb9922e831ebc87  libgcc/config/arm/crti.S
  2ab60375f0c482ce2319db7a2e19e044  libgcc/config/arm/crtn.S
! df625ba8f1ee58a590256f285c030ee3  libgcc/config/arm/fp16.c
  494419fb4bb582e2253edb45775ae008  libgcc/config/arm/freebsd-atomic.c
  0d08a844e171001e58e9c22f1646b1a3  libgcc/config/arm/ieee754-df.S
  bbd1c56e7029818aaff9ae84f03d7041  libgcc/config/arm/ieee754-sf.S
*************** d1bc698652ed847a9a315e51f8dfecc1  libgcc
*** 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
--- 133109,133115 ----
  f55306289bae5967429b6d421c1be6dd  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  c7a08febc167bf9a84c28593ca627617  libgcc/config/avr/lib2funcs.c
! 74b2d5b16733a9f1553eeef4cbe5fc24  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
*** 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
--- 133122,133129 ----
  021ea561bcc2bc07286c89e312af685b  libgcc/config/avr/libf7/libf7-common.mk
  92d858f8a00be9163a745497796e81c2  libgcc/config/avr/libf7/libf7-const.def
  b73226e862ca01a6b2bdefee583d73ab  libgcc/config/avr/libf7/libf7-constdef.h
! 78c61f6dc6ced062722d460aee5f935c  libgcc/config/avr/libf7/libf7.c
! 3e4fb67c778390ccd964ce9b3b53ed69  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
*************** f69b446f168701e4fad37a3fa7bf7a2a  libgcc
*** 133493,133499 ****
  5ab1b66b65354d2a934f6eccae7eaf58  libgcc/config/mips/lib2funcs.c
  d5968c1ac13feabd05492fee9d1ade65  libgcc/config/mips/libgcc-mips.ver
  e81b4804584afad01efa57f0d57d5f4c  libgcc/config/mips/libgcc-mips16.ver
! 30bdfd066f6bd5a9cc025b8e5ad2f612  libgcc/config/mips/linux-unwind.h
  e2801ae63a08d759b368fb1d290be58b  libgcc/config/mips/mips16.S
  e2d2aa7b392fab39406a42d15869e073  libgcc/config/mips/sfp-machine.h
  5b43c15f4e003338742d215bcfdf5029  libgcc/config/mips/t-crtstuff
--- 133639,133645 ----
  5ab1b66b65354d2a934f6eccae7eaf58  libgcc/config/mips/lib2funcs.c
  d5968c1ac13feabd05492fee9d1ade65  libgcc/config/mips/libgcc-mips.ver
  e81b4804584afad01efa57f0d57d5f4c  libgcc/config/mips/libgcc-mips16.ver
! 2fb3594c379cae4db46f4cb4b2197df3  libgcc/config/mips/linux-unwind.h
  e2801ae63a08d759b368fb1d290be58b  libgcc/config/mips/mips16.S
  e2d2aa7b392fab39406a42d15869e073  libgcc/config/mips/sfp-machine.h
  5b43c15f4e003338742d215bcfdf5029  libgcc/config/mips/t-crtstuff
*************** f4d300261fd7993e62ad80eba2e3fa71  libgcc
*** 133533,133539 ****
  fdbc672bb404d1a2365337bcd9b09c5f  libgcc/config/msp430/srli.S
  a95d71966594f0dcba78e9e99fd25e5a  libgcc/config/msp430/t-msp430
  4d8afadd3f7833f974e1cff8b44405ba  libgcc/config/nds32/crtzero.S
! 5aa8518c940001167ee657612068dcb9  libgcc/config/nds32/initfini.c
  78cda43e5cbd5a22b8520885d66a3cec  libgcc/config/nds32/isr-library/adj_intr_lvl.inc
  43e1d056b1d5c9e2ceba60d7a42cb3b5  libgcc/config/nds32/isr-library/excp_isr.S
  f650e39053f4dbe81ed3cef9b5414f72  libgcc/config/nds32/isr-library/excp_isr_4b.S
--- 133679,133685 ----
  fdbc672bb404d1a2365337bcd9b09c5f  libgcc/config/msp430/srli.S
  a95d71966594f0dcba78e9e99fd25e5a  libgcc/config/msp430/t-msp430
  4d8afadd3f7833f974e1cff8b44405ba  libgcc/config/nds32/crtzero.S
! ce2d5d419e3e70c1ab56171ffe20b1ae  libgcc/config/nds32/initfini.c
  78cda43e5cbd5a22b8520885d66a3cec  libgcc/config/nds32/isr-library/adj_intr_lvl.inc
  43e1d056b1d5c9e2ceba60d7a42cb3b5  libgcc/config/nds32/isr-library/excp_isr.S
  f650e39053f4dbe81ed3cef9b5414f72  libgcc/config/nds32/isr-library/excp_isr_4b.S
*************** be06796451e065308a2234c626d3e0fa  libgcc
*** 133784,133790 ****
  330918a0fddcc567a296aa55bf00bb0a  libgcc/config/nds32/lib1asmsrc-newlib.S
  79388641c3a2bdb24ab2c73b8c9957be  libgcc/config/nds32/lib2csrc-mculib/_clzdi2.c
  e14c48dea2dc84b60b3cc0bcedc53daf  libgcc/config/nds32/lib2csrc-mculib/_clzsi2.c
! 9b84ef6eecb7a85cbe0a9bd607bd1141  libgcc/config/nds32/linux-atomic.c
  341f225b4a2102958dd3a39d0b67f8a8  libgcc/config/nds32/linux-unwind.h
  18cf9adf64a217a86d8b90653bd1fc4b  libgcc/config/nds32/sfp-machine.h
  556ccd8d77577ed2df7f4ca775bffd73  libgcc/config/nds32/t-nds32
--- 133930,133936 ----
  330918a0fddcc567a296aa55bf00bb0a  libgcc/config/nds32/lib1asmsrc-newlib.S
  79388641c3a2bdb24ab2c73b8c9957be  libgcc/config/nds32/lib2csrc-mculib/_clzdi2.c
  e14c48dea2dc84b60b3cc0bcedc53daf  libgcc/config/nds32/lib2csrc-mculib/_clzsi2.c
! a30584f75d3fad89327bff9ce0f34066  libgcc/config/nds32/linux-atomic.c
  341f225b4a2102958dd3a39d0b67f8a8  libgcc/config/nds32/linux-unwind.h
  18cf9adf64a217a86d8b90653bd1fc4b  libgcc/config/nds32/sfp-machine.h
  556ccd8d77577ed2df7f4ca775bffd73  libgcc/config/nds32/t-nds32
*************** fd43a3db98b5fd6ab0330cfa2f0916e8  libgcc
*** 133795,133801 ****
  d554f3fc7ee3cecc697c448b8c5f61bb  libgcc/config/no-sfp-machine.h
  ec92cffa46d4d29b40309d537f263c3d  libgcc/config/no-unwind.h
  e6fcdf113f3a6ab299a7a7fb0b0297f8  libgcc/config/nvptx/alloca.c
! 6dd2355da200c25011a5ced915b9c6d8  libgcc/config/nvptx/atomic.c
  dde6b5d6d8c16bb314241baedca1cd80  libgcc/config/nvptx/crt0.c
  92a52b9671a3008066e7b560a035b31e  libgcc/config/nvptx/gbl-ctors.c
  e100483ea136af9350c3142d3af557b0  libgcc/config/nvptx/mgomp.c
--- 133941,133947 ----
  d554f3fc7ee3cecc697c448b8c5f61bb  libgcc/config/no-sfp-machine.h
  ec92cffa46d4d29b40309d537f263c3d  libgcc/config/no-unwind.h
  e6fcdf113f3a6ab299a7a7fb0b0297f8  libgcc/config/nvptx/alloca.c
! 8efee4a6478d5c5a2336505d518777fb  libgcc/config/nvptx/atomic.c
  dde6b5d6d8c16bb314241baedca1cd80  libgcc/config/nvptx/crt0.c
  92a52b9671a3008066e7b560a035b31e  libgcc/config/nvptx/gbl-ctors.c
  e100483ea136af9350c3142d3af557b0  libgcc/config/nvptx/mgomp.c
*************** f274e1b54fc3bba9a902b6b0af5b9756  libgcc
*** 133813,133819 ****
  14e7d9ffefa5bee28e71d83e08d27f39  libgcc/config/pa/hpux-unwind.h
  7a1f592d3a6ac475266f16c9d21c58b6  libgcc/config/pa/lib2funcs.S
  c10c7c3a1cef72d718114f4e0722b19c  libgcc/config/pa/libgcc-hpux.ver
! 2abf2516b24fec1f4162ee3f6ea7c490  libgcc/config/pa/linux-atomic.c
  67457d355ef432c004aa26222e511eab  libgcc/config/pa/linux-unwind.h
  508ba32ca716d1f12ae4b339c1877b11  libgcc/config/pa/milli64.S
  8892e90bcf735bda9c336a7843d6a581  libgcc/config/pa/pa64-hpux-lib.h
--- 133959,133965 ----
  14e7d9ffefa5bee28e71d83e08d27f39  libgcc/config/pa/hpux-unwind.h
  7a1f592d3a6ac475266f16c9d21c58b6  libgcc/config/pa/lib2funcs.S
  c10c7c3a1cef72d718114f4e0722b19c  libgcc/config/pa/libgcc-hpux.ver
! 7175fa887cf27acd6acb70b79e582fb6  libgcc/config/pa/linux-atomic.c
  67457d355ef432c004aa26222e511eab  libgcc/config/pa/linux-unwind.h
  508ba32ca716d1f12ae4b339c1877b11  libgcc/config/pa/milli64.S
  8892e90bcf735bda9c336a7843d6a581  libgcc/config/pa/pa64-hpux-lib.h
*************** c10c7c3a1cef72d718114f4e0722b19c  libgcc
*** 133821,133827 ****
  da60fe0318ed51a76e43cc72abfe9863  libgcc/config/pa/sfp-exceptions.c
  e5c96df365922d7b7addc10153d91325  libgcc/config/pa/sfp-machine.h
  662e04d3f9fb20bc9dce2bdd0ad68a67  libgcc/config/pa/stublib.c
! d48335775a99b895281f8fd9c5ffc8a2  libgcc/config/pa/sync-libfuncs.c
  be1d29d3044d55ee3e60d3e74a9e98fe  libgcc/config/pa/t-dimode
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
--- 133967,133973 ----
  da60fe0318ed51a76e43cc72abfe9863  libgcc/config/pa/sfp-exceptions.c
  e5c96df365922d7b7addc10153d91325  libgcc/config/pa/sfp-machine.h
  662e04d3f9fb20bc9dce2bdd0ad68a67  libgcc/config/pa/stublib.c
! 954ffdc159b7258f80b98c646c05d184  libgcc/config/pa/sync-libfuncs.c
  be1d29d3044d55ee3e60d3e74a9e98fe  libgcc/config/pa/t-dimode
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
*************** c150e28c734710584eba8e77d2ff5105  libgcc
*** 134024,134030 ****
  2d73696e709dc45882770d472b3c5e7a  libgcc/config/s390/t-softfp
  26d353eea9229af01124cc46b2e0cebd  libgcc/config/s390/t-stack-s390
  a5218871642ae69c55b0e826c41f3798  libgcc/config/s390/t-tpf
! 4c1933aa0bbf17fd9229ac9308b991c3  libgcc/config/s390/tpf-unwind.h
  2e3aae3366b3f415abf3329840392139  libgcc/config/sh/crt.h
  226dc5b6e5113a4d18dc793631be729a  libgcc/config/sh/crt1.S
  6b2d8e84c3d037e87d55b64f49552091  libgcc/config/sh/crti.S
--- 134170,134176 ----
  2d73696e709dc45882770d472b3c5e7a  libgcc/config/s390/t-softfp
  26d353eea9229af01124cc46b2e0cebd  libgcc/config/s390/t-stack-s390
  a5218871642ae69c55b0e826c41f3798  libgcc/config/s390/t-tpf
! 81724f43af721d2a21fd3dc9f9b13c34  libgcc/config/s390/tpf-unwind.h
  2e3aae3366b3f415abf3329840392139  libgcc/config/sh/crt.h
  226dc5b6e5113a4d18dc793631be729a  libgcc/config/sh/crt1.S
  6b2d8e84c3d037e87d55b64f49552091  libgcc/config/sh/crti.S
*************** b7bdc64c03d62f87f61d3d8a61a75d2d  libgcc
*** 134392,134407 ****
  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
--- 134538,134553 ----
  227525d7193394128a83ce15e7642842  libgcc/vtv_start.c
  23ad2a8d256ba5dca28382d64a20e8f2  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! 6238409211ab7c161e8cf7dfbd735542  libgcobol/ChangeLog
  bec1e79fc8ada70ed4ac3dc61a33d576  libgcobol/LICENSE
! 8b9a5263fc79d367bdafa609a2ac1363  libgcobol/Makefile.am
! d97f1f2b9efb3a8fa8c9db9a04ea78db  libgcobol/Makefile.in
  b0657c8d818882b87c44a17db46300df  libgcobol/README
  a69c3f28d1be90eb0b0287fa450c3684  libgcobol/acinclude.m4
  916ce15e68376e661a41f183252a74ec  libgcobol/aclocal.m4
  1087a9f3e738d3decac9f6b01d71bc9b  libgcobol/charmaps.cc
  0cb43a94ed27462e331ab6c781721373  libgcobol/charmaps.h
! 94c48aaa30cd3785160dfbdf56b68d0a  libgcobol/common-defs.h
  fba8f609927b913d1ca3d30a27d0febc  libgcobol/compat/README.md
  69fc231dbe0ada7d183b3b115faee461  libgcobol/compat/gnu/cpy/cblproto.cpy
  cd939f69cddc5b160139ea6907d79ef4  libgcobol/compat/gnu/cpy/cbltypes.cpy
*************** a5821ed24abf64b452f15f29da418d17  libgco
*** 134443,134453 ****
  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
--- 134589,134599 ----
  52ddae301eb6ab2f0f4944d7f404ad54  libgcobol/gmath.cc
  484b264b1c8d844ef5989f4d7075f520  libgcobol/gmath.h
  c8404659b04d33ae6f2fbfbe89c15080  libgcobol/inspect.cc
! bc1b52a5390d523e26592951a76f5eb6  libgcobol/intrinsic.cc
  16dfd5dc1d9f83d11546c8d442151225  libgcobol/io.cc
  fbd32f035f7b4e73896b3d489e50e747  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! ff145bf44a3bf9d030f0cacc67c937e3  libgcobol/libgcobol.cc
  b484db78f4117c923c0753a07ea73ea0  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  88c1134ff3ee63c326541ce3f35f6699  libgcobol/m4/autoconf.m4
*************** c04e4e4d264af0c1d4e39e88a93d6258  libgfo
*** 135557,135569 ****
  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
--- 135703,135715 ----
  ac9900506f66729b67b81e0404c39eb1  libgfortran/runtime/select_inc.c
  fdc5bc5ac9f0f6c3348f4f076be6db95  libgfortran/runtime/stop.c
  48bdb4b17463d0fcaca2653d6e84ddaf  libgfortran/runtime/string.c
! 80230333955432c4b9d89febc7f88d8c  libgm2/ChangeLog
  81dadb03add7a7278a98cd845177e76a  libgm2/Makefile.am
  f26132364738756eeee0acf44fb5aadf  libgm2/Makefile.in
  5655398e9c1e3027c587898dc4fce566  libgm2/acinclude.m4
  d4629d8a3f44bc8f1060e37d381418f6  libgm2/aclocal.m4
  ec51f8ac3552cbacd95bf08e21a6568a  libgm2/config.h.in
! 1c194c4a1b723e9f6f09954507f51382  libgm2/configure
  4bed77912b0aeaafa4693cfab829153b  libgm2/configure.ac
  b52a0b00feee9e93f7dc34a66027a39f  libgm2/configure.host
  2a25928a1abd3989edcf11c8def19d00  libgm2/libm2cor/KeyBoardLEDs.cc
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 141094,141100 ****
  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
--- 141240,141246 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! dbe81cb89e3ace7a158b497b80122016  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
  3d8bbdea66244a10e715c52717f8a88a  libgomp/Makefile.in
*************** c5f2f89f7f9ed2cb6bb0f26a7bb9d0e3  libgom
*** 141142,141151 ****
  c447ed13e1d693f4b983b83ca2478aa8  libgomp/config/gcn/icv-device.c
  0f8633e5b152067d8fe084c15c3db164  libgomp/config/gcn/libgomp-gcn.h
  7c0f64012d1e638b1eff01cd172a0a6a  libgomp/config/gcn/oacc-target.c
! 49142ded1b362969ae3dbe8b1b0a3f3a  libgomp/config/gcn/simple-bar.h
  c4edbd7c2c1205e40ebb4fe0f1270559  libgomp/config/gcn/target.c
  55d3b1a161a020a1c6c18b3e41dd9420  libgomp/config/gcn/task.c
! e1e7918140eaa4b2fe1d078ca85b2323  libgomp/config/gcn/team.c
  c0f4bc26ad28bb0712bebfcae4c6a978  libgomp/config/gcn/teams.c
  de27fe416c22021c880c3ef4d002aa91  libgomp/config/gcn/time.c
  7bff56f23fd667518b0ce11825f3a66b  libgomp/config/hpux/plugin-suffix.h
--- 141288,141297 ----
  c447ed13e1d693f4b983b83ca2478aa8  libgomp/config/gcn/icv-device.c
  0f8633e5b152067d8fe084c15c3db164  libgomp/config/gcn/libgomp-gcn.h
  7c0f64012d1e638b1eff01cd172a0a6a  libgomp/config/gcn/oacc-target.c
! 7f08dd456ca307b6bb876ef0ceaa3df8  libgomp/config/gcn/simple-bar.h
  c4edbd7c2c1205e40ebb4fe0f1270559  libgomp/config/gcn/target.c
  55d3b1a161a020a1c6c18b3e41dd9420  libgomp/config/gcn/task.c
! 30c03d86dd2194693112dd251a92017b  libgomp/config/gcn/team.c
  c0f4bc26ad28bb0712bebfcae4c6a978  libgomp/config/gcn/teams.c
  de27fe416c22021c880c3ef4d002aa91  libgomp/config/gcn/time.c
  7bff56f23fd667518b0ce11825f3a66b  libgomp/config/hpux/plugin-suffix.h
*************** ed634980a8308c651a6d3ccc9f9dcbcb  libgom
*** 141155,141161 ****
  2a9f66d6adadccefb7a7d88d5445f143  libgomp/config/linux/bar.c
  8cd25856009cd00dedcd63b7e6e6d8b1  libgomp/config/linux/bar.h
  164b4f5876809c956e7c82b155da138b  libgomp/config/linux/doacross.h
! 1c6c18045021513ac393389c1823cf11  libgomp/config/linux/futex.h
  00d7403272d54f16bd4af691feec2174  libgomp/config/linux/ia64/futex.h
  01907f0ef0bcb67f71b78e4ef0592890  libgomp/config/linux/lock.c
  e7c5c296b51e59e33374488e93c9c6ab  libgomp/config/linux/mips/futex.h
--- 141301,141307 ----
  2a9f66d6adadccefb7a7d88d5445f143  libgomp/config/linux/bar.c
  8cd25856009cd00dedcd63b7e6e6d8b1  libgomp/config/linux/bar.h
  164b4f5876809c956e7c82b155da138b  libgomp/config/linux/doacross.h
! 4e6ab154ff70b055045775f36a1d8a82  libgomp/config/linux/futex.h
  00d7403272d54f16bd4af691feec2174  libgomp/config/linux/ia64/futex.h
  01907f0ef0bcb67f71b78e4ef0592890  libgomp/config/linux/lock.c
  e7c5c296b51e59e33374488e93c9c6ab  libgomp/config/linux/mips/futex.h
*************** fa13c699b8d4b45d835b66dfc07ef197  libgom
*** 141181,141194 ****
  79837f1bb85e98cd8a86efcae73be3c2  libgomp/config/nvptx/affinity-fmt.c
  52fcf2d702ad06c1a3a7c0921a2567ab  libgomp/config/nvptx/allocator.c
  6bb7711f9ae2bc93662a9c5ece06f7ee  libgomp/config/nvptx/atomic.c
! 2bf6bde834465d5e7a512e10f4813a68  libgomp/config/nvptx/bar.c
! 933c1d66ec951ab42fb94b176e11eb1f  libgomp/config/nvptx/bar.h
  df59717b3bd8944894ab4397e77454f7  libgomp/config/nvptx/doacross.h
  dca18fe95a4086d6ff5853b4220d62db  libgomp/config/nvptx/error.c
  35b926973906eb1cf3beb0fa77d3c3d4  libgomp/config/nvptx/icv-device.c
  f0499683d858cdb2fa18624722532be0  libgomp/config/nvptx/libgomp-nvptx.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-parallel.c
! 41c1178af48e3de7a92d28dabd1b4cd1  libgomp/config/nvptx/simple-bar.h
  d4ef411ea34a5e21bbc28b10c1f3b9cf  libgomp/config/nvptx/target.c
  1ccc40324f0cdb57674db555b003e81d  libgomp/config/nvptx/task.c
  9642f91b86f61638bcd7b93f1efa4c1c  libgomp/config/nvptx/team.c
--- 141327,141340 ----
  79837f1bb85e98cd8a86efcae73be3c2  libgomp/config/nvptx/affinity-fmt.c
  52fcf2d702ad06c1a3a7c0921a2567ab  libgomp/config/nvptx/allocator.c
  6bb7711f9ae2bc93662a9c5ece06f7ee  libgomp/config/nvptx/atomic.c
! d50200c4a7b88fc3fe0b27bd60040dc4  libgomp/config/nvptx/bar.c
! 0f6ce310d9c3f02d080592923013e841  libgomp/config/nvptx/bar.h
  df59717b3bd8944894ab4397e77454f7  libgomp/config/nvptx/doacross.h
  dca18fe95a4086d6ff5853b4220d62db  libgomp/config/nvptx/error.c
  35b926973906eb1cf3beb0fa77d3c3d4  libgomp/config/nvptx/icv-device.c
  f0499683d858cdb2fa18624722532be0  libgomp/config/nvptx/libgomp-nvptx.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-parallel.c
! ca14627edee8edaa51ae0d2606f17be4  libgomp/config/nvptx/simple-bar.h
  d4ef411ea34a5e21bbc28b10c1f3b9cf  libgomp/config/nvptx/target.c
  1ccc40324f0cdb57674db555b003e81d  libgomp/config/nvptx/task.c
  9642f91b86f61638bcd7b93f1efa4c1c  libgomp/config/nvptx/team.c
*************** e84e55894856b53abe34b30f6148b070  libgom
*** 141206,141214 ****
  d84d89c3a35c4372d8ecd2576487d45d  libgomp/config/posix/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/ptrlock.c
  ba4b96b3616e6154baca6f656a513caf  libgomp/config/posix/ptrlock.h
! f72fa64b1e030add9b267fd176ab6b80  libgomp/config/posix/sem.c
! eedf1415f7fb35e90037266169f55700  libgomp/config/posix/sem.h
! ed1fc3763fa750f24e79dfb948cf180d  libgomp/config/posix/simple-bar.h
  b2c777dfb741f586524a19a8cde8e901  libgomp/config/posix/thread-stacksize.h
  df1e895f991a6ee62e836790dba5a8cc  libgomp/config/posix/time.c
  2cdc827e93d10760ca0a6d298d333efd  libgomp/config/rtems/affinity-fmt.c
--- 141352,141360 ----
  d84d89c3a35c4372d8ecd2576487d45d  libgomp/config/posix/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/ptrlock.c
  ba4b96b3616e6154baca6f656a513caf  libgomp/config/posix/ptrlock.h
! ad4ff8e5b44ef857022a477b0ae7de12  libgomp/config/posix/sem.c
! d9e49fd43cffa691f279f4f01249a28b  libgomp/config/posix/sem.h
! 87d76daa0f675b99bdee0c9bd70b5e12  libgomp/config/posix/simple-bar.h
  b2c777dfb741f586524a19a8cde8e901  libgomp/config/posix/thread-stacksize.h
  df1e895f991a6ee62e836790dba5a8cc  libgomp/config/posix/time.c
  2cdc827e93d10760ca0a6d298d333efd  libgomp/config/rtems/affinity-fmt.c
*************** a4cc1480c8ee441a3ccf2c250c7c0cad  libgom
*** 141234,141241 ****
  e40f7f1dbaf7de3643dec21493aed6b5  libgomp/iter.c
  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
--- 141380,141387 ----
  e40f7f1dbaf7de3643dec21493aed6b5  libgomp/iter.c
  6d019b48c2311268a20cabe9f65f73ad  libgomp/iter_ull.c
  e59f9d9c4947a5f7d4bdd011da890930  libgomp/libgomp-plugin.c
! de76d04e58d67cc06f800530fdcc9839  libgomp/libgomp-plugin.h
! a5e03c4cc9129e015eaa866404421cb4  libgomp/libgomp.h
  43269ed7f389c468d89e33445e5d1e0f  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  e8c6da4786f07a9ca1975943c21f836a  libgomp/libgomp.texi
*************** ff283838501e7dccd0306ec2feeb4452  libgom
*** 141246,141256 ****
  80446fe6cd6193819bea8853c8dcc525  libgomp/loop_ull.c
  6688bf57d8344fc3ab514e0ca98629a5  libgomp/oacc-async.c
  7685edcf1f7e7bced0d4ea02b83aa067  libgomp/oacc-cuda.c
! 442c4d69a0cc4eede766c9eead2aac07  libgomp/oacc-host.c
  b5e3ea3391fe580b6b137f4bc8629034  libgomp/oacc-init.c
  051187f12f492968f6d4abb837e9d0c8  libgomp/oacc-int.h
! cc375c43f1e535347ef5267cdbdacdab  libgomp/oacc-mem.c
! 5d21e88e7cbcec0be5ae55d1ca5329b8  libgomp/oacc-parallel.c
  716c4e80712e2cf28bf35e5dc091c6b1  libgomp/oacc-plugin.c
  a09ede7d3d21d275ef33da3aeef727b7  libgomp/oacc-plugin.h
  ccc59a273af5bb87bc4287e838131e91  libgomp/oacc-profiling.c
--- 141392,141402 ----
  80446fe6cd6193819bea8853c8dcc525  libgomp/loop_ull.c
  6688bf57d8344fc3ab514e0ca98629a5  libgomp/oacc-async.c
  7685edcf1f7e7bced0d4ea02b83aa067  libgomp/oacc-cuda.c
! 61adf03be7b2d1afcc210f5648057a45  libgomp/oacc-host.c
  b5e3ea3391fe580b6b137f4bc8629034  libgomp/oacc-init.c
  051187f12f492968f6d4abb837e9d0c8  libgomp/oacc-int.h
! dd36fcbd7fd6cd40560a449ca272d054  libgomp/oacc-mem.c
! 95f728aad5cd1db8eca4190fa88e52f2  libgomp/oacc-parallel.c
  716c4e80712e2cf28bf35e5dc091c6b1  libgomp/oacc-plugin.c
  a09ede7d3d21d275ef33da3aeef727b7  libgomp/oacc-plugin.h
  ccc59a273af5bb87bc4287e838131e91  libgomp/oacc-profiling.c
*************** b5ab0a7e2cd4752de8579e6704a905f9  libgom
*** 141268,141275 ****
  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
--- 141414,141421 ----
  fab10af27c836c7b90303245f3965cb8  libgomp/plugin/configfrag.ac
  64303d9a5e264784832990b27405c4aa  libgomp/plugin/cuda-lib.def
  d024ec56acbc3411cedc7899b8bbdd02  libgomp/plugin/mutex.c
! 17368ed98ff92229ce7af37ab46e0049  libgomp/plugin/plugin-gcn.c
! 8b63f2359031b645d7462a465385b090  libgomp/plugin/plugin-nvptx.c
  575940d2b8e2a941f78af850aac28928  libgomp/priority_queue.c
  c88620bad36f9c420348d0508bd4b346  libgomp/priority_queue.h
  20aaa72861afa50254f90e9a0839d451  libgomp/scope.c
*************** ed195dc04ac3e252f89029dee0bc9c05  libgom
*** 141281,141288 ****
  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
  75558421f6643377456e1afccbec5b19  libgomp/teams.c
--- 141427,141434 ----
  bbb8b404de421c08a4468a7c149897e3  libgomp/splay-tree.h
  1775f6ebbed5a9aef1882e66136d9e2b  libgomp/target-cxa-dso-dtor.c
  30bc692f400225cbdf51ebfdb41b44c5  libgomp/target-indirect.c
! d14fdc9bd8c5a85955e77a27e9543ce0  libgomp/target.c
! 9423c0473a15a8d13b93375561ef5058  libgomp/task.c
  7f9c7ebe470f1e58806b1136258bd786  libgomp/taskloop.c
  abb5e2202aa84d67c967b7dc176fc937  libgomp/team.c
  75558421f6643377456e1afccbec5b19  libgomp/teams.c
*************** ee0115a370a5b6a9e6990b3d15bdd431  libgom
*** 141826,141831 ****
--- 141972,141979 ----
  14ac121f9dbf4675cb527a13f401e0c6  libgomp/testsuite/libgomp.c-c++-common/for-9.c
  38b84120e95c50bcbe995ff760fb2f46  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded-aux.c
  0a53af92f72022a91eded9bc193bc5c0  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded.c
+ 01b4d3feaccb2eb8d3e59343a0390b17  libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-no-tvt-alloc.c
+ 86d990f322b75e889849650e68077731  libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-tvt-alloc.c
  289803ddb56467011cd3c9f15600fb0e  libgomp/testsuite/libgomp.c-c++-common/get-mapped-ptr-1.c
  082e4a8098a26fe0515142872ac3472f  libgomp/testsuite/libgomp.c-c++-common/get-mapped-ptr-2.c
  c09232193f6376e5d0b4ebdc9096118e  libgomp/testsuite/libgomp.c-c++-common/get-mapped-ptr-3.c
*************** b205f9e12d1bd4e2fa5b8ecd4f50db58  libgom
*** 143142,143147 ****
--- 143290,143298 ----
  6859dad56b2334740e8ca2b4290949fe  libgomp/testsuite/libgomp.fortran/target-is-initial-host.f
  27af88403c16b3dceba23e48c356e1be  libgomp/testsuite/libgomp.fortran/target-is-initial-host.f90
  c8674726b7e6d033a64557c340289db9  libgomp/testsuite/libgomp.fortran/target-map-1.f90
+ 211d6bed9ac38c97cfe0d664276c45c4  libgomp/testsuite/libgomp.fortran/target-map-iterators-1.f90
+ f131e8714093686071cd3d781117d735  libgomp/testsuite/libgomp.fortran/target-map-iterators-2.f90
+ b4549d5d4907d15e4280fde1dceb2366  libgomp/testsuite/libgomp.fortran/target-map-iterators-3.f90
  3aa0e23d9a616e459cd9b249870a9aac  libgomp/testsuite/libgomp.fortran/target-map-multi-1.f90
  b4624f6aeb10bd6bb3bfe811e141f7f0  libgomp/testsuite/libgomp.fortran/target-map-multi-2.f90
  47737bf33818ec9206276ba22eee1c14  libgomp/testsuite/libgomp.fortran/target-map-multi-3.f90
*************** b07707201a161cc672bc60acd1aec156  libgom
*** 143161,143166 ****
--- 143312,143320 ----
  25f675dca304722a9f04f20b15c3e46b  libgomp/testsuite/libgomp.fortran/target-present-3.f90
  ffc4f536027a66699af0956fc5b0d785  libgomp/testsuite/libgomp.fortran/target-print-1.f90
  b7c20b004458fd9909db3090ddfcd1d8  libgomp/testsuite/libgomp.fortran/target-simd.f90
+ b74a0f91640a29d7f6e593924af8fc19  libgomp/testsuite/libgomp.fortran/target-update-iterators-1.f90
+ e270e7abfef38a797f403f8972048cae  libgomp/testsuite/libgomp.fortran/target-update-iterators-2.f90
+ 1bcd7f852e3eec437a4ddacff14a3a48  libgomp/testsuite/libgomp.fortran/target-update-iterators-3.f90
  1db1fe2cc8dbdf1b311a5f49a4004ed7  libgomp/testsuite/libgomp.fortran/target1.f90
  5ead11a014d23aa66989fb7c241a75a2  libgomp/testsuite/libgomp.fortran/target10.f90
  cd35897c72fe52157d20924875a4168f  libgomp/testsuite/libgomp.fortran/target2.f90
*************** d1c33a8b5e0f3d9a19ffe583f8e72f56  libgru
*** 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
--- 144890,144896 ----
  c21183b1df7f7afb240d765035277db1  libgrust/rustc-lib/version-info
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 5d58a7de326daa8ec98f1bb2f886296a  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  de0b0731d5d06e748df71e896c6078a5  libiberty/Makefile.in
  8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
*************** fe207e3e1c9a646419aca7d44b89eeba  libibe
*** 144765,144771 ****
  044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
  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
--- 144919,144925 ----
  044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
! d7ddca59b1df9a618acbc9d39f4a7083  libiberty/configure
  47e63e11ce9abb0cf59f7362df7256e2  libiberty/configure.ac
  193826e77c2cb5ea7289dc272ec23d5d  libiberty/configure.com
  95bcfe50b43ca9b1fd315a368b837401  libiberty/copying-lib.texi
*************** fe053283d3559af3ec5cac45f8ead009  libibe
*** 144775,144781 ****
  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
--- 144929,144935 ----
  9d8c6d653bfa24871a73c565b6d3e33b  libiberty/cp-demint.c
  03321912732b6b330b17b4be2c45e80e  libiberty/cplus-dem.c
  b1cdc43b57b846afbdbdd5332834afe5  libiberty/crc32.c
! ade269acde34b08514022971d3035df5  libiberty/d-demangle.c
  776e349d1d76b57cc7ff0354e2269e2d  libiberty/dwarfnames.c
  ef663107c94affe2a1bcd8b1832e9b04  libiberty/dyn-string.c
  b2e026fd40cb11fe7ffa3797cd8bc457  libiberty/fdmatch.c
*************** c9bd3841bbde6d8ae680f62523f00ab0  libibe
*** 144876,144882 ****
  d132d24f15fe05fe3614e69d6dbc65aa  libiberty/strtoull.c
  60117c53a2a572ef54375a2ea346cb66  libiberty/strverscmp.c
  4902b0679b0cf3496ad21f5054157337  libiberty/testsuite/Makefile.in
! c6ed870948e340854930b0cfd9c39b99  libiberty/testsuite/d-demangle-expected
  1ad8af63a0147a447ef3a32ba675c92e  libiberty/testsuite/demangle-expected
  92b0376cdafc4ac621b2e3ade5bc48ce  libiberty/testsuite/demangler-fuzzer.c
  0214377f9a5075d5ac5c671e982b65b0  libiberty/testsuite/rust-demangle-expected
--- 145030,145036 ----
  d132d24f15fe05fe3614e69d6dbc65aa  libiberty/strtoull.c
  60117c53a2a572ef54375a2ea346cb66  libiberty/strverscmp.c
  4902b0679b0cf3496ad21f5054157337  libiberty/testsuite/Makefile.in
! 85c9a6ae511546618859935f8311dd70  libiberty/testsuite/d-demangle-expected
  1ad8af63a0147a447ef3a32ba675c92e  libiberty/testsuite/demangle-expected
  92b0376cdafc4ac621b2e3ade5bc48ce  libiberty/testsuite/demangler-fuzzer.c
  0214377f9a5075d5ac5c671e982b65b0  libiberty/testsuite/rust-demangle-expected
*************** e52d95644dc6f186070f349a5903ca72  libibe
*** 144906,144912 ****
  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
--- 145060,145066 ----
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  82039c5e76badca485d7ec27bf160ba4  libiberty/xstrndup.c
  2052196fd1de9a9efa8722031398f544  libiberty/xvasprintf.c
! 5b821b4588002a95dbe8bbf55a2cb562  libitm/ChangeLog
  763fe82c2e5c5ae9547defb28107952a  libitm/Makefile.am
  4fb260790809cc0a691787692a7d2d92  libitm/Makefile.in
  86465895a9d654faded88bc3fa075117  libitm/aatree.cc
*************** c223853eefa19f7cc389ff90637b5867  libitm
*** 144935,144941 ****
  dff3f13df09084621f326308c1d23db2  libitm/config/linux/alpha/futex_bits.h
  db0315f3989e9903561ae187d26d57de  libitm/config/linux/futex.cc
  1d65574f4e99999a1b5347f24d502948  libitm/config/linux/futex.h
! 8fbf5e107f7289a91e9892c937c9b8c7  libitm/config/linux/futex_bits.h
  f7bc91627723ef5744e9a42f074984f8  libitm/config/linux/powerpc/futex_bits.h
  c30c6f3ffa296e06e1d8ed52f3ccd998  libitm/config/linux/rwlock.cc
  f3cd1887850d08f0fd305a0ab46a5f58  libitm/config/linux/rwlock.h
--- 145089,145095 ----
  dff3f13df09084621f326308c1d23db2  libitm/config/linux/alpha/futex_bits.h
  db0315f3989e9903561ae187d26d57de  libitm/config/linux/futex.cc
  1d65574f4e99999a1b5347f24d502948  libitm/config/linux/futex.h
! 9bea4c56ebed86f3bbf8759936fbde84  libitm/config/linux/futex_bits.h
  f7bc91627723ef5744e9a42f074984f8  libitm/config/linux/powerpc/futex_bits.h
  c30c6f3ffa296e06e1d8ed52f3ccd998  libitm/config/linux/rwlock.cc
  f3cd1887850d08f0fd305a0ab46a5f58  libitm/config/linux/rwlock.h
*************** a73fdec6746eaad8ccdc8e8403aac562  libqua
*** 146217,146223 ****
  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
  f59c588c924fa6a8fdf5b39671ce29c5  libsanitizer/LOCAL_PATCHES
--- 146371,146377 ----
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  c302c3214d8b4d35988d1d26698e9cff  libquadmath/update-quadmath.py
! 823b7851e00bf3a6e2fa2578b8d27f0e  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  f59c588c924fa6a8fdf5b39671ce29c5  libsanitizer/LOCAL_PATCHES
*************** b582d1c8ad1dfab45211cbb7c25cf5f6  libsan
*** 146518,146524 ****
  411ecf024e7ca3399783152d0a8b1f14  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
  f024889f96bba8c2b2418054576ee289  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
  3d5549a16542a4aafd42b392ff7417b1  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! ded55bf57e2f75649daa859be5849aea  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
  d3d6fc8b858ce5fb68945027ac64585a  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
  88d3a3793fefd2dbf92ce4ccfdcf2831  libsanitizer/sanitizer_common/sanitizer_posix.cpp
  5afb08036b6622b667986de89bc658de  libsanitizer/sanitizer_common/sanitizer_posix.h
--- 146672,146678 ----
  411ecf024e7ca3399783152d0a8b1f14  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
  f024889f96bba8c2b2418054576ee289  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
  3d5549a16542a4aafd42b392ff7417b1  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! 36d25163a4cb811c80cb1cc1c3667f25  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
  d3d6fc8b858ce5fb68945027ac64585a  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
  88d3a3793fefd2dbf92ce4ccfdcf2831  libsanitizer/sanitizer_common/sanitizer_posix.cpp
  5afb08036b6622b667986de89bc658de  libsanitizer/sanitizer_common/sanitizer_posix.h
*************** a73d560a3ba317c5ad0a7919d87b4b6d  libssp
*** 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
--- 146897,146903 ----
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 8912ebde9f09bd4b3f1243fc1b9009f4  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** a144795bdde388f89eb6222f0c2e4932  libstd
*** 146968,146974 ****
  9c20bbdce19297b3ad0050368bb09028  libstdc++-v3/config/os/vxworks/ctype_base.h
  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
--- 147122,147128 ----
  9c20bbdce19297b3ad0050368bb09028  libstdc++-v3/config/os/vxworks/ctype_base.h
  53df82982400fd3d426f3fd0e0c37b54  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  a3f907fa7f71dc9eb08755c9c438accc  libstdc++-v3/config/os/vxworks/ctype_inline.h
! e8e7da2b87b17dcd2c2faadb8b5cd1ad  libstdc++-v3/config/os/vxworks/os_defines.h
  697b9ccb3dac2fc9458b082cfcd68e0c  libstdc++-v3/configure
  3d4afabfe754da548766585878942937  libstdc++-v3/configure.ac
  ac3c5c4c31f1e2c1f6e793bafb5f3931  libstdc++-v3/configure.host
*************** e901edfc8eef441d1adabd54be25b807  libstd
*** 147426,147432 ****
  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
--- 147580,147586 ----
  f67bb8f4c8c8e2352479c2540b62543f  libstdc++-v3/include/bits/atomic_wait.h
  65e262c95ca2a5021497a947a07b5d48  libstdc++-v3/include/bits/basic_ios.h
  e0d25c8ddeac5ee95a7b60861849f304  libstdc++-v3/include/bits/basic_ios.tcc
! 8b0994f4016528765cbb9391f5501619  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
*************** f053b22f5819f7ed1f6ed5ffe14dc5a3  libstd
*** 147451,147457 ****
  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
--- 147605,147611 ----
  6f26512074a75529ba29871026bd71d5  libstdc++-v3/include/bits/fs_dir.h
  2a39eb878ffd3fb88661d1eeaab059dd  libstdc++-v3/include/bits/fs_fwd.h
  3ef9bc83cb8c079eb15ebfb1a50ab14b  libstdc++-v3/include/bits/fs_ops.h
! 2cd4d841beb5aa54f966e9936ab9ce5f  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
*************** fa05c4e39f6430965ffaf3e65ed36b7b  libstd
*** 147504,147511 ****
  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
--- 147658,147665 ----
  b07bdc6c6cec90e9cf7a74c52af0e9fc  libstdc++-v3/include/bits/print.h
  097b3f6fff8834167e5a5eb29dc9a79c  libstdc++-v3/include/bits/ptr_traits.h
  e9057d3a64660954bf7134e2fb721b51  libstdc++-v3/include/bits/quoted_string.h
! cdfdd1de1600b3dd5eb491f4ee12d6d2  libstdc++-v3/include/bits/random.h
! 1737fd5fcd17707169ff46594a40e93e  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
*************** fc37d0e099f85ad87857bb0e58413e4e  libstd
*** 147569,147575 ****
  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
--- 147723,147729 ----
  cf92a268e86eb61962fdbf10086b2236  libstdc++-v3/include/bits/stl_multiset.h
  092fe17b6b3890e4eb295f8e06093a51  libstdc++-v3/include/bits/stl_numeric.h
  f2b2f381cae0b54e8fdd0103b44ef7f0  libstdc++-v3/include/bits/stl_pair.h
! a47ffb5012874660669e1eb0432eba50  libstdc++-v3/include/bits/stl_queue.h
  c5fe27c6f3b2737405f15913f248aa5f  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  c786caa278e3160f3daa8327ee1002a1  libstdc++-v3/include/bits/stl_relops.h
  3045fc424cd30d4b31742c2fc59e9825  libstdc++-v3/include/bits/stl_set.h
*************** ddd4bdc2fa29f8f2aa3386cead9ebcb2  libstd
*** 147601,147609 ****
  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
  2d3380c821643531466922776bd5d195  libstdc++-v3/include/c/cerrno
--- 147755,147763 ----
  16c6db3f5b1e7b3e37c3febbf4dc4e8c  libstdc++-v3/include/bits/valarray_before.h
  682dec8d9b388681bc1f171ba0c5590e  libstdc++-v3/include/bits/vec_ops.h
  fe1be23d00db0d87529a75faf3afb98a  libstdc++-v3/include/bits/vector.tcc
! 488be47f6786d572d0f3fc34ab14c9df  libstdc++-v3/include/bits/version.def
! 5c6e3493f6bfe98a26c81a7cfab959eb  libstdc++-v3/include/bits/version.h
! 07c6aeb4ce2629a1da2d63d08e65c0f8  libstdc++-v3/include/bits/version.tpl
  d99b1b69e5f87e5a631c8a881d053766  libstdc++-v3/include/c/cassert
  7f5b12607c4d7cbbcf705b672613447b  libstdc++-v3/include/c/cctype
  2d3380c821643531466922776bd5d195  libstdc++-v3/include/c/cerrno
*************** d33f07a2c476cc45af97a78f4020e731  libstd
*** 147714,147720 ****
  86f440721d11a555ec97526d018eabf7  libstdc++-v3/include/debug/multiset.h
  05b2e599111f72660b0453d2350d1feb  libstdc++-v3/include/debug/safe_base.h
  b901bcac560763f13f4c3a3e076f8f7f  libstdc++-v3/include/debug/safe_container.h
! c623155558d82a21f1f31630a36eca85  libstdc++-v3/include/debug/safe_iterator.h
  732aac16ab9dafe9252686005236d0fd  libstdc++-v3/include/debug/safe_iterator.tcc
  3f09c53b38ff607ff8a2eff86c38b166  libstdc++-v3/include/debug/safe_local_iterator.h
  86b787ce43f8d75f10315d2c404c22e4  libstdc++-v3/include/debug/safe_local_iterator.tcc
--- 147868,147874 ----
  86f440721d11a555ec97526d018eabf7  libstdc++-v3/include/debug/multiset.h
  05b2e599111f72660b0453d2350d1feb  libstdc++-v3/include/debug/safe_base.h
  b901bcac560763f13f4c3a3e076f8f7f  libstdc++-v3/include/debug/safe_container.h
! ce286c5643cd4d6d257f6cb10d947f3f  libstdc++-v3/include/debug/safe_iterator.h
  732aac16ab9dafe9252686005236d0fd  libstdc++-v3/include/debug/safe_iterator.tcc
  3f09c53b38ff607ff8a2eff86c38b166  libstdc++-v3/include/debug/safe_local_iterator.h
  86b787ce43f8d75f10315d2c404c22e4  libstdc++-v3/include/debug/safe_local_iterator.tcc
*************** f1cc3238df41adc204bc4f90accc63f3  libstd
*** 148150,148160 ****
  2bd04b33c3c9ee14ba8890fcbceb4328  libstdc++-v3/include/std/.editorconfig
  4598b57244995567c24672d3c0cdb7b3  libstdc++-v3/include/std/algorithm
  f1c08a4c9a736109edfd3c39c60c1669  libstdc++-v3/include/std/any
! 7eec97c02f2ad002721647488d07f1d7  libstdc++-v3/include/std/array
  296bd89909b318bdabaa47ea5703c2b3  libstdc++-v3/include/std/atomic
  43d5b40ea90d5c416339579b4b867b3f  libstdc++-v3/include/std/barrier
  085ec2d298f0be079b303330b81b05d1  libstdc++-v3/include/std/bit
! 2f7194edee13481e4e56129caf4cc769  libstdc++-v3/include/std/bitset
  221c225c0ffb7ac1a214c4da510bfdcc  libstdc++-v3/include/std/charconv
  14b6d91c13fb07b8ce2bdcf49753a183  libstdc++-v3/include/std/chrono
  6250fdc57cc9fcf4c5cc699808a8871f  libstdc++-v3/include/std/codecvt
--- 148304,148314 ----
  2bd04b33c3c9ee14ba8890fcbceb4328  libstdc++-v3/include/std/.editorconfig
  4598b57244995567c24672d3c0cdb7b3  libstdc++-v3/include/std/algorithm
  f1c08a4c9a736109edfd3c39c60c1669  libstdc++-v3/include/std/any
! 9800a1b3fa32f7d061b22c20e4613e56  libstdc++-v3/include/std/array
  296bd89909b318bdabaa47ea5703c2b3  libstdc++-v3/include/std/atomic
  43d5b40ea90d5c416339579b4b867b3f  libstdc++-v3/include/std/barrier
  085ec2d298f0be079b303330b81b05d1  libstdc++-v3/include/std/bit
! 77a61cb2f8d3877899db65086d807411  libstdc++-v3/include/std/bitset
  221c225c0ffb7ac1a214c4da510bfdcc  libstdc++-v3/include/std/charconv
  14b6d91c13fb07b8ce2bdcf49753a183  libstdc++-v3/include/std/chrono
  6250fdc57cc9fcf4c5cc699808a8871f  libstdc++-v3/include/std/codecvt
*************** f1c08a4c9a736109edfd3c39c60c1669  libstd
*** 148164,148206 ****
  687bcecfb8a35508f2a7025bad9ddade  libstdc++-v3/include/std/contracts
  30926456f62b01c212f18e128fa8f543  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
! 7d736af3f0c3ef350561362e2e73c5a6  libstdc++-v3/include/std/deque
  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
! 2f3eb4865a149d33afc45095dfd51d15  libstdc++-v3/include/std/list
  979d756bd9149a01a697b92c921e75a0  libstdc++-v3/include/std/locale
  b9368104d884bddd988db2b9e69ab485  libstdc++-v3/include/std/map
! 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
  8e6ef0834acfc88dd03f5eae2990e41a  libstdc++-v3/include/std/scoped_allocator
--- 148318,148360 ----
  687bcecfb8a35508f2a7025bad9ddade  libstdc++-v3/include/std/contracts
  30926456f62b01c212f18e128fa8f543  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
! a505b55fe4f9b1f72b2b10fb26d67920  libstdc++-v3/include/std/deque
  649d9183a0fa35d50371bb1bce3f70c2  libstdc++-v3/include/std/execution
! c64ab520b4f6639a904aff1b2898fe5d  libstdc++-v3/include/std/expected
  d1dc8325fc8c069a07bab71a935bced3  libstdc++-v3/include/std/filesystem
  5f6d1d543aa97204300a7a76284f8775  libstdc++-v3/include/std/flat_map
  c3b66598ccd8ea2009de9b04433b7dcf  libstdc++-v3/include/std/flat_set
! 5d82d308f832bee1efe5b1082a5bf6c1  libstdc++-v3/include/std/format
! 821d1dff1ce8d861767808c7c5eab838  libstdc++-v3/include/std/forward_list
  10ba06a4268328778f0feab5e3778f91  libstdc++-v3/include/std/fstream
  5907213253b81e40fd9101e5d092fc82  libstdc++-v3/include/std/functional
  6fc93cafeb2ebce1111afdc9b6cf84c5  libstdc++-v3/include/std/future
! 5e968d05fde7935769d507d4f2ff15bf  libstdc++-v3/include/std/generator
! ccba35168fe3cfa34a4699ed47f2bf2e  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
! 139672a57dd1d2720c2ce7b44066b699  libstdc++-v3/include/std/iterator
  44697b5c0f957dae546124db0f196f5f  libstdc++-v3/include/std/latch
  57d926bff59fb37eabbd9524d6a53c6d  libstdc++-v3/include/std/limits
! 7fa0f238b96d8783fbe3c95f0aaa1d8a  libstdc++-v3/include/std/list
  979d756bd9149a01a697b92c921e75a0  libstdc++-v3/include/std/locale
  b9368104d884bddd988db2b9e69ab485  libstdc++-v3/include/std/map
! 562d87908c3c047101842d3fce84f04e  libstdc++-v3/include/std/mdspan
! ac2295459d5771dfc8ae3d83c5e860bc  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
! d7a1522758c56a28f5b8b9e4b3df08fc  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
! c7ec54928f0e973821d473f521fa1686  libstdc++-v3/include/std/ranges
  ee576f89ae347224177df91fe86d905d  libstdc++-v3/include/std/ratio
  a5c4f3df840ba7c3fbc9b7b9d5567ef2  libstdc++-v3/include/std/regex
  8e6ef0834acfc88dd03f5eae2990e41a  libstdc++-v3/include/std/scoped_allocator
*************** ef61193c582c0e8e18efb7f27f37f833  libstd
*** 148209,148225 ****
  d9b30ac9f13a2d342a56ff319aca749e  libstdc++-v3/include/std/shared_mutex
  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
--- 148363,148379 ----
  d9b30ac9f13a2d342a56ff319aca749e  libstdc++-v3/include/std/shared_mutex
  b6acc193775e3cf38850b9d166d46caf  libstdc++-v3/include/std/simd
  b3171714703fcfc5d8fe69ffe22d9cc8  libstdc++-v3/include/std/source_location
! e691e3e1c795a2e57f49580a98fc2058  libstdc++-v3/include/std/span
  34a41e551417785f45d2afdd48b7470b  libstdc++-v3/include/std/spanstream
  622e32cb4f822b51d4c1c6a9a6e5dc31  libstdc++-v3/include/std/sstream
  f5a5ebc7b6133572f8f361cde93ec52f  libstdc++-v3/include/std/stack
! 88bb9b1fd74e5e06e1aeef52917d3612  libstdc++-v3/include/std/stacktrace
  5a01cfa5d80dcfd00d0912607effe056  libstdc++-v3/include/std/stdexcept
  1172bfca0fe1fdb144e0d95b173239d1  libstdc++-v3/include/std/stdfloat
  8000144a02174c1b4e859b4cc4af6301  libstdc++-v3/include/std/stop_token
  9682b018302a44f27a3ea9c265f230b3  libstdc++-v3/include/std/streambuf
! 25a0bd2633fe9e1760b5b45fbe3881b5  libstdc++-v3/include/std/string
! bf574394d5a86a292cf1a1ce1696148d  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
*************** b99e4c8ad37dc8e679d2d265354d549b  libstd
*** 148230,148238 ****
  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
  7874ef3c97c791ad66b9def816d95363  libstdc++-v3/include/tr1/array
  9cef28d9f1825ac84137374a9584f648  libstdc++-v3/include/tr1/bessel_function.tcc
--- 148384,148392 ----
  994522acd96f1b6084469da322d17c19  libstdc++-v3/include/std/unordered_map
  5393bc9d8b494917b25afd3714e8014a  libstdc++-v3/include/std/unordered_set
  3dafc052e829f49f947b61291c35680f  libstdc++-v3/include/std/utility
! 67682e0eb96e54c43eabbf242b9b76ec  libstdc++-v3/include/std/valarray
  f4935a7b92bee0179976443347292535  libstdc++-v3/include/std/variant
! 3bc614c8d83d3085cdb3c15f7bafea3b  libstdc++-v3/include/std/vector
  ecd0f316fc872dc19b88a6c834438315  libstdc++-v3/include/std/version
  7874ef3c97c791ad66b9def816d95363  libstdc++-v3/include/tr1/array
  9cef28d9f1825ac84137374a9584f648  libstdc++-v3/include/tr1/bessel_function.tcc
*************** e4eb506a2a27adfd0d269d0387924cdd  libstd
*** 150577,150583 ****
  2f22cf660d56a6088be8c70134395a71  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc
  c8202c07cd7932a0a98f14eb5040477c  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc
  a6d00972ee0e788e032ae952e44fca7d  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
! cb9791fc25754e1c39b72501940f5e6e  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
  bb4b9861a2dde26a7a342b834513fd4a  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
  7ba708b807d916790ebdbcbcde611376  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc
  4e27120ce1d4b8dc3cf82911329431f9  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc
--- 150731,150737 ----
  2f22cf660d56a6088be8c70134395a71  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc
  c8202c07cd7932a0a98f14eb5040477c  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc
  a6d00972ee0e788e032ae952e44fca7d  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
! 623afb34004665ebd80f2ab163518d0d  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
  bb4b9861a2dde26a7a342b834513fd4a  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
  7ba708b807d916790ebdbcbcde611376  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc
  4e27120ce1d4b8dc3cf82911329431f9  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc
*************** e4eb506a2a27adfd0d269d0387924cdd  libstd
*** 150599,150605 ****
  33a24147176004bc07819cc45564e473  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc
  1825cbf7f875e4b42cf0e28bd9199226  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc
  d29aa2c708ecfd38da918b254dbdfe7c  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
! e316abf8f7c3a7d57083ebd0294d09c7  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
  bc300258b6328a0abc47681d61fc1ba3  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
  d6f66632401c9ccf7d68d3e26113cbce  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc
  e5fd9b1e34af8b99ed0fc146e4f49a8d  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
--- 150753,150759 ----
  33a24147176004bc07819cc45564e473  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc
  1825cbf7f875e4b42cf0e28bd9199226  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc
  d29aa2c708ecfd38da918b254dbdfe7c  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
! 6d545b782e65710becdbbc01365963c5  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
  bc300258b6328a0abc47681d61fc1ba3  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
  d6f66632401c9ccf7d68d3e26113cbce  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc
  e5fd9b1e34af8b99ed0fc146e4f49a8d  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
*************** f4fe62f0a58f0ba577edf42aa68a93c0  libstd
*** 150736,150741 ****
--- 150890,150896 ----
  e9d694ce9cbf296ae80c64a0f63a6b71  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
  e065cee970c0ad4cdb712ed882d62ac0  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
  39289e4894409698144adddce55d7b04  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc
+ 069fcb167f46bf2eae5c01f02c18fa30  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc
  a18fb67b3cd283797c0270b2dffcd9fd  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc
  ef146c20407e00f07ad88fbbeecf7477  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_int.cc
  a6b6a9a6139a9783749ab68361f3c902  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/version.cc
*************** ad0397defcf73ca623e6ea73d7856b5b  libstd
*** 150749,150754 ****
--- 150904,150910 ----
  e1c98367c46d2c47c6395b17beb5f179  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
  ccdfefe02774613802f44fe4ede91740  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
  497ab13fca53699fca2e711f471ef9c4  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
+ 7994cd531a3545e5fdb060334a337ff1  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc
  fecb5f76794dcb7b16941f3d83836e9e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_float.cc
  7c1acacf00d3a9300cac6f06f35ff189  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
  c24c0e6f49ab658726699f1007f123b4  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/123991.cc
*************** b9fb72790cdf7d2b2f362bfd003df316  libstd
*** 150834,150840 ****
  40af1802ce58ab33782d02d7ed05cb80  libstdc++-v3/testsuite/21_strings/basic_string/types/1.cc
  b065796a9fe3ed8767b8f7770026f8e6  libstdc++-v3/testsuite/21_strings/basic_string/types/23767.cc
  cb028bd631a78cb039529958d8828f7b  libstdc++-v3/testsuite/21_strings/basic_string/types/pmr_typedefs.cc
! c3282f46cf0aa8f94d0ccd179b173e9e  libstdc++-v3/testsuite/21_strings/basic_string/version.cc
  d245fc3e9e9dcf35d295bc647505fe2f  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
  b81ceeb2d559b9b0e52978b71c3bbf64  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/empty_neg.cc
  f36ef7385c6285adccb554e3a981e3da  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
--- 150990,150996 ----
  40af1802ce58ab33782d02d7ed05cb80  libstdc++-v3/testsuite/21_strings/basic_string/types/1.cc
  b065796a9fe3ed8767b8f7770026f8e6  libstdc++-v3/testsuite/21_strings/basic_string/types/23767.cc
  cb028bd631a78cb039529958d8828f7b  libstdc++-v3/testsuite/21_strings/basic_string/types/pmr_typedefs.cc
! 8fca4092edc2e3480d37b53be716f865  libstdc++-v3/testsuite/21_strings/basic_string/version.cc
  d245fc3e9e9dcf35d295bc647505fe2f  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
  b81ceeb2d559b9b0e52978b71c3bbf64  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/empty_neg.cc
  f36ef7385c6285adccb554e3a981e3da  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
*************** c45565d8663ffc1627d8fd9c809d4dc4  libstd
*** 151702,151708 ****
  245418fbda98ed3f0dd479289fe6da83  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc
  7ebceb884e905ffe550db30ead27de91  libstdc++-v3/testsuite/23_containers/array/tuple_interface/constexpr_get.cc
  aab23a059d97e93b80bf23883af2e3ad  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get.cc
! 65ddc6ff38073e6602e4d49b1aca9b0a  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
  0e50670d6b16f952322f533d32aac00e  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
  779dd84805e0fb5db0a5788b58041607  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
  4aba86ec7c82d37280332a28a304eb5b  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
--- 151858,151864 ----
  245418fbda98ed3f0dd479289fe6da83  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc
  7ebceb884e905ffe550db30ead27de91  libstdc++-v3/testsuite/23_containers/array/tuple_interface/constexpr_get.cc
  aab23a059d97e93b80bf23883af2e3ad  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get.cc
! fb04b0dc98bf559cb64cd953f6ffe944  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
  0e50670d6b16f952322f533d32aac00e  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
  779dd84805e0fb5db0a5788b58041607  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
  4aba86ec7c82d37280332a28a304eb5b  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
*************** c2def03f80594fdacabf96a3fe28473a  libstd
*** 152483,152488 ****
--- 152639,152645 ----
  f95b540cb16ae5c8140d1176ba7abe7f  libstdc++-v3/testsuite/23_containers/priority_queue/92878_92947.cc
  0b887155f47fb0624742255fe2cbebb9  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
  3b183dd93ee947a513bf68c877e9bf62  libstdc++-v3/testsuite/23_containers/priority_queue/cons_from_range.cc
+ 6066e979da45e64d0bc4ffc5c4b949d5  libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc
  7854bb88f3eeae212b5ebf531089e7fa  libstdc++-v3/testsuite/23_containers/priority_queue/deduction.cc
  b973914ffc3f0fb17c99a7c8943f58b3  libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc
  d28290e2547d3a24b7652041265d30c0  libstdc++-v3/testsuite/23_containers/priority_queue/lwg3506.cc
*************** d0b83ed4b22da06f1e6bc15affd497ad  libstd
*** 153530,153535 ****
--- 153687,153693 ----
  9e11d5711b8d0f95f5ce207e381bd1d8  libstdc++-v3/testsuite/24_iterators/range_generators/iter_deref_return.cc
  c0cf7a998d7a04b5d3058bd84c0a1c74  libstdc++-v3/testsuite/24_iterators/range_generators/lwg3899.cc
  5846a6625f238913840979281e9008d5  libstdc++-v3/testsuite/24_iterators/range_generators/lwg3900.cc
+ 4ea7473503d59f045deae0a4a5a199b3  libstdc++-v3/testsuite/24_iterators/range_generators/lwg4119.cc
  1e1d86dc401e097273fc12a0dc17640f  libstdc++-v3/testsuite/24_iterators/range_generators/pr118022.cc
  a7fdd4ef46d148c07b2306186a300c7e  libstdc++-v3/testsuite/24_iterators/range_generators/pr118196.cc
  01e600e5482677c0f7909ed23e142ddb  libstdc++-v3/testsuite/24_iterators/range_generators/subrange.cc
*************** b988f14672c653e262a150962955e15d  libstd
*** 155813,155819 ****
  67c43ad012019621fef88630ccbaf7a7  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc
  de4ac3ac60931e7bf638cb99a53b952d  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/lwg3171.cc
  4c9202a769ae6b74403d8b3229607ad0  libstdc++-v3/testsuite/27_io/filesystem/file_status/1.cc
! 02f0a6cb5127ac79284eb4046940d6b6  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
  672a02ca984f1e679a126c971d5f482c  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/copy.cc
  332c803edbdff9c841b88227cc22332e  libstdc++-v3/testsuite/27_io/filesystem/iterators/106201.cc
  f3adc1f75911d5944fd09fa929edd3d4  libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc
--- 155971,155977 ----
  67c43ad012019621fef88630ccbaf7a7  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc
  de4ac3ac60931e7bf638cb99a53b952d  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/lwg3171.cc
  4c9202a769ae6b74403d8b3229607ad0  libstdc++-v3/testsuite/27_io/filesystem/file_status/1.cc
! 22c90ddf79a483dce82410bae22689d9  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
  672a02ca984f1e679a126c971d5f482c  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/copy.cc
  332c803edbdff9c841b88227cc22332e  libstdc++-v3/testsuite/27_io/filesystem/iterators/106201.cc
  f3adc1f75911d5944fd09fa929edd3d4  libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc
*************** e2bd01cfb42800fef1fe5369d45810d4  libstd
*** 155829,155837 ****
  25a884862529116a233d9595647f3078  libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
  2430f4e5168c2a5f9a1edf6b65771d7e  libstdc++-v3/testsuite/27_io/filesystem/operations/all.cc
  c4a0f1988ab64c05d8acb1647b35c6b6  libstdc++-v3/testsuite/27_io/filesystem/operations/bitmask_types.cc
! 5e2dc233605baf17154df55f66d3e048  libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
  832f8d573494c3abf8c0f6500b2032dd  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
! a2aabc0ccf542933e77337b730a20b4e  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
  10b6e95add9984bd29138cd25bc3a19f  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file_108178.cc
  cffb913862500cfd29affa80e490e98a  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc
  05dc7e66d0dfa60391d177d38acd0c39  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc
--- 155987,155995 ----
  25a884862529116a233d9595647f3078  libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
  2430f4e5168c2a5f9a1edf6b65771d7e  libstdc++-v3/testsuite/27_io/filesystem/operations/all.cc
  c4a0f1988ab64c05d8acb1647b35c6b6  libstdc++-v3/testsuite/27_io/filesystem/operations/bitmask_types.cc
! adc6af2775128f30c704ec44557da0a1  libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
  832f8d573494c3abf8c0f6500b2032dd  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
! e9e60d498c74c0a3d23036c3eba3d49b  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
  10b6e95add9984bd29138cd25bc3a19f  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file_108178.cc
  cffb913862500cfd29affa80e490e98a  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/1.cc
  05dc7e66d0dfa60391d177d38acd0c39  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_symlink/2.cc
*************** fa9cb661a609c85c1c56083ca7d1b07f  libstd
*** 155859,155869 ****
  e7e092a06ff77f3e5512bfbdf499ef49  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  67ef0d7370ff91e2c7e865251870e776  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
  dcac9365571fc86d1db025d0b10eb773  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
! c13faf2980e08ab9c9a1ddac9d127948  libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
  bd3e7e9b4dd0fdc9590ee569b21617aa  libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
  6dfbc01f57a0a31caab30c71dc1b23ba  libstdc++-v3/testsuite/27_io/filesystem/path/108636.cc
  99c8b1451d6ba0a50947ce5524a5ec93  libstdc++-v3/testsuite/27_io/filesystem/path/append/path.cc
! 209cf7bdd2dc713bae10133069828a23  libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
  30f5d3680f186ffa6aa0d6d515a418c5  libstdc++-v3/testsuite/27_io/filesystem/path/assign/assign.cc
  59cc4a1bbd81bf8cb274af7ad14ae607  libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
  3956ee0c1c465830f5750e1c4327abca  libstdc++-v3/testsuite/27_io/filesystem/path/compare/compare.cc
--- 156017,156027 ----
  e7e092a06ff77f3e5512bfbdf499ef49  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  67ef0d7370ff91e2c7e865251870e776  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
  dcac9365571fc86d1db025d0b10eb773  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
! b4eec234efb26b94b92ce5a57a3fe46e  libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
  bd3e7e9b4dd0fdc9590ee569b21617aa  libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
  6dfbc01f57a0a31caab30c71dc1b23ba  libstdc++-v3/testsuite/27_io/filesystem/path/108636.cc
  99c8b1451d6ba0a50947ce5524a5ec93  libstdc++-v3/testsuite/27_io/filesystem/path/append/path.cc
! 6e7cc1a2d710ecf9800389c7cac2e647  libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
  30f5d3680f186ffa6aa0d6d515a418c5  libstdc++-v3/testsuite/27_io/filesystem/path/assign/assign.cc
  59cc4a1bbd81bf8cb274af7ad14ae607  libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
  3956ee0c1c465830f5750e1c4327abca  libstdc++-v3/testsuite/27_io/filesystem/path/compare/compare.cc
*************** bd3e7e9b4dd0fdc9590ee569b21617aa  libstd
*** 155874,155880 ****
  86981b4799aa403053316c8099c7056f  libstdc++-v3/testsuite/27_io/filesystem/path/concat/92853.cc
  0d1a7b8f15204e9c77d4cc6bbe06c6f0  libstdc++-v3/testsuite/27_io/filesystem/path/concat/94063.cc
  f05a1a31823ab622884fc9d7b43fc9ef  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
! f18654472bc1a2f878c743d120865350  libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
  a22e69eb2c027825b8fb3e0e6df6a97d  libstdc++-v3/testsuite/27_io/filesystem/path/construct/100630.cc
  3bc7c7fa91cdfae8b85e98c050b994cc  libstdc++-v3/testsuite/27_io/filesystem/path/construct/102592.cc
  6bbf2a15c8ba31c1f969796193131be9  libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
--- 156032,156038 ----
  86981b4799aa403053316c8099c7056f  libstdc++-v3/testsuite/27_io/filesystem/path/concat/92853.cc
  0d1a7b8f15204e9c77d4cc6bbe06c6f0  libstdc++-v3/testsuite/27_io/filesystem/path/concat/94063.cc
  f05a1a31823ab622884fc9d7b43fc9ef  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
! ae68cc39d1ccc97b68a3f1402f866899  libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
  a22e69eb2c027825b8fb3e0e6df6a97d  libstdc++-v3/testsuite/27_io/filesystem/path/construct/100630.cc
  3bc7c7fa91cdfae8b85e98c050b994cc  libstdc++-v3/testsuite/27_io/filesystem/path/construct/102592.cc
  6bbf2a15c8ba31c1f969796193131be9  libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
*************** e7a644fe162bb98069db1dc0716078df  libstd
*** 155891,155900 ****
  74421053825b65c4ffffccb8e1aa8dce  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/filename.cc
  a62113679837b30fe4a5078df003a4ef  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc
  56e32e279cd0397a1b899b2f82b06ce5  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/relative_path.cc
! 1648c7db81817fbb0ebd4f4554c9866d  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
  e15e2ca7d4df45ce7b15ed93ea5d4b3b  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_name.cc
  a10b93bda33fc8910b05b694d8370234  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
! e70466f060d5ccc41eb72095d9c671da  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
  454d52d2a24ada406a54c0be4f4dd132  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc
  8f37bcc6544c96dc14a1dda07d716d75  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-depr.cc
  55522e017d9dfc4f25c94bafc08537b7  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc
--- 156049,156058 ----
  74421053825b65c4ffffccb8e1aa8dce  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/filename.cc
  a62113679837b30fe4a5078df003a4ef  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc
  56e32e279cd0397a1b899b2f82b06ce5  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/relative_path.cc
! 0cee0874f410ad99857596cee0ee4e10  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
  e15e2ca7d4df45ce7b15ed93ea5d4b3b  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_name.cc
  a10b93bda33fc8910b05b694d8370234  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
! cdea7b70f3be85babd103ebb0e22cb4e  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
  454d52d2a24ada406a54c0be4f4dd132  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc
  8f37bcc6544c96dc14a1dda07d716d75  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-depr.cc
  55522e017d9dfc4f25c94bafc08537b7  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc
*************** b647313152957f3d8a6a19c39dec2015  libstd
*** 155903,155914 ****
  e909502e2c4a36ead44f1cae22adb805  libstdc++-v3/testsuite/27_io/filesystem/path/generation/proximate.cc
  77a3a36c8cce01e716be2157af39be1d  libstdc++-v3/testsuite/27_io/filesystem/path/generation/relative.cc
  29196858cdaedbcaa091bb7f9c1bbcc5  libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc
! 3832112d706bcfc737e33f49eca3f88e  libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
  811299813207c48701cb33954e568a4d  libstdc++-v3/testsuite/27_io/filesystem/path/generic/utf.cc
  07185041b17f73a96f61c5b4cb73acc0  libstdc++-v3/testsuite/27_io/filesystem/path/generic/wchar_t.cc
  37b4d67e61f8b24684be3ea4c192219a  libstdc++-v3/testsuite/27_io/filesystem/path/io/dr2989.cc
  7ad6df2ba00fc6160b164dd9ff6218b2  libstdc++-v3/testsuite/27_io/filesystem/path/itr/components.cc
! 4f614d6fd25e44c8640044fc502be714  libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
  e99a9461266319a35661df026c06908a  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/clear.cc
  b0d1dab8b6322dc8ab05b68dd3ea377b  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/make_preferred.cc
  32477a224f3b1023d809d3b10337be2c  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/remove_filename.cc
--- 156061,156073 ----
  e909502e2c4a36ead44f1cae22adb805  libstdc++-v3/testsuite/27_io/filesystem/path/generation/proximate.cc
  77a3a36c8cce01e716be2157af39be1d  libstdc++-v3/testsuite/27_io/filesystem/path/generation/relative.cc
  29196858cdaedbcaa091bb7f9c1bbcc5  libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc
! 26720712d5ed482543636029aa282a83  libstdc++-v3/testsuite/27_io/filesystem/path/generic/display_native_string.cc
! 8dc4c989d8af27a6113f7218f9b37e00  libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
  811299813207c48701cb33954e568a4d  libstdc++-v3/testsuite/27_io/filesystem/path/generic/utf.cc
  07185041b17f73a96f61c5b4cb73acc0  libstdc++-v3/testsuite/27_io/filesystem/path/generic/wchar_t.cc
  37b4d67e61f8b24684be3ea4c192219a  libstdc++-v3/testsuite/27_io/filesystem/path/io/dr2989.cc
  7ad6df2ba00fc6160b164dd9ff6218b2  libstdc++-v3/testsuite/27_io/filesystem/path/itr/components.cc
! 72d93fb2022ea0b9d0faea791b8add6f  libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
  e99a9461266319a35661df026c06908a  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/clear.cc
  b0d1dab8b6322dc8ab05b68dd3ea377b  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/make_preferred.cc
  32477a224f3b1023d809d3b10337be2c  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/remove_filename.cc
*************** d57b3f5ea2d5fed4945b865634a1d8d2  libstd
*** 155917,155923 ****
  2170ee5f5508318c0cb6e42aa9038507  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/swap.cc
  1792d650224d70763d6dc8dd221fe916  libstdc++-v3/testsuite/27_io/filesystem/path/native/alloc.cc
  18be18b6013e71480b71b201979f3916  libstdc++-v3/testsuite/27_io/filesystem/path/native/conv_c++23.cc
! 4b8c383deed92378aca6533ee30dc903  libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
  6917397b168ae75345713111bc781e17  libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc
  24e0f19710c22b492031ff8b655e8b78  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/append.cc
  bd1a6dd86b3ce75e5e323537f0e87c18  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp.cc
--- 156076,156083 ----
  2170ee5f5508318c0cb6e42aa9038507  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/swap.cc
  1792d650224d70763d6dc8dd221fe916  libstdc++-v3/testsuite/27_io/filesystem/path/native/alloc.cc
  18be18b6013e71480b71b201979f3916  libstdc++-v3/testsuite/27_io/filesystem/path/native/conv_c++23.cc
! 9db6d90e37e6a1ddec7d7092d09623f5  libstdc++-v3/testsuite/27_io/filesystem/path/native/display_native_string.cc
! 61d3b58b41d20f95f3e32901c04704f7  libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
  6917397b168ae75345713111bc781e17  libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc
  24e0f19710c22b492031ff8b655e8b78  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/append.cc
  bd1a6dd86b3ce75e5e323537f0e87c18  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp.cc
*************** d1265fa86fa3f51c1a8c48f6ce054cec  libstd
*** 156124,156132 ****
  884f9924d63cda85d563691777b17daf  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
  bedb4787180de48850b9d3e93b069289  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! 9411c3470699cb8b6c41dca62d32aa88  libstdc++-v3/testsuite/27_io/print/1.cc
! a439eaf7ea52a89548ecd3344bd3c08d  libstdc++-v3/testsuite/27_io/print/2.cc
! f6c79e469ea2b0dddd1990749fa4b787  libstdc++-v3/testsuite/27_io/print/3.cc
  1fcb896c44256929a07977ca21fe5196  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
  37900198219b3bf746a84814e92c58b9  libstdc++-v3/testsuite/27_io/rvalue_streams.cc
  9f91196bd2ee848a8c2cfc4258d112cb  libstdc++-v3/testsuite/27_io/spanstream/1.cc
--- 156284,156292 ----
  884f9924d63cda85d563691777b17daf  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
  bedb4787180de48850b9d3e93b069289  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! 5287f54b660701b297007a450fe90a0e  libstdc++-v3/testsuite/27_io/print/1.cc
! 9c2660083dff6f608d234afc2cc30a2c  libstdc++-v3/testsuite/27_io/print/2.cc
! 27010f8f7a676423b32ae923639155f4  libstdc++-v3/testsuite/27_io/print/3.cc
  1fcb896c44256929a07977ca21fe5196  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
  37900198219b3bf746a84814e92c58b9  libstdc++-v3/testsuite/27_io/rvalue_streams.cc
  9f91196bd2ee848a8c2cfc4258d112cb  libstdc++-v3/testsuite/27_io/spanstream/1.cc
*************** b26346363881da35f861d9ff89f90c93  libstd
*** 158023,158034 ****
  a228a2340ca9de5350db67f736edcd0b  libstdc++-v3/testsuite/std/concepts/concepts.object/semiregular.cc
  576d75aaf7d2aae28e341cda63776ff9  libstdc++-v3/testsuite/std/format/arguments/112607.cc
  6aba59df6148b2c2d4a2bb0a6167d356  libstdc++-v3/testsuite/std/format/arguments/args.cc
! 9b395b28a17d44c9d7e0673396df4031  libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
  0ae0aa3194832d790df652a9ef7d17c7  libstdc++-v3/testsuite/std/format/arguments/lwg3810.cc
  088e48d84af728cffa21af00b37e3c04  libstdc++-v3/testsuite/std/format/context.cc
! 8f6b20493386ac083a968add9dea93ac  libstdc++-v3/testsuite/std/format/debug.cc
  e3df31262c7d8753a3773bc8a7289da6  libstdc++-v3/testsuite/std/format/debug_nonunicode.cc
! 4a9e40b038da4f2b5da7c5172bf22f04  libstdc++-v3/testsuite/std/format/dynamic_format.cc
  3f84148bfc5153a2278f3c8c413dad98  libstdc++-v3/testsuite/std/format/error.cc
  6483a22120f0c0c4849413aa1a3ab0d1  libstdc++-v3/testsuite/std/format/fill.cc
  b5726319c3426ce133608077cf867e28  libstdc++-v3/testsuite/std/format/fill_nonunicode.cc
--- 158183,158196 ----
  a228a2340ca9de5350db67f736edcd0b  libstdc++-v3/testsuite/std/concepts/concepts.object/semiregular.cc
  576d75aaf7d2aae28e341cda63776ff9  libstdc++-v3/testsuite/std/format/arguments/112607.cc
  6aba59df6148b2c2d4a2bb0a6167d356  libstdc++-v3/testsuite/std/format/arguments/args.cc
! 865b78e08a65a19549ddcc2897fd1aa3  libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
  0ae0aa3194832d790df652a9ef7d17c7  libstdc++-v3/testsuite/std/format/arguments/lwg3810.cc
+ 0601a1c2a2c2e552e072474adc610cec  libstdc++-v3/testsuite/std/format/constexpr.cc
  088e48d84af728cffa21af00b37e3c04  libstdc++-v3/testsuite/std/format/context.cc
! 79e889f30b2ce6ee4786ed642f226310  libstdc++-v3/testsuite/std/format/debug.cc
  e3df31262c7d8753a3773bc8a7289da6  libstdc++-v3/testsuite/std/format/debug_nonunicode.cc
! 5c740084750e54905c48bcd3446ad8c9  libstdc++-v3/testsuite/std/format/debug_nonunicode_neg.cc
! 7d860f80f8454a7668ee0739a48b2728  libstdc++-v3/testsuite/std/format/dynamic_format.cc
  3f84148bfc5153a2278f3c8c413dad98  libstdc++-v3/testsuite/std/format/error.cc
  6483a22120f0c0c4849413aa1a3ab0d1  libstdc++-v3/testsuite/std/format/fill.cc
  b5726319c3426ce133608077cf867e28  libstdc++-v3/testsuite/std/format/fill_nonunicode.cc
*************** e7d2a20ce851bd6197787606fcea68bd  libstd
*** 158044,158069 ****
  86e49f182d51a169cbc8b52c799d40a2  libstdc++-v3/testsuite/std/format/fs_path.cc
  a1d452e66d840a306985b18ad9ae0a8e  libstdc++-v3/testsuite/std/format/functions/107871.cc
  a7244ffd437f4addc853cfdd012c5cba  libstdc++-v3/testsuite/std/format/functions/114519.cc
! 2e322d829887ddbcbe464445bc11e93f  libstdc++-v3/testsuite/std/format/functions/format.cc
! 8ee425f04d2e4782e67ab2eb62208b7f  libstdc++-v3/testsuite/std/format/functions/format_to.cc
  c5e2b63672ec2df6fdcba9b4e1ba3ba0  libstdc++-v3/testsuite/std/format/functions/format_to_n.cc
! f859e29ec6cd7017c9d0abc60ed4b8ce  libstdc++-v3/testsuite/std/format/functions/size.cc
  fc7c0a7a8dd0259caaa437eac20a9eca  libstdc++-v3/testsuite/std/format/functions/vformat_to.cc
  341fd71f544307f85453dfa5d899e9df  libstdc++-v3/testsuite/std/format/parse_ctx.cc
  98a750919025b1a6b7cbab28d1aba84a  libstdc++-v3/testsuite/std/format/parse_ctx_neg.cc
  1b3b368898e00e27fc4de00e410402a1  libstdc++-v3/testsuite/std/format/pr121765.cc
  adc36fa767db69881dc741e3677594b2  libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
  857552c77c29e3b58e4847f84fc27778  libstdc++-v3/testsuite/std/format/ranges/feature_test.cc
! 970b8bb7949b0a609542bb298f4b4a77  libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
  3eb8e2fa183f344414482633d44531bb  libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
! 07b9bef379083ed7da49c95c42ef0c39  libstdc++-v3/testsuite/std/format/ranges/formatter.cc
  d9708c521b612f15f943a911427b169b  libstdc++-v3/testsuite/std/format/ranges/map.cc
  3c83d38b975b49e89716f008ae9810f3  libstdc++-v3/testsuite/std/format/ranges/pr119861_neg.cc
! 559739840dd6ec076b05995aa37cfa74  libstdc++-v3/testsuite/std/format/ranges/sequence.cc
  9085de1a2c4f397091c62b0a0cab1069  libstdc++-v3/testsuite/std/format/ranges/string.cc
! c400d0d58ad702f461b28668dc629c09  libstdc++-v3/testsuite/std/format/string.cc
  7c654edf02fc2f7793fb1f549b890993  libstdc++-v3/testsuite/std/format/string_neg.cc
! 246b2e9f25648a67850193b3368e0db9  libstdc++-v3/testsuite/std/format/tuple.cc
  50518f97609e2ebe3b5f6363206fc2b4  libstdc++-v3/testsuite/std/memory/indirect/124890.cc
  f69347ccb773103796767f24914c4c96  libstdc++-v3/testsuite/std/memory/indirect/access.cc
  720e1b38d222c15f72ac910b92301d4a  libstdc++-v3/testsuite/std/memory/indirect/copy.cc
--- 158206,158231 ----
  86e49f182d51a169cbc8b52c799d40a2  libstdc++-v3/testsuite/std/format/fs_path.cc
  a1d452e66d840a306985b18ad9ae0a8e  libstdc++-v3/testsuite/std/format/functions/107871.cc
  a7244ffd437f4addc853cfdd012c5cba  libstdc++-v3/testsuite/std/format/functions/114519.cc
! 3555efa12e93620c43f5ab52f853c6fe  libstdc++-v3/testsuite/std/format/functions/format.cc
! 95281d72c0f266aeddab2212064ad7e1  libstdc++-v3/testsuite/std/format/functions/format_to.cc
  c5e2b63672ec2df6fdcba9b4e1ba3ba0  libstdc++-v3/testsuite/std/format/functions/format_to_n.cc
! c8f2eeb0abb15e3620dc7da529b654b2  libstdc++-v3/testsuite/std/format/functions/size.cc
  fc7c0a7a8dd0259caaa437eac20a9eca  libstdc++-v3/testsuite/std/format/functions/vformat_to.cc
  341fd71f544307f85453dfa5d899e9df  libstdc++-v3/testsuite/std/format/parse_ctx.cc
  98a750919025b1a6b7cbab28d1aba84a  libstdc++-v3/testsuite/std/format/parse_ctx_neg.cc
  1b3b368898e00e27fc4de00e410402a1  libstdc++-v3/testsuite/std/format/pr121765.cc
  adc36fa767db69881dc741e3677594b2  libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
  857552c77c29e3b58e4847f84fc27778  libstdc++-v3/testsuite/std/format/ranges/feature_test.cc
! 7a91fafe7a6e4f06e74dd985e80df5c0  libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
  3eb8e2fa183f344414482633d44531bb  libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
! 5b7db172ddf26a73853eaef1bf2f417e  libstdc++-v3/testsuite/std/format/ranges/formatter.cc
  d9708c521b612f15f943a911427b169b  libstdc++-v3/testsuite/std/format/ranges/map.cc
  3c83d38b975b49e89716f008ae9810f3  libstdc++-v3/testsuite/std/format/ranges/pr119861_neg.cc
! 1ac2b4ace470b2c3134bebec42e77dd8  libstdc++-v3/testsuite/std/format/ranges/sequence.cc
  9085de1a2c4f397091c62b0a0cab1069  libstdc++-v3/testsuite/std/format/ranges/string.cc
! 7e004f2825e1027c606884681f46f84e  libstdc++-v3/testsuite/std/format/string.cc
  7c654edf02fc2f7793fb1f549b890993  libstdc++-v3/testsuite/std/format/string_neg.cc
! 7821a6de7934645b3aa8c2f6184db867  libstdc++-v3/testsuite/std/format/tuple.cc
  50518f97609e2ebe3b5f6363206fc2b4  libstdc++-v3/testsuite/std/memory/indirect/124890.cc
  f69347ccb773103796767f24914c4c96  libstdc++-v3/testsuite/std/memory/indirect/access.cc
  720e1b38d222c15f72ac910b92301d4a  libstdc++-v3/testsuite/std/memory/indirect/copy.cc
*************** a87e1152f6bc2804b93ce070a51eeb54  libstd
*** 158239,158245 ****
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
  1cfa2f31c3dde7297b8ca55ba69d3f47  libstdc++-v3/testsuite/std/time/exceptions.cc
  34020a64a648a14a21a5266c23e4e13f  libstdc++-v3/testsuite/std/time/format/custom_rep.h
! 83b64b8147bb28b41838db46eca9e6d8  libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc
  3c34751416c3a4bfe19f6039a9b79f3f  libstdc++-v3/testsuite/std/time/format/empty_spec.cc
  58b8d8561c1b19c49d8678b61f6daea9  libstdc++-v3/testsuite/std/time/format/format.cc
  06b738d93b3d78681b0da48efd0a60bf  libstdc++-v3/testsuite/std/time/format/localized.cc
--- 158401,158407 ----
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
  1cfa2f31c3dde7297b8ca55ba69d3f47  libstdc++-v3/testsuite/std/time/exceptions.cc
  34020a64a648a14a21a5266c23e4e13f  libstdc++-v3/testsuite/std/time/format/custom_rep.h
! 6f6050c9314bfbdf37898f4029d36548  libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc
  3c34751416c3a4bfe19f6039a9b79f3f  libstdc++-v3/testsuite/std/time/format/empty_spec.cc
  58b8d8561c1b19c49d8678b61f6daea9  libstdc++-v3/testsuite/std/time/format/format.cc
  06b738d93b3d78681b0da48efd0a60bf  libstdc++-v3/testsuite/std/time/format/localized.cc
*************** d0e4c75a4430f932eef2e477748b50af  libstd
*** 159034,159040 ****
  2f0e564e1790e65e7676bc35cd73bddc  libstdc++-v3/testsuite/util/testsuite_containers.h
  68f190d026ec8d9681c1ce7518e6a58e  libstdc++-v3/testsuite/util/testsuite_counter_type.h
  842c7fdf6ded6fed0d44ed60cb219589  libstdc++-v3/testsuite/util/testsuite_error.h
! e0f7d13a790b40f07a58ba70a8d2e554  libstdc++-v3/testsuite/util/testsuite_fs.h
  dd88c1603de1bfe3c556df86650af13a  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
  a61da9cbd87ad94712cf12bae7e1c98f  libstdc++-v3/testsuite/util/testsuite_hooks.cc
  37dbdb4efaa4756802e9d59a40b5f911  libstdc++-v3/testsuite/util/testsuite_hooks.h
--- 159196,159202 ----
  2f0e564e1790e65e7676bc35cd73bddc  libstdc++-v3/testsuite/util/testsuite_containers.h
  68f190d026ec8d9681c1ce7518e6a58e  libstdc++-v3/testsuite/util/testsuite_counter_type.h
  842c7fdf6ded6fed0d44ed60cb219589  libstdc++-v3/testsuite/util/testsuite_error.h
! 19aeb98b8e8fcd98419c545224a6315e  libstdc++-v3/testsuite/util/testsuite_fs.h
  dd88c1603de1bfe3c556df86650af13a  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
  a61da9cbd87ad94712cf12bae7e1c98f  libstdc++-v3/testsuite/util/testsuite_hooks.cc
  37dbdb4efaa4756802e9d59a40b5f911  libstdc++-v3/testsuite/util/testsuite_hooks.h
diff -Nrcpad gcc-17-20260531/contrib/ChangeLog gcc-17-20260607/contrib/ChangeLog
*** gcc-17-20260531/contrib/ChangeLog	Sun May 31 22:32:04 2026
--- gcc-17-20260607/contrib/ChangeLog	Sun Jun  7 22:32:05 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-06-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc-changelog/git_update_version.py (ignored_commits):
+ 	Add 86ff0e88764bfbff1a4989414ec83c0eaa723107.
+ 
  2026-05-29  Kevin Buettner  <kevinb@redhat.com>
  
  	* dg-extract-results.py: Show warnings instead of erroring out
diff -Nrcpad gcc-17-20260531/contrib/download_prerequisites gcc-17-20260607/contrib/download_prerequisites
*** gcc-17-20260531/contrib/download_prerequisites	Sun May 31 22:32:04 2026
--- gcc-17-20260607/contrib/download_prerequisites	Sun Jun  7 22:32:05 2026
*************** force=0
*** 50,59 ****
  only_gettext=false
  OS=$(uname)
  
! if type wget > /dev/null ; then
    fetch='wget'
! else
    fetch='curl -LO'
  fi
  chksum_extension='sha512'
  directory='.'
--- 50,66 ----
  only_gettext=false
  OS=$(uname)
  
! die() {
!     echo "error: $@" >&2
!     exit 1
! }
! 
! if command -v wget > /dev/null ; then
    fetch='wget'
! elif command -v curl > /dev/null ; then
    fetch='curl -LO'
+ else
+   die "Install wget or curl"
  fi
  chksum_extension='sha512'
  directory='.'
*************** Copyright (C) 2016-2026 Free Software Fo
*** 86,96 ****
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
  
- die() {
-     echo "error: $@" >&2
-     exit 1
- }
- 
  for arg in "$@"
  do
      case "${arg}" in
--- 93,98 ----
diff -Nrcpad gcc-17-20260531/contrib/gcc-changelog/git_update_version.py gcc-17-20260607/contrib/gcc-changelog/git_update_version.py
*** gcc-17-20260531/contrib/gcc-changelog/git_update_version.py	Sun May 31 22:32:04 2026
--- gcc-17-20260607/contrib/gcc-changelog/git_update_version.py	Sun Jun  7 22:32:05 2026
*************** ignored_commits = {
*** 54,60 ****
          '69a2c243dd2cf9f77150c0eb86dfbc0931876bc1',
          'eec8da328cf1f91db302ab4cee803e269e68ad33',
          '9df40f1f4bec855da864f535e242308ceb1cd5ad',
!         'd5fb79718b22207253d62c92dcf8b1c16e1ea370'}
  
  FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
  logging.basicConfig(level=logging.INFO, format=FORMAT,
--- 54,61 ----
          '69a2c243dd2cf9f77150c0eb86dfbc0931876bc1',
          'eec8da328cf1f91db302ab4cee803e269e68ad33',
          '9df40f1f4bec855da864f535e242308ceb1cd5ad',
!         'd5fb79718b22207253d62c92dcf8b1c16e1ea370',
!         '86ff0e88764bfbff1a4989414ec83c0eaa723107'}
  
  FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
  logging.basicConfig(level=logging.INFO, format=FORMAT,
diff -Nrcpad gcc-17-20260531/gcc/ChangeLog gcc-17-20260607/gcc/ChangeLog
*** gcc-17-20260531/gcc/ChangeLog	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ChangeLog	Sun Jun  7 22:32:05 2026
***************
*** 1,3 ****
--- 1,1434 ----
+ 2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+ 
+ 	PR target/106895
+ 	* config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
+ 	RS6000_BTI_INTPTI and RS6000_BTI_UINTPTI.
+ 	(intPTI_type_internal_node, uintPTI_type_internal_node): New
+ 	PTImode type macros.
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Register
+ 	signed and unsigned PTImode internal builtin types.
+ 	* config/rs6000/sync.md (trunctipti2): New splitter.
+ 	(extendptiti2): Likewise.
+ 	(zero_extendptiti2): Likewise.
+ 
+ 2026-06-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/125588
+ 	* match.pd (`if (cond) (A | CST1) : (A & ~CST1)`): Enable
+ 	for GIMPLE only.
+ 
+ 2026-06-04  Kevin Stefanov  <kevinstefanov15@gmail.com>
+ 
+ 	* config/m68k/m68k.cc (m68k_conditional_register_usage): Replace TEST_HARD_REG_BIT
+ 	with EXECUTE_IF_SET_IN_HARD_REG_SET in applicable loops.
+ 	(m68k_zero_call_used_regs): Likewise.
+ 	* config/pdp11/pdp11.cc (pdp11_conditional_register_usage): Likewise.
+ 	* ira-color.cc (create_new_allocno_hard_regs_node): Replace call to hard_reg_set_size
+ 	with hard_reg_set_popcount.
+ 	* ira-int.h (hard_reg_set_size): Remove.
+ 	* ira-lives.cc (process_bb_node_lives): Replace TEST_HARD_REG_BIT
+ 	with EXECUTE_IF_SET_IN_HARD_REG_SET in applicable loops.
+ 	* ira.cc (setup_class_hard_regs): Likewise.
+ 	(update_equiv_regs_prescan): Likewise.
+ 	(build_insn_chain): Likewise.
+ 	(setup_stack_reg_pressure_class): Replace call to hard_reg_set_size
+ 	with hard_reg_set_popcount.
+ 	* lra-eliminations.cc (spill_pseudos): Replace TEST_HARD_REG_BIT
+ 	with EXECUTE_IF_SET_IN_HARD_REG_SET in applicable loops.
+ 	* optabs.cc (expand_asm_reg_clobber_mem_blockage): Replace
+ 	TEST_HARD_REG_BIT with EXECUTE_IF_SET_IN_HARD_REG_SET in one instance
+ 	and with hard_reg_set_popcount in another.
+ 	* postreload.cc (reload_combine): Replace TEST_HARD_REG_BIT
+ 	with EXECUTE_IF_SET_IN_HARD_REG_SET in applicable loops.
+ 	* reginfo.cc (init_reg_sets_1): Likewise.
+ 	* regrename.cc (init_rename_info): Likewise.
+ 	* reload1.cc (maybe_fix_stack_asms): Likewise.
+ 	(update_eliminables_and_spill): Likewise.
+ 	* rtl-ssa/insns.cc (function_info::record_call_clobbers): Likewise.
+ 	* sched-deps.cc (sched_analyze_insn): Likewise.
+ 	* sel-sched-dump.cc (print_hard_reg_set): Likewise.
+ 
+ 2026-06-04  Xiaomei Xue  <xuexiaomei@hygon.cn>
+ 
+ 	* config/i386/sse.md (define_mode_attr sse2): Add V4SI/V8SI/V16SI/
+ 	V8HI/V16HI/V32HI.
+ 	(<sse2>_movnt<mode>): Change mode iterator from VI8 to VI_AVX_AVX512F.
+ 	(define_mode_iterator STORENT_MODE): Add V4SI/V8SI/V16SI/V8HI/V16HI/
+ 	V32HI/V16QI/V32QI/V64QI.
+ 
+ 2026-06-03  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/124405
+ 	* tree-ssa-phiopt.cc (cond_store_replacement): Make ASSIGN (the
+ 	candidate store for cselim) an argument of the function instead. Update
+ 	legality check due to relaxing the restriction that middle_bb can have
+ 	only a single statement.
+ 	(cselim_candidate): New.
+ 	(pass_cselim::execute): Call cselim_candidate and pass the result to
+ 	cond_store_replacement.
+ 
+ 2026-06-03  Milan Tripkovic  <Milan.Tripkovic@rt-rk.com>
+ 
+ 	* config/riscv/riscv-cores.def (RISCV_TUNE): Changed xt-c908
+ 	PIPELINE_MODEL and TUNE_INFO
+ 	* config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): Add entry
+ 	for xt-c908 design
+ 	* config/riscv/riscv.cc: New tune structure
+ 	for the xt-c908 design.
+ 	* config/riscv/riscv.md: Add xt-c908 .
+ 	Include xt-c908.md.
+ 	* config/riscv/xt-c908.md: New file.
+ 
+ 2026-06-03  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+ 
+ 	* tree-scalar-evolution.cc
+ 	(compute_final_value_from_loop_phi_latch): New function.
+ 	(final_value_replacement_loop): Use it.
+ 
+ 2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/103221
+ 	* passes.def (early_optimizations): Move sccopy
+ 	to after evrp.
+ 
+ 2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* gimple-ssa-sccopy.cc (stmt_may_generate_copy): Remove restriction
+ 	on the ssa info being different for the "copy".
+ 	(scc_copy_prop::replace_scc_by_value): Call maybe_duplicate_ssa_info_at_copy
+ 	when copyproping a ssa name.
+ 
+ 2026-06-03  Pan Li  <pan2.li@intel.com>
+ 
+ 	* match-sat-alu.pd: Add pattern for unsigned scalar
+ 	SAT_MUL form 11.
+ 
+ 2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* rtl.def (CALL_INSN): Add a new integer field.
+ 	* rtl.h (CALL_INSN_ABI_ID): New macro.
+ 	* target.def (insn_callee_abi): Delete.
+ 	* doc/rtl.texi: Document CALL_INSN_ABI_ID.
+ 	* doc/tm.texi.in (TARGET_INSN_CALLEE_ABI): Remove.
+ 	* doc/tm.texi: Regenerate.
+ 	* calls.cc: Include regs.h and function-abi.h.
+ 	(emit_call_1): Initialize CALL_INSN_ABI_ID.
+ 	* cfgcleanup.cc (old_insns_match_p): Compare CALL_INSN_ABI_IDs.
+ 	* emit-rtl.cc (try_split): Copy the original insn's CALL_INSN_ABI_ID
+ 	to the new call.
+ 	(emit_copy_of_insn_after): Likewise.
+ 	(make_call_insn_raw): Initialise CALL_INSN_ABI_ID.
+ 	* function-abi.cc (insn_callee_abi): Remove use of the insn_callee_abi
+ 	hook and instead use CALL_INSN_ABI_ID.
+ 	* recog.cc (peep2_attempt): Copy the original insn's CALL_INSN_ABI_ID
+ 	to the new call.
+ 	* config/aarch64/aarch64-protos.h (aarch64_gen_callee_cookie): Remove
+ 	arm_pcs parameter.
+ 	* config/aarch64/aarch64.cc (aarch64_gen_callee_cookie): Likewise.
+ 	(aarch64_callee_abi): Delete.
+ 	(aarch64_insn_callee_abi): Likewise.
+ 	(aarch64_function_arg): Update call to aarch64_callee_abi.
+ 	(aarch64_output_mi_thunk): Likewise.  Set CALL_INSN_ABI_ID instead.
+ 	(TARGET_INSN_CALLEE_ABI): Delete.
+ 	* config/aarch64/aarch64.md (tlsdesc_small_<mode>): Update call
+ 	to aarch64_callee_abi and set CALL_INSN_ABI_ID instead.
+ 	* config/i386/i386.cc (ix86_insn_callee_abi): Delete.
+ 	(ix86_expand_avx_vzeroupper): Set CALL_INSN_ABI_ID.
+ 	(TARGET_INSN_CALLEE_ABI): Delete.
+ 	* config/riscv/riscv-sr.cc (riscv_remove_unneeded_save_restore_calls):
+ 	Remove coding convention from calls to gen_sibcall_internal and
+ 	gen_sibcall_value_internal.  Store the ABI identifier in
+ 	CALL_INSN_ABI_ID instead.
+ 	* config/riscv/riscv.cc (riscv_output_mi_thunk): Likewise.
+ 	(riscv_call_tls_get_addr): Likewise, but calling gen_call_value.
+ 	(riscv_function_arg): Return null for the end marker.
+ 	(get_riscv_cc, riscv_insn_callee_abi): Delete.
+ 	(TARGET_INSN_CALLEE_ABI): Delete.
+ 	* config/riscv/riscv.md (UNSPEC_CALLEE_CC): Delete.
+ 	(sibcall): Revert to treating operand 2 as a placeholder.
+ 	Do not pass it to gen_sibcall_internal.
+ 	(sibcall_value): Likewise operand 3 and gen_sibcall_value_internal.
+ 	(call): Likewise operand 2 and gen_call_internal.
+ 	(call_value): Likewise operand 3 and gen_call_value_internal.
+ 	(sibcall_internal, call_internal): Remove operand 2.
+ 	(sibcall_value_internal, call_value_internal): Remove operand 3.
+ 	(untyped_call): Update call to gen_call.
+ 
+ 2026-06-03  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* config/aarch64/constraints.md (Uci): Drop @internal, slightly tweak
+ 	doc string.
+ 	(Ucj): Likewise.
+ 	* doc/md.texi (Machine Constraints): Document Uci and Ucj under AArch64
+ 	family.
+ 
+ 2026-06-03  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* doc/ifn.texi (Direct Internal Functions): Flesh out
+ 	documentation for IFN_MASK_LOAD.
+ 	* doc/md.texi (Standard Names): Add anchor for maskloadmn so it
+ 	can be cross-referenced.
+ 
+ 2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	PR tree-optimization/125579
+ 	* gimple-ssa-backprop.cc (backprop::execute): Avoid double deletions.
+ 
+ 2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125431
+ 	* tree-vect-slp-patterns.cc (complex_mul_pattern::matches,
+ 	complex_fms_pattern::matches): Gate on FP contraction.
+ 
+ 2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125509
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Re-enable dominators
+ 	update for prolog peeling.
+ 
+ 2026-06-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125477
+ 	* tree-vect-loop-manip.cc (vect_loop_versioning): Verify we
+ 	can duplicate an outer loop before considering to version it.
+ 
+ 2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/125507
+ 	* gengtype.cc (main): Add tree_code.
+ 	* tree-core.h (struct tree_base): Remove ENUM_BITFIELD.
+ 	(struct tree_type_common): Likewise.
+ 	(struct tree_decl_common): Likewise.
+ 	(struct tree_decl_with_vis): Likewise.
+ 	(struct tree_function_decl): Likewise.
+ 
+ 2026-06-03  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_sched_reorder): Remove dead
+ 	return after the early-return guard.
+ 
+ 2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* bitmap.h (bitmap_element): Fix left/right distinction in comments.
+ 
+ 2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* gimple-ssa-backprop.cc: Update the comment at head of the file.
+ 	(var_info::new_value, var_info::seq): New member variables.
+ 	(var_info::var_info): Initialize them.
+ 	(remove_unused_var): Replace with...
+ 	(remove_dead_stmt): ...this new function.
+ 	(note_replacement): Delete.
+ 	(backprop::prepare_change): Likewise.
+ 	(backprop::complete_change): Likewise.
+ 	(backprop::set_new_value): New function.
+ 	(backprop::subst_operand): Likewise.
+ 	(backprop::finish_stmt): Likewise.
+ 	(backprop::optimize_builtin_call): Replace the lhs and info parameters
+ 	with a var_info parameter.  Create a new statement rather than
+ 	changing the existing one.
+ 	(backprop::optimize_assign): Likewise.
+ 	(backprop::optimize_phi): Likewise.
+ 	(backprop::replace_assign_rhs): Likewise, but replace gassign and lhs
+ 	parameters.
+ 	(backprop::propagate_change): New function.
+ 	(backprop::commit_replacement): Likewise.
+ 	(backprop::execute): Update phase 3 for the above changes.  Do not
+ 	alter the original statements during phase 3.  If one SSA name
+ 	is scheduled to be replaced, also require all its users in m_vars
+ 	to be replaced.  Add a new phase that performs the scheduled
+ 	replacements.
+ 
+ 2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* gimple-ssa-backprop.cc: Remove the claim at the head of the file
+ 	that we only need to revisit a statement once.
+ 	(backprop::m_worklist, backprop::m_worklist_names): Delete.
+ 	(backprop::m_worklist1): New member variable.
+ 	(backprop::m_worklist2, backprop::m_this_worklist): Likewise.
+ 	(backprop::m_next_worklist, backprop::m_worklist_threshold): Likewise.
+ 	(backprop::backprop): Update accordingly.
+ 	(backprop::~backprop): Likewise.
+ 	(backprop::push_to_worklist): Switch to using bitmap worklists that
+ 	use m_vars indices instead of SSA_NAME_VERSIONs.  Decide which
+ 	worklist should be used based on m_worklist_threshold.
+ 	(backprop::pop_from_worklist): Pop the first bit from m_this_worklist.
+ 	Set m_worklist_threshold.
+ 	(backprop::execute): Use a double-worklist update in which each
+ 	iteration makes a post order walk.
+ 
+ 2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* gimple-ssa-backprop.cc (var_info): New structure.
+ 	(var_info_hasher): Likewise.
+ 	(backprop::m_info_pool): Replace with...
+ 	(backprop::m_var_pool): ...this new member variable.
+ 	(backprop::m_info_map): Replace with...
+ 	(backprop::m_var_table): ...this new member variable.
+ 	(backprop::m_worklist): Store var_info pointers instead of SSA names.
+ 	(backprop::backprop): Update accordingly.
+ 	(backprop::~backprop): Likewise.
+ 	(backprop::lookup_operand): Return a var_info pointer instead of
+ 	a usage_info pointer.
+ 	(backprop::push_to_worklist): Take a var_info pointer instead
+ 	of an SSA name.
+ 	(backprop::pop_from_worklist): Return a var_info pointer instead
+ 	of an SSA name.
+ 	(backprop::process_builtin_call_use): Update calls accordingly.
+ 	(backprop::process_assign_use): Likewise.
+ 	(backprop::process_phi_use): Likewise.
+ 	(backprop::reprocess_inputs): Likewise.
+ 	(backprop::process_var): Take a pointer to the var_info entry
+ 	as a second parameter.  Update for the above data structure changes.
+ 	(backprop::process_block): Update calls to process_var.
+ 	(backprop::execute): Likewise.  Update for the above data structure
+ 	changes.
+ 
+ 2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* gimple-ssa-backprop.cc (backprop::process_var): Don't try to
+ 	optimize SSA names that occur as a phi input for an abnormal edge,
+ 	moving the restriction from...
+ 	(backprop::optimize_phi): ...here.
+ 
+ 2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* gimple-iterator.cc (completely_unused): New function.
+ 	(gsi_replace): Allow changes in lhs if the caller has updated
+ 	all uses of the old name, including all debug uses.
+ 	* gimple-fold.cc (gsi_replace_with_seq_vops): Likewise.
+ 
+ 2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* bitmap.h: Document the complexity of pop_largest aka
+ 	bitmap_clear_last_set_bit.
+ 	(bitmap_clear_last_set_bit): Declare.
+ 	* bitmap.cc (bitmap_last_set_bit_worker): New function,
+ 	split out from...
+ 	(bitmap_last_set_bit): ...here.
+ 	(bitmap_clear_last_set_bit): New function.
+ 
+ 2026-06-02  Jonathan Yong  <10walls@gmail.com>
+ 
+ 	Revert:
+ 	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-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125545
+ 	* tree-ssa-reassoc.cc (insert_stmt_after): Allow asm goto
+ 	with a single successor.
+ 
+ 2026-06-02  Lino Hsing-Yu Peng  <linopeng@andestech.com>
+ 
+ 	* common/config/riscv/riscv-common.cc: Add zvfofp8min support.
+ 	* config/riscv/riscv-ext.def: Add zvfofp8min entry.
+ 	* config/riscv/riscv-ext.opt: Add zvfofp8min option.
+ 	* config/riscv/riscv-vector-builtins.cc: Require zvfofp8min.
+ 	* config/riscv/riscv-vector-builtins.h: Add zvfofp8min handling.
+ 	* doc/riscv-ext.texi: Document the new extension.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125553
+ 	* tree-ssa-sccvn.cc (visit_nary_op): Valueize the BIT_FIELD_REF
+ 	operand before looking at its definition.
+ 
+ 2026-06-02  Wang Yaduo  <wangyaduo@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv-cores.def: Switch xt-c9501fdvt tune to
+ 	xt_c9501_tune_info.
+ 	* config/riscv/riscv.cc (xt_c9501_vls_vector_cost): New.
+ 	(xt_c9501_vla_vector_cost): New.
+ 	(xt_c9501_vector_cost): New.
+ 	(xt_c9501_tune_info): New.
+ 
+ 2026-06-02  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv-v.cc (expand_vec_perm): Add missing return
+ 	after emit_vlmax_gather_insn.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125502
+ 	* tree-ssa-forwprop.cc (optimize_vector_load): Do not
+ 	move defs of abnormals.
+ 
+ 2026-06-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (crotate): Rename to inv_rotate.
+ 	Update all uses accordingly.
+ 
+ 2026-06-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config/sol2.h (TARGET_OS_CPP_BUILTINS): Don't define
+ 	_XOPEN_SOURCE=600 for C++.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120702
+ 	* gimple-fold.cc (maybe_fold_reference): Only fold
+ 	register type reads.
+ 
+ 2026-06-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/125517
+ 	* wide-int.cc (wi::bitreverse_large): Rename LEN argument to XLEN and
+ 	use it as safe_uhwi argument.  Add LEN automatic variable set to
+ 	BLOCKS_NEEDED (precision).  Replace loop clearing val with memset.
+ 	Remove I automatic variable.
+ 
+ 2026-06-02  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* common/config/riscv/riscv-common.cc: Fix typos in comments.
+ 	* config/riscv/andes-25-series.md: Likewise.
+ 	* config/riscv/autovec-opt.md: Likewise.
+ 	* config/riscv/autovec.md: Likewise.
+ 	* config/riscv/bitmanip.md: Likewise.
+ 	* config/riscv/constraints.md: Likewise.
+ 	* config/riscv/gen-riscv-ext-opt.cc: Likewise.
+ 	* config/riscv/gen-riscv-mcpu-texi.cc: Likewise.
+ 	* config/riscv/generic-vector-ooo.md: Likewise.
+ 	* config/riscv/multilib-generator: Likewise.
+ 	* config/riscv/riscv-avlprop.cc: Likewise.
+ 	* config/riscv/riscv-ext.def: Likewise.
+ 	* config/riscv/riscv-ext.opt: Likewise.
+ 	* config/riscv/riscv-modes.def: Likewise.
+ 	* config/riscv/riscv-opt-popretz.cc: Likewise.
+ 	* config/riscv/riscv-profiles.def: Likewise.
+ 	* config/riscv/riscv-protos.h: Likewise.
+ 	* config/riscv/riscv-selftests.cc: Likewise.
+ 	* config/riscv/riscv-sr.cc: Likewise.
+ 	* config/riscv/riscv-string.cc: Likewise.
+ 	* config/riscv/riscv-subset.h: Likewise.
+ 	* config/riscv/riscv-target-attr.cc: Likewise.
+ 	* config/riscv/riscv-v.cc: Likewise.
+ 	* config/riscv/riscv-vect-permconst.cc: Likewise.
+ 	* config/riscv/riscv-vector-builtins-bases.cc: Likewise.
+ 	* config/riscv/riscv-vector-builtins-functions.def: Likewise.
+ 	* config/riscv/riscv-vector-builtins-shapes.cc: Likewise.
+ 	* config/riscv/riscv-vector-builtins-types.def: Likewise.
+ 	* config/riscv/riscv-vector-builtins.cc: Likewise.
+ 	* config/riscv/riscv-vector-builtins.def: Likewise.
+ 	* config/riscv/riscv-vector-builtins.h: Likewise.
+ 	* config/riscv/riscv-vector-costs.cc: Likewise.
+ 	* config/riscv/riscv-vector-costs.h: Likewise.
+ 	* config/riscv/riscv-vsetvl.cc: Likewise.
+ 	* config/riscv/riscv-vsetvl.def: Likewise.
+ 	* config/riscv/riscv-zicfilp.cc: Likewise.
+ 	* config/riscv/riscv.cc: Likewise.
+ 	(riscv_zcmp_valid_stack_adj_bytes_p): Rename misspelled
+ 	variable additioanl_bytes to additional_bytes.
+ 	* config/riscv/riscv.h: Likewise.
+ 	* config/riscv/riscv.md: Likewise.
+ 	* config/riscv/sifive-vector-builtins-functions.def: Likewise.
+ 	* config/riscv/sifive_vector.h: Likewise.
+ 	* config/riscv/spacemit-x60.md: Likewise.
+ 	* config/riscv/thead.cc: Likewise.
+ 	* config/riscv/tt-ascalon-d8.md: Likewise.
+ 	* config/riscv/vector-crypto.md: Likewise.
+ 	* config/riscv/vector-iterators.md: Likewise.
+ 	* config/riscv/vector.md: Likewise.
+ 	* config/riscv/zicond.md: Likewise.
+ 	* doc/riscv-mcpu.texi: Regenerate.
+ 
+ 2026-06-02  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* common/config/riscv/riscv-common.cc: Fix formatting.
+ 	* config/riscv/gen-riscv-mcpu-texi.cc: Likewise.
+ 	* config/riscv/gen-riscv-mtune-texi.cc: Likewise.
+ 	* config/riscv/genrvv-type-indexer.cc: Remove unused <assert.h>
+ 	include.
+ 	* config/riscv/riscv-string.cc: Fix formatting.
+ 	* config/riscv/riscv-target-attr.cc: Likewise.
+ 	* config/riscv/riscv-v.cc: Remove duplicate "targhooks.h" include.
+ 	Fix formatting.
+ 	* config/riscv/riscv-v.h: Fix formatting.
+ 	* config/riscv/riscv-vsetvl.cc: Likewise.
+ 	* config/riscv/riscv.cc (riscv_pass_by_reference): Remove stray
+ 	double semicolon.  Fix formatting elsewhere.
+ 	(riscv_output_move): Use gcc_unreachable () instead of abort ().
+ 	(riscv_save_libcall_count): Use gcc_unreachable () instead of
+ 	abort ().
+ 	* config/riscv/riscv.h: Fix formatting.
+ 	* config/riscv/thead.cc: Likewise.
+ 
+ 2026-06-02  Tianle Shi  <shitianle@hygon.cn>
+ 
+ 	* config/i386/i386.cc (ix86_vector_costs): Add
+ 	m_num_avx512_vec_perm.
+ 	(ix86_vector_costs::ix86_vector_costs): Initialize it.
+ 	(ix86_count_cross_lane_perm_p): New helper to classify
+ 	cross-lane vec_perm for AVX256 and AVX512 handling.
+ 	(ix86_vector_costs::add_stmt_cost): Use the helper for
+ 	vec_perm accounting, record 256-bit and 512-bit counts,
+ 	and print detected width as avx%u.
+ 	(ix86_vector_costs::finish_cost): Reject AVX512 costs
+ 	when TARGET_AVX512_AVOID_VEC_PERM is set and 512-bit
+ 	cross-lane vec_perm is present.
+ 	* config/i386/i386.h (TARGET_AVX512_AVOID_VEC_PERM):
+ 	New macro.
+ 	* config/i386/x86-tune.def (X86_TUNE_AVX512_AVOID_VEC_PERM):
+ 	New tune for c86-4g-m7.
+ 
+ 2026-06-02  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/125558
+ 	* common.opt (Wstrict-overflow): Mark as Ignore.
+ 	(Wstrict-overflow=): Fix up and mark as igore.
+ 	* gcc-diagnostic-spec.cc (nowarn_spec_t::nowarn_spec_t):
+ 	Remove OPT_Wstrict_overflow.
+ 	* opts.cc (common_handle_option): Likewise.
+ 
+ 2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/122827
+ 	* config/aarch64/aarch64.cc (aarch64_hard_regno_call_part_clobbered):
+ 	For SVE modes use BYTES_PER_SVE_VECTOR for the per-register size
+ 	rather than GET_MODE_SIZE.
+ 	* config/aarch64/aarch64-early-ra.cc (early_ra::get_allocno_subgroup):
+ 	Classify any SVE mode as FPR_Z.
+ 
+ 2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/tuning_models/olympus.h (olympus_scalar_issue_info,
+ 	olympus_advsimd_issue_info, olympus_sve_issue_info): Set
+ 	loads_stores_per_cycle to 6.
+ 
+ 2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/tuning_models/olympus.h (olympus_tunings):
+ 	Adjust loop_align, function_align, jump_align.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/arm/arm-mve-builtins-shapes.cc (struct viddup_def):
+ 	Re-flow comment.
+ 	(struct vidwdup_def): Likewise.
+ 	* config/arm/arm.cc (arm_mve_check_reg_origin_is_num_elems): Likewise.
+ 	* config/loongarch/sync.md: Likewise.
+ 	* config/microblaze/microblaze.cc (compute_frame_size): Likewise.
+ 	* config/rs6000/rs6000-call.cc (rs6000_gimplify_va_arg): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/darwin-c.cc (find_subframework_header): Fix typos.
+ 	* config/darwin-driver.cc (darwin_find_version_from_kernel): Likewise.
+ 	* config/darwin.cc (darwin_label_is_anonymous_local_objc_name): Likewise.
+ 	(fprintf): Likewise.
+ 	* config/sol2-stubs.cc: Likewise.
+ 	* config/sol2.cc (solaris_elf_asm_comdat_section): Likewise.
+ 	* config/sol2.h: Likewise.
+ 	* config/vx-common.h: Likewise.
+ 	* config/vxworks.h (vxworks_asm_out_destructor): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_legitimize_address): Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/vms/vms-c.cc (enum extern_model_kind): Fix typos.
+ 	(vms_pragma_message): Likewise.
+ 	(vms_c_register_includes): Likewise.
+ 	* config/vms/vms.cc (vms_function_section): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/visium/visium.h (CASE_VECTOR_PC_RELATIVE): Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/vax/vax.cc (vax_expand_addsub_di_operands): Fix typos.
+ 	* config/vax/vax.h (PRINT_OPERAND_ADDRESS): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/sparc/freebsd.h: Fix typos.
+ 	* config/sparc/sparc.cc (emit_scc_insn): Likewise.
+ 	(sparc_emit_membar_for_model): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/sh/sh-mem.cc (sh_expand_cmpstr): Fix typos.
+ 	* config/sh/sh.cc (sh_option_override): Likewise.
+ 	(sh_rtx_costs): Likewise.
+ 	(fixup_addr_diff_vecs): Likewise.
+ 	(sh_expand_epilogue): Likewise.
+ 	(sh_legitimize_address_displacement): Likewise.
+ 	(sh_can_use_simple_return_p): Likewise.
+ 	(sh_find_equiv_gbr_addr): Likewise.
+ 	(sh_check_add_incdec_notes): Likewise.
+ 	* config/sh/sh.md: Likewise.
+ 	* config/sh/sh4-300.md: Likewise.
+ 	* config/sh/sh_treg_combine.cc (sh_treg_combine::try_combine_comparisons): Likewise.
+ 	(sh_treg_combine::try_eliminate_cstores): Likewise.
+ 	* config/sh/sync.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/rx/rx.cc (rx_print_operand): Fix typos.
+ 	(rx_expand_epilogue): Likewise.
+ 	* config/rx/rx.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/s390/2817.md: Fix typos.
+ 	* config/s390/s390.cc (s390_contiguous_bitmask_nowrap_p): Likewise.
+ 	(s390_contiguous_bitmask_p): Likewise.
+ 	(s390_short_displacement): Likewise.
+ 	(s390_expand_cmpmem): Likewise.
+ 	(s390_expand_vec_movstr): Likewise.
+ 	(s390_expand_cstoreti4): Likewise.
+ 	(s390_expand_int_spaceship): Likewise.
+ 	(s390_z10_optimize_cmp): Likewise.
+ 	(s390_support_vector_misalignment): Likewise.
+ 	* config/s390/s390.h (NO_FUNCTION_CSE): Likewise.
+ 	* config/s390/s390.md: Likewise.
+ 	* config/s390/subst.md: Likewise.
+ 	* config/s390/vx-builtins.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/rs6000/aix.h: Fix typos.
+ 	* config/rs6000/cell.md: Likewise.
+ 	* config/rs6000/darwin.h: Likewise.
+ 	* config/rs6000/mmintrin.h: Likewise.
+ 	* config/rs6000/rs6000-call.cc (rs6000_gimplify_va_arg): Likewise.
+ 	* config/rs6000/rs6000-internal.h: Likewise.
+ 	* config/rs6000/rs6000-logue.cc (is_altivec_return_reg): Likewise.
+ 	(rs6000_output_function_prologue): Likewise.
+ 	* config/rs6000/rs6000-p8swap.cc (quad_aligned_store_p): Likewise.
+ 	(const_load_sequence_p): Likewise.
+ 	(replace_swapped_aligned_store): Likewise.
+ 	* config/rs6000/rs6000-passes.def: Likewise.
+ 	* config/rs6000/rs6000-string.cc (expand_cmp_vec_sequence): Likewise.
+ 	(expand_compare_loop): Likewise.
+ 	* config/rs6000/rs6000.cc (rs6000_debug_addr_mask): Likewise.
+ 	(rs6000_setup_reg_addr_masks): Likewise.
+ 	(darwin_rs6000_override_options): Likewise.
+ 	(rs6000_option_override_internal): Likewise.
+ 	(rs6000_cost_data::determine_suggested_unroll_factor): Likewise.
+ 	(rs6000_cannot_force_const_mem): Likewise.
+ 	(rs6000_emit_le_vsx_move): Likewise.
+ 	(rs6000_secondary_reload_memory): Likewise.
+ 	(rs6000_reverse_condition): Likewise.
+ 	(rs6000_expand_float128_convert): Likewise.
+ 	(rs6000_adjust_atomic_subword): Likewise.
+ 	(rs6000_expand_atomic_op): Likewise.
+ 	(rs6000_xcoff_declare_object_name): Likewise.
+ 	(output_pcrel_opt_reloc): Likewise.
+ 	(rs6000_set_up_by_prologue): Likewise.
+ 	(rs6000_split_logical_inner): Likewise.
+ 	(rs6000_split_multireg_move): Likewise.
+ 	* config/rs6000/rs6000.h: Likewise.
+ 	* config/rs6000/rs6000.md: Likewise.
+ 	* config/rs6000/sync.md: Likewise.
+ 	* config/rs6000/vector.md: Likewise.
+ 	* config/rs6000/vsx.md: Likewise.
+ 	* config/rs6000/vxworks.h: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/rl78/rl78.cc (rl78_alloc_physical_registers): Fix typos.
+ 	(set_origin): Likewise.
+ 	(rl78_remove_unused_sets): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/pdp11/pdp11.cc (pdp11_insn_cost): Fix typo.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_subset_list::add): Fix
+ 	typos.
+ 	(riscv_subset_list::parse_single_multiletter_ext): Likewise.
+ 	(riscv_subset_list::set_loc): Likewise.
+ 	(riscv_arch_str): Likewise.
+ 	* config/riscv/riscv-avlprop.cc: Likewise.
+ 	* config/riscv/riscv-bclr-lowest-set-bit.cc (find_later_ctz): Likewise.
+ 	* config/riscv/riscv-ext-andes.def: Likewise.
+ 	* config/riscv/riscv-ext.def: Likewise.
+ 	* config/riscv/riscv-profiles.def: Likewise.
+ 	* config/riscv/riscv-selftests.cc (run_const_vector_selftests): Likewise.
+ 	(run_broadcast_selftests): Likewise.
+ 	(riscv_run_selftests): Likewise.
+ 	* config/riscv/riscv-string.cc (riscv_expand_strcmp): Likewise.
+ 	* config/riscv/riscv-v.cc (shuffle_decompress_patterns): Likewise.
+ 	(vls_mode_valid_p): Likewise.
+ 	* config/riscv/riscv-vect-permconst.cc (vector_permconst::process_bb): Likewise.
+ 	* config/riscv/riscv-vector-builtins.cc (riscv_pragma_intrinsic_flags_pollute): Likewise.
+ 	* config/riscv/riscv-vsetvl.cc: Likewise.
+ 	* config/riscv/riscv-zicfilp.cc: Likewise.
+ 	* config/riscv/riscv.cc (riscv_expand_mult_with_const_int): Likewise.
+ 	(riscv_rtx_costs): Likewise.
+ 	(riscv_address_cost): Likewise.
+ 	(riscv_vls_cc_function_abi): Likewise.
+ 	(riscv_frm_mode_needed): Likewise.
+ 	(dispatch_function_versions): Likewise.
+ 	* config/riscv/riscv.h (DWARF_REG_TO_UNWIND_COLUMN): Likewise.
+ 	* config/riscv/riscv.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/pa/pa.cc (pa_assemble_integer): Fix typos.
+ 	(pa_can_change_mode_class): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/or1k/or1k.cc (or1k_strict_argument_naming): Fix typos.
+ 	(or1k_print_operand_address): Likewise.
+ 	* config/or1k/or1k.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_option_override): Fix typos.
+ 	(nvptx_assemble_undefined_decl): Likewise.
+ 	(nvptx_mem_maybe_shared_p): Likewise.
+ 	(nvptx_discover_pars): Likewise.
+ 	(verify_neutering_labels): Likewise.
+ 	(nvptx_condjump_label): Likewise.
+ 	(nvptx_lockfull_update): Likewise.
+ 	* config/nvptx/nvptx.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* common/config/nds32/nds32-common.cc (nds32_except_unwind_info): Fix
+ 	typos.
+ 	* config/nds32/constants.md: Likewise.
+ 	* config/nds32/constraints.md: Likewise.
+ 	* config/nds32/nds32-cost.cc (nds32_rtx_costs_speed_prefer): Likewise.
+ 	* config/nds32/nds32-dspext.md: Likewise.
+ 	* config/nds32/nds32-e8.md: Likewise.
+ 	* config/nds32/nds32-fp-as-gp.cc (nds32_fp_as_gp_check_available): Likewise.
+ 	* config/nds32/nds32-intrinsic.cc (nds32_expand_priority_builtin): Likewise.
+ 	* config/nds32/nds32-isr.cc (nds32_emit_isr_vector_section): Likewise.
+ 	(nds32_asm_file_end_for_isr): Likewise.
+ 	* config/nds32/nds32-md-auxiliary.cc (output_cond_branch): Likewise.
+ 	(nds32_expand_cbranch): Likewise.
+ 	(nds32_expand_float_cstore): Likewise.
+ 	(nds32_expand_movcc): Likewise.
+ 	(nds32_output_stack_pop): Likewise.
+ 	(nds32_output_return): Likewise.
+ 	(nds32_split_sms): Likewise.
+ 	(nds32_legitimize_tls_address): Likewise.
+ 	* config/nds32/nds32-memory-manipulation.cc (nds32_expand_cpymemsi_unroll): Likewise.
+ 	(nds32_expand_load_multiple): Likewise.
+ 	* config/nds32/nds32-multiple.md: Likewise.
+ 	* config/nds32/nds32-n7.md: Likewise.
+ 	* config/nds32/nds32-n8.md: Likewise.
+ 	* config/nds32/nds32-n9-2r1w.md: Likewise.
+ 	* config/nds32/nds32-pipelines-auxiliary.cc (extract_nth_access_reg): Likewise.
+ 	(pbsada_insn_ra_rb_dep_reg_p): Likewise.
+ 	* config/nds32/nds32-predicates.cc (nds32_can_use_bset_p): Likewise.
+ 	(nds32_can_use_btgl_p): Likewise.
+ 	(nds32_symbol_load_store_p): Likewise.
+ 	* config/nds32/nds32-protos.h (nds32_cond_move_p): Likewise.
+ 	(nds32_mem_format): Likewise.
+ 	* config/nds32/nds32-relax-opt.cc (nds32_plus_reg_load_store_p): Likewise.
+ 	* config/nds32/nds32-utils.cc (extract_offset_rtx): Likewise.
+ 	* config/nds32/nds32.cc (nds32_compute_stack_frame): Likewise.
+ 	(nds32_emit_stack_pop_multiple): Likewise.
+ 	(nds32_emit_stack_v3pop): Likewise.
+ 	(nds32_can_change_mode_class): Likewise.
+ 	(nds32_arg_partial_bytes): Likewise.
+ 	(nds32_function_ok_for_sibcall): Likewise.
+ 	(nds32_register_move_cost): Likewise.
+ 	(nds32_print_operand): Likewise.
+ 	(nds32_merge_decl_attributes): Likewise.
+ 	(nds32_insert_attributes): Likewise.
+ 	(nds32_init_libfuncs): Likewise.
+ 	(nds32_expand_epilogue_v3pop): Likewise.
+ 	(nds32_can_use_return_insn): Likewise.
+ 	(nds32_target_alignment): Likewise.
+ 	(nds32_split_double_word_load_store_p): Likewise.
+ 	* config/nds32/nds32.h (enum nds32_builtins): Likewise.
+ 	(CASE_VECTOR_MODE): Likewise.
+ 	* config/nds32/nds32.md: Likewise.
+ 	* config/nds32/nds32_intrinsic.h (__attribute__): Likewise.
+ 	* config/nds32/nds32_isr.h: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/msp430/msp430-opts.h (enum msp430_cpu_types): Fix typos.
+ 	* config/msp430/msp430.cc (msp430_op_not_in_high_mem): Likewise.
+ 	* config/msp430/msp430.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/mingw/winnt-cxx.cc (i386_pe_adjust_class_at_definition): Fix
+ 	typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/microblaze/microblaze.cc (struct microblaze_frame_info): Fix
+ 	typos.
+ 	(compute_frame_size): Likewise.
+ 	* config/microblaze/microblaze.h: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/mcore/mcore.h: Fix typo.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/mips/driver-native.cc (host_detect_local_cpu): Fix typos.
+ 	* config/mips/mips-cpus.def (MIPS_CPU): Likewise.
+ 	* config/mips/mips.cc (mips_setup_incoming_varargs): Likewise.
+ 	(mips_function_ok_for_sibcall): Likewise.
+ 	(mips_expand_ext_as_unaligned_load): Likewise.
+ 	(mips_use_ins_ext_p): Likewise.
+ 	(mips_pop_asm_switch): Likewise.
+ 	(mips_cfun_has_inflexible_gp_ref_p): Likewise.
+ 	(mips_set_compression_mode): Likewise.
+ 	(mips_expand_vec_unpack): Likewise.
+ 	* config/mips/mips.h (while): Likewise.
+ 	* config/mips/mips.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/m68k/cf.md: Fix typos.
+ 	* config/m68k/m68k.cc (m68k_unwrap_symbol): Likewise.
+ 	(m68k_adjust_decorated_operand): Likewise.
+ 	(m68k_call_tls_get_addr): Likewise.
+ 	(m68k_call_m68k_read_tp): Likewise.
+ 	(m68k_sched_attr_size): Likewise.
+ 	(m68k_sched_dfa_post_advance_cycle): Likewise.
+ 	(sched_mem_operand_p): Likewise.
+ 	(m68k_sched_address_bypass_p): Likewise.
+ 	* config/m68k/m68kelf.h: Likewise.
+ 	* config/m68k/netbsd-elf.h (REGISTER_PREFIX): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/loongarch/lasx.md: Fix typos.
+ 	* config/loongarch/loongarch-builtins.cc: Likewise.
+ 	* config/loongarch/loongarch-c.cc (loongarch_pragma_target_parse): Likewise.
+ 	* config/loongarch/loongarch-opts.cc (loongarch_generate_mrecip_scheme): Likewise.
+ 	* config/loongarch/loongarch-opts.h (loongarch_config_target): Likewise.
+ 	* config/loongarch/loongarch.cc (loongarch_setup_incoming_varargs): Likewise.
+ 	(loongarch_build_integer): Likewise.
+ 	(loongarch_explicit_relocs_p): Likewise.
+ 	(loongarch_valid_lo_sum_p): Likewise.
+ 	(loongarch_addu16i_imm12_operand_p): Likewise.
+ 	(loongarch_rewrite_mem_for_simple_ldst): Likewise.
+ 	(loongarch_is_elem_duplicate): Likewise.
+ 	(loongarch_expand_vec_perm_const): Likewise.
+ 	(loongarch_sched_reassociation_width): Likewise.
+ 	(loongarch_expand_vec_unpack): Likewise.
+ 	(dispatch_function_versions): Likewise.
+ 	(loongarch_option_same_function_versions): Likewise.
+ 	* config/loongarch/loongarch.h: Likewise.
+ 	* config/loongarch/loongarch.md: Likewise.
+ 	* config/loongarch/lsx.md: Likewise.
+ 	* config/loongarch/predicates.md: Likewise.
+ 	* config/loongarch/simd.md: Likewise.
+ 	* config/loongarch/sync.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/lm32/lm32.cc (lm32_compute_frame_size): Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/ia64/ia64.cc (ia64_add_bundle_selector_before): Fix typos.
+ 	* config/ia64/itanium2.md: Likewise.
+ 	* config/ia64/sync.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/i386/athlon.md: Fix typos.
+ 	* config/i386/avx512fintrin.h: Likewise.
+ 	* config/i386/btver2.md: Likewise.
+ 	* config/i386/c86-4g-m7.md: Likewise.
+ 	* config/i386/c86-4g.md: Likewise.
+ 	* config/i386/cygwin.h: Likewise.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Likewise.
+ 	* config/i386/i386-expand.cc (ix86_expand_branch): Likewise.
+ 	(ix86_expand_int_sse_cmp): Likewise.
+ 	(ix86_expand_vec_perm): Likewise.
+ 	(expand_small_cpymem_or_setmem): Likewise.
+ 	(ix86_copy_addr_to_reg): Likewise.
+ 	(ix86_expand_special_args_builtin): Likewise.
+ 	(ix86_expand_vector_init_interleave): Likewise.
+ 	(expand_vec_perm_shufps_shufps): Likewise.
+ 	(ix86_expand_sse2_mulvxdi3): Likewise.
+ 	(ix86_gen_ccmp_first): Likewise.
+ 	* config/i386/i386-features.cc (general_scalar_to_vector_candidate_p): Likewise.
+ 	(pass_x86_cse::x86_cse): Likewise.
+ 	(ix86_apx_nf_convert): Likewise.
+ 	(dispatch_function_versions): Likewise.
+ 	* config/i386/i386-features.h (class scalar_chain): Likewise.
+ 	* config/i386/i386-options.cc (ix86_function_specific_restore): Likewise.
+ 	(ix86_valid_target_attribute_tree): Likewise.
+ 	(ix86_override_options_after_change_1): Likewise.
+ 	(ix86_option_override_internal): Likewise.
+ 	* config/i386/i386.cc (ix86_can_inline_p): Likewise.
+ 	(ix86_function_regparm): Likewise.
+ 	(construct_container): Likewise.
+ 	(ix86_return_in_memory): Likewise.
+ 	(output_indirect_thunk): Likewise.
+ 	(ix86_compute_frame_layout): Likewise.
+ 	(choose_basereg): Likewise.
+ 	(ix86_emit_save_reg_using_mov): Likewise.
+ 	(pro_epilogue_adjust_stack): Likewise.
+ 	(ix86_expand_prologue): Likewise.
+ 	(ix86_emit_restore_sse_regs_using_mov): Likewise.
+ 	(ix86_memory_address_reg_class): Likewise.
+ 	(ix86_avx_u128_mode_after): Likewise.
+ 	(ix86_output_addr_diff_elt): Likewise.
+ 	(ix86_lea_outperforms): Likewise.
+ 	(ix86_avoid_lea_for_addr): Likewise.
+ 	(ix86_cc_modes_compatible): Likewise.
+ 	(add_parameter_dependencies): Likewise.
+ 	(ix86_data_alignment): Likewise.
+ 	(ix86_gimple_fold_builtin): Likewise.
+ 	(ix86_autovectorize_vector_modes): Likewise.
+ 	(ix86_max_noce_ifcvt_seq_cost): Likewise.
+ 	(ix86_vector_costs::add_stmt_cost): Likewise.
+ 	(ix86_vector_costs::finish_cost): Likewise.
+ 	(ix86_optab_supported_p): Likewise.
+ 	(ix86_push_rounding): Likewise.
+ 	* config/i386/i386.h (host_detect_local_cpu): Likewise.
+ 	(enum reg_class): Likewise.
+ 	* config/i386/i386.md: Likewise.
+ 	* config/i386/i386elf.h: Likewise.
+ 	* config/i386/predicates.md: Likewise.
+ 	* config/i386/sse.md: Likewise.
+ 	* config/i386/x86-tune-costs.h (struct processor_costs): Likewise.
+ 	* config/i386/x86-tune-sched-atom.cc (swap_top_of_ready_list): Likewise.
+ 	(ix86_atom_sched_reorder): Likewise.
+ 	* config/i386/x86-tune-sched-bd.cc (find_constant): Likewise.
+ 	* config/i386/x86-tune-sched.cc (exact_store_load_dependency): Likewise.
+ 	* config/i386/x86-tune.def (X86_TUNE_FUSE_MOV_AND_ALU): Likewise.
+ 	(X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB): Likewise.
+ 	(X86_TUNE_DOUBLE_WITH_ADD): Likewise.
+ 	(X86_TUNE_PROMOTE_QIMODE): Likewise.
+ 	* config/i386/zn4zn5.md: Likewise.
+ 	* config/i386/znver.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/gcn/constraints.md: Fix typos.
+ 	* config/gcn/gcn-opts.h (TARGET_ARCHITECTED_FLAT_SCRATCH): Likewise.
+ 	* config/gcn/gcn-valu.md: Likewise.
+ 	* config/gcn/gcn.cc (gcn_gen_undef): Likewise.
+ 	(gcn_addr_space_debug): Likewise.
+ 	(gcn_expand_prologue): Likewise.
+ 	(gcn_frame_pointer_rqd): Likewise.
+ 	* config/gcn/gcn.h (NUM_PARM_REGS): Likewise.
+ 	(enum gcn_builtin_codes): Likewise.
+ 	* config/gcn/gcn.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/ft32/ft32.cc (ft32_init_machine_status): Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/frv/frv-opts.h: Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/fr30/fr30.cc (fr30_const_double_is_zero): Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/epiphany/epiphany.cc (epiphany_expand_epilogue): Fix typos.
+ 	* config/epiphany/resolve-sw-modes.cc: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/csky/csky.cc (csky_output_inline_const): Fix typos.
+ 	(emit_csky_regs_pop): Likewise.
+ 	(csky_return_in_memory): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/c6x/c6x.cc (c6x_file_start): Fix typos.
+ 	(c6x_print_operand_address): Likewise.
+ 	(c6x_asm_emit_except_personality): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/bpf/bpf.cc (bpf_asm_named_section): Fix typos.
+ 	* config/bpf/core-builtins.cc (remove_parser_plugin): Likewise.
+ 	(make_core_relo): Likewise.
+ 	(bpf_handle_plugin_finish_type): Likewise.
+ 	(bpf_output_core_reloc): Likewise.
+ 	(core_make_builtins): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/bfin/bfin.cc (bfin_function_ok_for_sibcall): Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* common/config/avr/avr-common.cc: Fix typos.
+ 	* config/avr/avr-passes.cc (size_to_mode): Likewise.
+ 	(struct absint_t): Likewise.
+ 	(plies_t::emit_sets): Likewise.
+ 	(avr_strict_unsigned_p): Likewise.
+ 	(avr_redundant_compare): Likewise.
+ 	(avr_optimize_casesi): Likewise.
+ 	(struct AVR_LdSt_Props): Likewise.
+ 	(avr_pass_split_nzb::split_nzb_insns): Likewise.
+ 	(make_avr_pass_fuse_move): Likewise.
+ 	* config/avr/avr.cc (avr_option_override): Likewise.
+ 	(avr_can_inline_p): Likewise.
+ 	(avr_expand_epilogue): Likewise.
+ 	(avr_init_cumulative_args): Likewise.
+ 	(reg_unused_after): Likewise.
+ 	(avr_out_lpm_no_lpmx): Likewise.
+ 	(avr_out_compare): Likewise.
+ 	(avr_out_plus_ext): Likewise.
+ 	(avr_out_fract): Likewise.
+ 	(avr_nonzero_bits_lsr_operands_p): Likewise.
+ 	* config/avr/avr.h (avr_no_devlib): Likewise.
+ 	(struct machine_function): Likewise.
+ 	* config/avr/avr.md: Likewise.
+ 	* config/avr/builtins.def (FLASH_SEGMENT): Likewise.
+ 	* config/avr/specs.h: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* common/config/arm/arm-common.cc (arm_config_default): Fix typos.
+ 	(arm_canon_arch_option_1): Likewise.
+ 	* config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Likewise.
+ 	* config/arm/arm-builtins.cc (MAC_LANE_PAIR_QUALIFIERS): Likewise.
+ 	(USMAC_LANE_QUADTUP_QUALIFIERS): Likewise.
+ 	* config/arm/arm-modes.def (ADJUST_FLOAT_FORMAT): Likewise.
+ 	* config/arm/arm-mve-builtins-base.cc: Likewise.
+ 	* config/arm/arm-mve-builtins-shapes.cc (struct binary_lshift_unsigned_def): Likewise.
+ 	(struct binary_maxamina_def): Likewise.
+ 	(struct viddup_def): Likewise.
+ 	(struct vidwdup_def): Likewise.
+ 	* config/arm/arm-protos.h (struct tune_params): Likewise.
+ 	* config/arm/arm.cc (arm_option_override_internal): Likewise.
+ 	(arm_option_override): Likewise.
+ 	(optimal_immediate_sequence_1): Likewise.
+ 	(arm_pcs_from_attribute): Likewise.
+ 	(aapcs_vfp_advance): Likewise.
+ 	(aapcs_layout_arg): Likewise.
+ 	(arm_init_cumulative_args): Likewise.
+ 	(arm_rtx_costs_internal): Likewise.
+ 	(mve_bool_vec_to_const): Likewise.
+ 	(operands_ok_ldrd_strd): Likewise.
+ 	(emit_multi_reg_push): Likewise.
+ 	(arm_emit_vfp_multi_reg_pop): Likewise.
+ 	(thumb2_emit_ldrd_pop): Likewise.
+ 	(arm_print_condition): Likewise.
+ 	(get_arm_condition_code): Likewise.
+ 	(thumb_pop): Likewise.
+ 	(arm_print_asm_arch_directives): Likewise.
+ 	(arm_debugger_regno): Likewise.
+ 	(arm_target_bb_ok_for_lob): Likewise.
+ 	(arm_mve_load_store_insn_p): Likewise.
+ 	(arm_mve_check_reg_origin_is_num_elems): Likewise.
+ 	(arm_mve_dlstp_check_dec_counter): Likewise.
+ 	(arm_mve_loop_valid_for_dlstp): Likewise.
+ 	(arm_loop_unroll_adjust): Likewise.
+ 	* config/arm/arm.h (ROUND_UP_WORD): Likewise.
+ 	* config/arm/arm.md: Likewise.
+ 	* config/arm/constraints.md: Likewise.
+ 	* config/arm/cortex-a17-neon.md: Likewise.
+ 	* config/arm/cortex-r4f.md: Likewise.
+ 	* config/arm/crypto.md: Likewise.
+ 	* config/arm/elf.h: Likewise.
+ 	* config/arm/fa726te.md: Likewise.
+ 	* config/arm/iterators.md: Likewise.
+ 	* config/arm/neon.md: Likewise.
+ 	* config/arm/thumb1.md: Likewise.
+ 	* config/arm/uclinuxfdpiceabi.h: Likewise.
+ 	* config/arm/unspecs.md: Likewise.
+ 	* config/arm/vec-common.md: Likewise.
+ 	* config/arm/vxworks.h (STACK_CHECK_PROTECT): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/arc/arc-arch.h (enum base_architecture): Fix typos.
+ 	* config/arc/arc-cpus.def: Likewise.
+ 	* config/arc/arc.cc (legitimate_small_data_address_p): Likewise.
+ 	(legitimate_scaled_address_p): Likewise.
+ 	(get_arc_condition_code): Likewise.
+ 	(arc_setup_incoming_varargs): Likewise.
+ 	(pop_reg): Likewise.
+ 	(arc_restore_callee_leave): Likewise.
+ 	(arc_asm_trampoline_template): Likewise.
+ 	(arc_add_jli_section): Likewise.
+ 	(arc_invalid_within_doloop): Likewise.
+ 	(arc_reorg): Likewise.
+ 	(conditionalize_nonjump): Likewise.
+ 	(arc_eh_uses): Likewise.
+ 	(arc_memory_move_cost): Likewise.
+ 	* config/arc/arc.h (TARGET_CPU_CPP_BUILTINS): Likewise.
+ 	(TARGET_PAD_RETURN): Likewise.
+ 	(arc_select_cc_mode): Likewise.
+ 	* config/arc/arc.md: Likewise.
+ 	* config/arc/arc.opt: Likewise.
+ 	* config/arc/arc700.md: Likewise.
+ 	* config/arc/elf.h (TARGET_ASM_FILE_END): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/alpha/alpha.cc (alpha_pass_by_reference): Fix typos.
+ 	(alpha_reorg): Likewise.
+ 	* config/alpha/predicates.md: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* common/config/aarch64/aarch64-common.cc (aarch64_parse_cpu): Fix
+ 	typos.
+ 	* common/config/aarch64/cpuinfo.h: Likewise.
+ 	* config/aarch64/aarch64-builtins.cc: Likewise.
+ 	* config/aarch64/aarch64-c.cc (aarch64_pragma_target_parse): Likewise.
+ 	* config/aarch64/aarch64-modes.def (FLOAT_MODE): Likewise.
+ 	* config/aarch64/aarch64-simd.md: Likewise.
+ 	* config/aarch64/aarch64-speculation.cc: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-functions.h: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc (struct binary_za_m_def): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.cc (function_builder::add_function): Likewise.
+ 	* config/aarch64/aarch64-sve.md: Likewise.
+ 	* config/aarch64/aarch64-sve2.md: Likewise.
+ 	* config/aarch64/aarch64.cc (aarch64_init_sysregs): Likewise.
+ 	(aarch64_load_symref_appropriately): Likewise.
+ 	(aarch64_output_sve_cnt_immediate): Likewise.
+ 	(aarch64_replace_reg_mode): Likewise.
+ 	(aarch64_pass_by_reference_1): Likewise.
+ 	(aarch64_layout_arg): Likewise.
+ 	(aarch64_allocate_and_probe_stack_space): Likewise.
+ 	(aarch64_legitimize_address_displacement): Likewise.
+ 	(aarch64_output_casesi): Likewise.
+ 	(aarch64_stp_sequence_cost): Likewise.
+ 	(aarch64_vector_costs::add_stmt_cost): Likewise.
+ 	(aarch64_override_options): Likewise.
+ 	(aarch64_functions_b_resolvable_from_a): Likewise.
+ 	(dispatch_function_versions): Likewise.
+ 	(aarch64_can_inline_p): Likewise.
+ 	(aarch64_classify_symbol): Likewise.
+ 	(aarch64_build_builtin_va_list): Likewise.
+ 	(aarch64_sve_pred_valid_immediate): Likewise.
+ 	(aarch64_simd_lane_bounds): Likewise.
+ 	(aarch64_expand_vector_init_fallback): Likewise.
+ 	(aarch64_modes_compatible_p): Likewise.
+ 	(aarch64_ldrstr_offset_compare): Likewise.
+ 	(aarch64_speculation_safe_value): Likewise.
+ 	* config/aarch64/aarch64.h (DEFAULT_PCC_STRUCT_RETURN): Likewise.
+ 	(struct GTY): Likewise.
+ 	* config/aarch64/aarch64.md: Likewise.
+ 	* config/aarch64/aarch64.opt: Likewise.
+ 	* config/aarch64/arm_bf16.h: Likewise.
+ 	* config/aarch64/arm_neon.h (vbslq_u64): Likewise.
+ 	* config/aarch64/cortex-a57-fma-steering.cc: Likewise.
+ 	* config/aarch64/driver-aarch64.cc (get_cpu_from_id): Likewise.
+ 	(host_detect_local_cpu): Likewise.
+ 	* config/aarch64/iterators.md: Likewise.
+ 	* config/aarch64/thunderx.md: Likewise.
+ 	* config/aarch64/thunderx3t110.md: Likewise.
+ 
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* configure: Regenerate.
+ 
+ 2026-06-01  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* config/i386/i386.h (TARGET_ENABLE_NDD_MEM): New.
+ 	* config/i386/x86-tune.def (X86_TUNE_ENABLE_NDD_MEM): New.
+ 	* config/i386/i386.md (*add<dwi>3_doubleword): Split NDD rm
+ 	to r,m and add preferred_for_speed for NDD memory alternatives.
+ 	(*add<dwi>3_doubleword_zext): Likewise.
+ 	(*add<mode>_1<nf_name>): Likewise.
+ 	(addsi_1_zext): Likewise.
+ 	(*addhi_1<nf_name>): Likewise.
+ 	(*addqi_1<nf_name>): Likewise.
+ 	(*add<mode>_2): Likewise.
+ 	(*addsi_2_zext): Likewise.
+ 	(*add<mode>_3): Likewise.
+ 	(*addsi_3_zext): Likewise.
+ 	(*add<mode>_5): Likewise.
+ 	(*addv<mode>4): Likewise.
+ 	(addv<mode>4_1): Likewise.
+ 	(*addv<dwi>4_doubleword_1): Likewise.
+ 	(*addv<mode>4_overflow_1): Likewise.
+ 	(*addv<mode>4_overflow_2): Likewise.
+ 	(*sub<dwi>3_doubleword): Likewise.
+ 	(*sub<dwi>3_doubleword_zext): Likewise.
+ 	(*sub<mode>_1<nf_name>): Likewise.
+ 	(*subsi_1_zext): Likewise.
+ 	(*sub<mode>_2): Likewise.
+ 	(*subsi_2_zext): Likewise.
+ 	(*subv<mode>4): Likewise.
+ 	(subv<mode>4_1): Likewise.
+ 	(*subv<dwi>4_doubleword_1): Likewise.
+ 	(*subv<mode>4_overflow_1): Likewise.
+ 	(*subv<mode>4_overflow_2): Likewise.
+ 	(*sub<mode>_3): Likewise.
+ 	(*subsi_3_zext): Likewise.
+ 	(@add<mode>3_carry): Likewise.
+ 	(*add<mode>3_carry_2): Likewise.
+ 	(*addsi3_carry_zext): Likewise.
+ 	(*addsi3_carry_zext_0): Likewise.
+ 	(*addsi3_carry_zext_0r): Likewise.
+ 	(addcarry<mode>): Likewise.
+ 	(*addcarry<mode>_1): Likewise.
+ 	(@sub<mode>3_carry): Likewise.
+ 	(*sub<mode>3_carry_2): Likewise.
+ 	(*subsi3_carry_zext): Likewise.
+ 	(*subsi3_carry_zext_0): Likewise.
+ 	(*subsi3_carry_zext_0r): Likewise.
+ 	(subborrow<mode>): Likewise.
+ 	(*subborrow<mode>_1): Likewise.
+ 	(*add<mode>3_cconly_overflow_1): Likewise.
+ 	(@add<mode>3_cc_overflow_1): Likewise.
+ 	(*addsi3_zext_cc_overflow_1): Likewise.
+ 	(*add<mode>3_cconly_overflow_2): Likewise.
+ 	(*add<mode>3_cc_overflow_2): Likewise.
+ 	(*addsi3_zext_cc_overflow_2): Likewise.
+ 	(*mul<mode>3_1<nf_name>): Likewise.
+ 	(*mulsi3_1_zext<nf_name>): Likewise.
+ 	(*mulv<mode>4): Likewise.
+ 	(*mulvhi4): Likewise.
+ 	(*and<dwi>3_doubleword): Likewise.
+ 	(*anddi_1<nf_name>): Likewise.
+ 	(*andsi_1_zext): Likewise.
+ 	(*andqi_1<nf_name>): Likewise.
+ 	(*anddi_2): Likewise.
+ 	(*andsi_2_zext): Likewise.
+ 	(*andqi_2_maybe_si): Likewise.
+ 	(*and<mode>_2): Likewise.
+ 	(*<code><dwi>3_doubleword): Likewise.
+ 	(*<code><mode>_1<nf_name>): Likewise.
+ 	(*notxor<mode>_1): Likewise.
+ 	(*<code>si_1_zext): Likewise.
+ 	(*<code>si_1_zext_imm): Likewise.
+ 	(*<code>qi_1<nf_name>): Likewise.
+ 	(*notxorqi_1): Likewise.
+ 	(*<code><mode>_2): Likewise.
+ 	(*<code>si_2_zext): Likewise.
+ 	(*<code>si_2_zext_imm): Likewise.
+ 	(*neg<dwi>2_doubleword): Likewise.
+ 	(*neg<mode>_1<nf_name>): Likewise.
+ 	(*negsi_1_zext): Likewise.
+ 	(*neg<mode>_2): Likewise.
+ 	(*negsi_2_zext): Likewise.
+ 	(*neg<mode>_ccc_1): Likewise.
+ 	(*neg<mode>_ccc_2): Likewise.
+ 	(*one_cmpl<dwi>2_doubleword): Likewise.
+ 	(*one_cmpl<mode>2_1): Likewise.
+ 	(*one_cmplsi2_1_zext): Likewise.
+ 	(*one_cmplqi2_1): Likewise.
+ 	(*one_cmpl<mode>2_2): Likewise.
+ 	(*one_cmplsi2_2_zext): Likewise.
+ 	(*ashl<dwi>3_doubleword_highpart): Likewise.
+ 	(*ashl<mode>3_1<nf_name>): Likewise.
+ 	(*ashlsi3_1_zext): Likewise.
+ 	(*ashlhi3_1<nf_name>): Likewise.
+ 	(*ashlqi3_1<nf_name>): Likewise.
+ 	(*ashl<mode>3_cmp): Likewise.
+ 	(*ashlsi3_cmp_zext): Likewise.
+ 	(*ashl<mode>3_cconly): Likewise.
+ 	(ashr<mode>3_cvt<nf_name>): Likewise.
+ 	(*ashrsi3_cvt_zext): Likewise.
+ 	(*ashr<mode>3_1<nf_name>): Likewise.
+ 	(*highpartdisi2): Likewise.
+ 	(*lshr<mode>3_1<nf_name>): Likewise.
+ 	(*<insn>si3_1_zext): Likewise.
+ 	(*lshrqi3_1<nf_name>): Likewise.
+ 	(*lshrhi3_1<nf_name>): Likewise.
+ 	(*<insn><mode>3_cmp): Likewise.
+ 	(*<insn>si3_cmp_zext): Likewise.
+ 	(*<insn><mode>3_cconly): Likewise.
+ 	(*<insn><mode>3_1<nf_name>): Likewise.
+ 	(*<insn>si3_1_zext): Likewise.
+ 	(rcrsi2): Likewise.
+ 	(rcrdi2): Likewise.
+ 	(<insn><mode>3_carry): Likewise.
+ 	(*mov<mode>cc_noc): Likewise.
+ 	(*movsicc_noc_zext): Likewise.
+ 	(*movsicc_noc_zext_1): Likewise.
+ 	(*addqi3_carry_zext<mode>_0): Likewise.
+ 	(*addhi3_carry_zext<mode>_0): Likewise.
+ 	(*addqi3_carry_zext<mode>_0r): Likewise.
+ 	(*addhi3_carry_zext<mode>_0r): Likewise.
+ 	(*subqi3_carry_zext<mode>_0): Likewise.
+ 	(*subhi3_carry_zext<mode>_0): Likewise.
+ 	(*subqi3_carry_zext<mode>_0r): Likewise.
+ 	(*subhi3_carry_zext<mode>_0r): Likewise.
+ 	(*negqi_1_zext<mode><nf_name>): Likewise.
+ 	(*neghi_1_zext<mode><nf_name>): Likewise.
+ 	(*one_cmplqi2_1_zext<mode>): Likewise.
+ 	(*one_cmplhi2_1_zext<mode>): Likewise.
+ 	(x86_64_shld_ndd<nf_name>): Likewise.
+ 	(x86_64_shld_ndd_1<nf_name>): Likewise.
+ 	(x86_shld_ndd<nf_name>): Likewise.
+ 	(x86_shld_ndd_1<nf_name>): Likewise.
+ 	(*ashlqi3_1_zext<mode><nf_name>): Likewise.
+ 	(*ashlhi3_1_zext<mode><nf_name>): Likewise.
+ 	(x86_64_shrd_ndd<nf_name>): Likewise.
+ 	(x86_64_shrd_ndd_1<nf_name>): Likewise.
+ 	(x86_shrd_ndd<nf_name>): Likewise.
+ 	(x86_shrd_ndd_1<nf_name>): Likewise.
+ 	(*<insn>qi3_1_zext<mode><nf_name>): Likewise.
+ 	(*<insn>hi3_1_zext<mode><nf_name>): Likewise.
+ 	* config/i386/sse.md
+ 	(*kortest_cmp<mode>_mov<mode>cc): Add
+ 	preferred_for_speed for NDD memory alternatives.
+ 
+ 2026-06-01  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_DISABLE_SETZUCC): New.
+ 	Enable for m_DIAMONDRAPIDS | m_NOVALAKE.
+ 	* config/i386/i386.h (TARGET_DISABLE_SETZUCC): New define.
+ 	* config/i386/i386.md (*setcc_<mode>_zu): Guard with
+ 	TARGET_APX_ZU && !TARGET_DISABLE_SETZUCC.
+ 	(*setcc_di_1, *setcc_<mode>_1_movzbl): Guard with
+ 	(!TARGET_APX_ZU || TARGET_DISABLE_SETZUCC).
+ 	(*setcc_qi, *setcc_qi_slp): Emit setzucc only when
+ 	TARGET_APX_ZU && !TARGET_DISABLE_SETZUCC.
+ 
+ 2026-06-01  Martin Liska  <martin.liska@hey.com>
+ 
+ 	* configure.ac: Declare Wild as capable of LTO bootstrap.
+ 	* configure: Regenerate.
+ 
+ 2026-05-31  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/23471
+ 	PR tree-optimization/125513
+ 	* range-op-mixed.h (operator_mult): Add op1_op2_relation_effect
+ 	for 2xirange.
+ 	* range-op.cc (operator_mult::op1_op2_relation_effect): New function.
+ 
+ 2026-05-31  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/123313
+ 	* ifcvt.cc (noce_try_store_flag_logical): New function.
+ 	(noce_process_if_block): Call it.
+ 
+ 2026-05-31  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* doc/invoke.texi (AVR Options): Fix overly long URLs.
+ 	* doc/extend.texi (Specifying the size of an asm on AVR): Dito.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* common.opt: Updated Wstrict-overflow entries to indicate that
+ 	they do nothing now.
+ 	* coretypes.h (enum warn_strict_overflow_code): Enum removed.
+ 	* doc/invoke.texi: Updated Wstrict-overflow entries to indicate
+ 	that they do nothing now.  Also removed the option from the
+ 	"Warning Options" list.
+ 	* opts.cc (common_handle_option): Removed OPT_Wstrict_overflow
+ 	logic.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* flags.h (issue_strict_overflow_warning): Removed.
+ 	* fold-const.cc (fold_defer_overflow_warnings): Removed.
+ 	(fold_undefer_overflow_warnings): Removed.
+ 	(fold_undefer_and_ignore_overflow_warnings): Removed.
+ 	(fold_deferring_overflow_warnings_p): Removed.
+ 	* fold-const.h (fold_defer_overflow_warnings): Removed.
+ 	(fold_undefer_overflow_warnings): Removed.
+ 	(fold_undefer_and_ignore_overflow_warnings): Removed.
+ 	(fold_deferring_overflow_warnings_p): Removed.
+ 	* gimple-fold.cc (fold_stmt_1): Removed
+ 	fold_*_overflow_warnings uses and all related logic.
+ 	* passes.cc (verify_interpass_invariants): Likewise.
+ 	(execute_one_ipa_transform_pass): Likewise.
+ 	(execute_one_pass): Likewise.
+ 	* tree-cfgcleanup.cc (cleanup_control_expr_graph): Likewise.
+ 	* tree-data-ref.cc (create_runtime_alias_checks): Likewise.
+ 	* tree-ssa-ccp.cc (evaluate_stmt): Likewise.
+ 	* tree-ssa-forwprop.cc (combine_cond_expr_cond): Likewise.
+ 	* tree-ssa-loop-niter.cc (expand_simple_operations): Likewise.
+ 	(number_of_iterations_exit_assumptions): Likewise.
+ 	(loop_niter_by_eval): Likewise.
+ 	(estimate_numbers_of_iterations): Likewise.
+ 	(loop_exits_before_overflow): Likewise.
+ 	* tree-ssa-threadedge.cc: Likewise.
+ 	* tree-vrp.cc (compare_values): Likewise.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* tree-ssa-loop-ch.cc (ch_base::copy_headers): Removed
+ 	warn_strict_overflow logic.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* expr.cc (maybe_optimize_sub_cmp_0): Removed warning_at () call
+ 	for Wstrict-overflow comparison.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* tree-vrp.cc (compare_values_warnv): Removed.
+ 	(compare_values): Changed to do the same thing as the former
+ 	compare_values_warn but without the strict_overflow_p logic.
+ 	* tree-vrp.h (compare_values_warnv): Removed.
+ 	* vr-values.cc (test_for_singularity): Removed the
+ 	supress_warning logic that was used by compare_values_warnv.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* tree-ssa-reassoc.cc (init_range_entry): Removed
+ 	strict_overflow_p use.
+ 	(force_into_ssa_name): Likewise.
+ 	(update_range_test): Removed strict_overflow_p from function
+ 	signature, along with the flag associated logic and the
+ 	warning_at call.
+ 	(optimize_range_tests_xor): Removed strict_overflow_p use.
+ 	(optimize_range_tests_diff): Likewise.
+ 	(optimize_range_tests_to_bit_test): Likewise.
+ 	(optimize_range_tests_cmp_bitwise): Likewise.
+ 	(optimize_range_tests_var_bound): Removed strict_overflow_p from
+ 	function signature, along with the flag associated logic and the
+ 	warning_at call.
+ 	(optimize_range_tests): Removed strict_overflow_p use.
+ 	* tree-ssa-reassoc.h (struct range_entry): Removed
+ 	strict_overflow_p flag.
+ 
+ 2026-05-31  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.cc (avr_length_of_asm): Support "nl" as
+ 	the number of lines in the code template.
+ 	* doc/extend.texi (Size of an asm): Document [[len=nl]].
+ 	Simplify the description of the default length.
+ 
+ 2026-05-31  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.cc (pa_trampoline_init): Rework to use
+ 	clear_cache pattern.
+ 	* config/pa/pa.md (dcacheflush): Use "<<" condition instead
+ 	of "<<=".
+ 	(icacheflush): Remove.
+ 	(icacheflush1, icacheflush2, icacheflush3): New flush patterns
+ 	for PA 1.x targets, PA 2.0 targets, and PA 1.x no space
+ 	register targets.
+ 	(clear_cache): Rework to flush data and instruction caches.
+ 	Skip flush if the start address is greater than or equal to
+ 	the end address.  Don't align the end address to a cacheline
+ 	boundary.  Handle instruction flushes for PA 1.x targets,
+ 	PA 2.0 targets, and PA 1.x no space register targets.
+ 
  2026-05-30  Jeff Law  <jeffrey.law@oss.qualcomm.com>
  
  	* config/m68k/m68k.h (ASM_PREFERRED_EH_DATA_FORMAT): Avoid
diff -Nrcpad gcc-17-20260531/gcc/DATESTAMP gcc-17-20260607/gcc/DATESTAMP
*** gcc-17-20260531/gcc/DATESTAMP	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/DATESTAMP	Sun Jun  7 22:32:05 2026
***************
*** 1 ****
! 20260531
--- 1 ----
! 20260604
diff -Nrcpad gcc-17-20260531/gcc/ada/ChangeLog gcc-17-20260607/gcc/ada/ChangeLog
*** gcc-17-20260531/gcc/ada/ChangeLog	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/ChangeLog	Sun Jun  7 22:32:05 2026
***************
*** 1,3 ****
--- 1,433 ----
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Validate
+ 	a known alignment on the object even if there is an address clause.
+ 
+ 2026-06-02  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_to_gnu) <N_Exit_Statement>: Mark
+ 	the label tree as used.
+ 	(gnat_gimplify_stmt) <LOOP_STMT>: Do not emit end label
+ 	definition in unused.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Do not
+ 	give the warning about too large a size here but...
+ 	* gcc-interface/utils2.cc (build_allocator): ...here instead.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Record_Type>: Do not
+ 	derive the layout of C-compatible unchecked union types.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (components_to_record): Tweak comment.
+ 	(build_position_list): Deal with unchecked union types.
+ 	(build_variant_list): Likewise.
+ 	(get_variant_part): Likewise.
+ 	(create_variant_part_from): Likewise.
+ 	(copy_and_substitute_in_layout): Likewise.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Record_Subtype>: Do
+ 	not repeat conditions in chained tests.
+ 	(copy_and_substitute_in_layout): For a tagged subtype, inherit the
+ 	non-stored dicriminants from the old type explicitely.
+ 	* gcc-interface/trans.cc (gnat_to_gnu): Exclude more contexts for
+ 	the transformation of boolean rvalues.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/89609
+ 	* gcc-interface/gigi.h (adjust_result_decl_for_invisible_reference):
+ 	New inline function.
+ 	* gcc-interface/decl.cc (update_profile): Adjust the RESULT_DECL of
+ 	the function if it returns by invisible reference.
+ 	* gcc-interface/trans.cc (Subprogram_Body_to_gnu): Replace manual
+ 	adjustment by a call to adjust_result_decl_for_invisible_reference.
+ 	(maybe_make_gnu_thunk): Likewise.
+ 	* gcc-interface/targtyps.cc: Include stor-layout.h header file.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.cc (maybe_pad_type): Propagate the flag
+ 	TYPE_REVERSE_STORAGE_ORDER from the inner type to the record type
+ 	if the former is also an aggregate type.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* accessibility.adb (Apply_Accessibility_Check_For_Return): Bail out
+ 	for the return synthesized in a function with _Wrapped_Statements.
+ 
+ 2026-06-02  Tom Tromey  <tromey@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ 	(GNATLLVM): Remove note about nested functions.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2026-06-02  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not disable
+ 	expander if body comes from an expression function.
+ 
+ 2026-06-02  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Remove overflow supression
+ 	workaround.
+ 
+ 2026-06-02  Viljar Indus  <indus@adacore.com>
+ 
+ 	* rtsfind.adb (Maybe_Add_With): Ensure conistent Implicit_With nodes
+ 	traversal after ignored ghost nodes have been removed.
+ 	Omit checks on ignored WITH clauses.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* krunch.ads: Fix a few typos in the description.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gen_il-gen-gen_entities.adb (Access_Kind): Add Root_Type_Only for
+ 	the Master_Id field.
+ 	* einfo.ads (Master_Id): Document that it lives on root types only.
+ 	* accessibility.adb (Apply_Accessibility_Check_For_Allocator): Avoid
+ 	generating secondary useless checks.
+ 	* exp_ch3.adb (Build_Initialization_Call): Use the Master_Id of the
+ 	type of target reference directly.
+ 	(Build_Master): Minor tweak.
+ 	(Expand_N_Full_Type_Declaration): Do not call Build_Master for a
+ 	derived access type declaration.
+ 	* exp_ch4.adb (Expand_N_Allocator): Test Master_Id directly on the
+ 	access type.
+ 	* sem_res.adb (Resolve_Actuals): In the case of an allocator, if the
+ 	designated type is a CW interface, call Convert_To_And_Rewrite to
+ 	add the special conversion but nevertheless resolve the allocator to
+ 	the type of the formal afterward; do not establish a transient scope
+ 	if the type is a named access type.
+ 
+ 2026-06-02  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/s-os_lib.adb (Get_Debuggable_Suffix, Get_Executable_Suffix,
+ 	Get_Object_Suffix, Get_Target_Debuggable_Suffix,
+ 	Get_Target_Executable_Suffix, Get_Target_Object_Suffix): Access strings
+ 	like we do in Gnatlink.
+ 	* adaint.c (__gnat_object_suffix, __gnat_executable_suffix,
+ 	__gnat_debuggable_suffix): Now constants, just like the ones for target
+ 	suffixes.
+ 
+ 2026-06-02  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sinfo.ads <Expression_Copy>: Mention it is present in
+ 	N_Aspect_Specification nodes.
+ 	<N_Aspect_Specification>: Add Expression_Copy field.
+ 
+ 2026-06-02  Mathias Aparicio  <aparicio@adacore.com>
+ 
+ 	* env.c (__gnat_setenv): Add _POSIX_VERSION >= 200112L to setenv
+ 	availability check.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix a
+ 	couple of glitches.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2026-06-02  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch3.adb (Copy_Parent_Attributes): Inherit Linker_Section_Pragma.
+ 
+ 2026-06-02  Sebastian Poeplau  <poeplau@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Mention
+ 	inline assembler limitations.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2026-06-02  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* adaint.c, adaint.h (__gnat_to_gm_time): Adapt C side, while keeping
+ 	the explicit conversion to time_t, if this ever needs to be debugged.
+ 	* libgnat/s-os_lib.adb (To_GM_Time): Adapt Ada side.
+ 
+ 2026-06-02  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/a-calend.adb (localtime_tzoff): Simplify interface.
+ 	* sysdep.c (__gnat_localtime_tzoff): Remove duplicated specs; pass
+ 	"in" parameters via copy and "out" parameters via pointers.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/42413
+ 	* exp_ch4.adb (Process_Transients_In_Expression): Deal with a task
+ 	activation chain present in the statement list.
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context): Also
+ 	establish a transient scope if the result type has tasks.
+ 	* exp_ch7.adb (Make_Transient_Block): Deal with Has_Master_Entity
+ 	and Has_Activation_Chain_Entity set on the transient scope.
+ 	* exp_ch9.ads (Make_Task_Activation_Call): New declaration from...
+ 	* exp_ch9.adb (Make_Task_Activation_Call): ...here.
+ 	(Build_Activation_Chain_Entity): Deal with transient scopes.
+ 	(Build_Master_Entity): Likewise.
+ 	(Find_Enclosing_Context): Likewise.
+ 	* sem_elab.adb (Activation_Processor.Process_Activation): Deal with
+ 	N_Expression_With_Actions nodes.
+ 	* sem_util.adb (Current_Entity_In_Scope): Prevent transient scopes
+ 	from being transparent for _Chain and _Master entities.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/42413
+ 	* exp_aggr.adb (Build_Record_Aggr_Code): Minor tweak.
+ 	* exp_ch9.adb (Make_Task_Activation_Call): New helper function.
+ 	(Build_Activation_Chain_Entity): Streamline.
+ 	(Build_Master_Entity): Rename local variable.
+ 	(Build_Task_Activation_Call): Call Make_Task_Activation_Call.
+ 	(Build_Task_Allocate_Block): Likewise.  Set Is_Task_Allocation_Block
+ 	separately after having created the block.
+ 	* gen_il-gen-gen_nodes.adb (N_Block_Statement): Change the category
+ 	of Is_Task_Allocation_Block flag from syntactic to semantic.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/42413
+ 	* gen_il-fields.ads (Opt_Field_Enum): Remove Activation_Chain_Entity
+ 	and add Has_Activation_Chain_Entity.
+ 	* gen_il-gen-gen_entities.adb (Entity_Kind): Add new semantic flag
+ 	Has_Activation_Chain_Entity.
+ 	* gen_il-gen-gen_nodes.adb (N_Subprogram_Body): Remove
+ 	Activation_Chain_Entity field.
+ 	(N_Task_Body): Likewise.
+ 	(N_Package_Declaration): Likewise.
+ 	(N_Block_Statement): Likewise.
+ 	(N_Extended_Return_Statement): Likewise.
+ 	(N_Entry_Body): Likewise.
+ 	* einfo.ads (Has_Activation_Chain_Entity): Document new flag.
+ 	* sinfo.ads (Activation_Chain_Entity): Delete documentation.
+ 	* exp_ch9.adb (Build_Activation_Chain_Entity): Replace uses of
+ 	Activation_Chain_Entity by Has_Activation_Chain_Entity.
+ 	(Build_Task_Activation_Call): Retrieve the activation chain entity
+ 	by means of new helper function Activation_Chain_Entity.
+ 	(Build_Task_Allocate_Block): Set Has_Activation_Chain_Entity in
+ 	lieu of Activation_Chain_Entity.
+ 	(Expand_N_Task_Body): Likewise.
+ 	(Find_Enclosing_Context): Fix handling of N_Entry_Body.
+ 	* sem_ch7.adb (May_Need_Implicit_Body): Replace test on
+ 	Activation_Chain_Entity by Has_Activation_Chain_Entity.
+ 
+ 2026-06-02  Viljar Indus  <indus@adacore.com>
+ 
+ 	* exp_ch7.adb (Processing_Actions): Avoid processing
+ 	ignored ghost declarations.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/18205
+ 	* exp_attr.adb (Rewrite_Attribute_Proc_Call): Skip the conversion to
+ 	the formal type only if the actual is of a class-wide type. Generate
+ 	a dispatching call when both the prefix is a class-wide type and the
+ 	subprogram is a dispatching operation.
+ 	(Expand_N_Attribute_Reference) <Input>: Use U_Type consistently and
+ 	remove an useless invocation of Root_Type.
+ 	<Put_Image>: Minor comment tweak.
+ 	<Read>: Likewise.
+ 	<Write>: Likewise.
+ 
+ 2026-06-02  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sysdep.c (getc_immediate_common): Cleanup macro test.
+ 
+ 2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_util.ads (Partially_Visible_Subcomponent): Rename into ...
+ 	(Partially_Visible_Part): ...this. Improve documentation.
+ 	* sem_util.adb: Likewise.
+ 	* sem_ch3.adb (Analyze_Component_Declaration,
+ 	Array_Type_Declaration): Adapt to renaming.
+ 	* sem_ch7.adb (Install_Composite_Operations): Likewise.
+ 
+ 2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* einfo.ads (Contains_Ignored_Ghost_Code): Remove documentation.
+ 
+ 2026-06-02  Mathias Aparicio  <aparicio@adacore.com>
+ 
+ 	* sem_util.adb (Has_Assertion_Level_Argument): Invert the final
+ 	check in aspect branch and the check in pragma branch to use
+ 	early returns for consistency.
+ 
+ 2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* par.adb, par-util.adb (Check_Bad_Layout_At): New procedure.
+ 	* par-ch3.adb (P_Declarative_Item): Use new procedure.
+ 	* par-ch5.adb (P_Sequence_Of_Statements): Likewise.
+ 
+ 2026-06-02  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_util.adb (Has_Assertion_Level_Argument): Check for
+ 	the correct type of association.
+ 
+ 2026-06-02  Viljar Indus  <indus@adacore.com>
+ 
+ 	* err_vars.ads (Error_Msg_Qual_For_Standard): New Variable.
+ 	* errout.ads (Error_Msg_Qual_For_Standard): Likewise.
+ 	* errout.adb (Set_Qualification): Print all qualified names
+ 	when Error_Msg_Qual_For_Standard is set.
+ 	* sem_util.adb (Normalize_Actuals): Improve error message.
+ 
+ 2026-06-02  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_util.adb (Normalize_Actuals): Improve error message.
+ 
+ 2026-06-02  Mathias Aparicio  <aparicio@adacore.com>
+ 
+ 	* env.c (__gnat_setenv): Add __linux__ preprocessor macro
+ 	directive to the setenv block.
+ 
+ 2026-06-02  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Equality_Op): Use Underlying_Type to
+ 	look through the private view before checking Is_Record_Type and
+ 	Is_Limited_Record.
+ 	* sem_ch3.adb (Process_Full_View): After completing the full view,
+ 	re-check any primitive equality operators on the private type
+ 	against SPARK RM 6.9(23) via Check_Ghost_Equality_Op.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch9.ads (Build_Task_Allocate_Block): Change return type.
+ 	* exp_ch9.adb (Build_Task_Allocate_Block): Likewise.  Build an
+ 	internal block entity instead of declaring an implicit label.
+ 	* exp_aggr.adb (Convert_Aggr_In_Allocator): Adjust to above change.
+ 	* exp_ch4.adb (Expand_N_Allocator): Likewise.
+ 	* exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call): Add default
+ 	value for Master_Actual parameter, change name of 4th parameter to
+ 	Chain_Actual and deal with them consistently.
+ 	(Make_Build_In_Place_Call_In_Allocator): Flatten block statement.
+ 	Adjust call to Add_Task_Actuals_To_Build_In_Place_Call.
+ 	(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.
+ 	* exp_ch7.adb (Build_Cleanup_Statements): Minor tweak.
+ 
+ 2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_aux.ads: Add note.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem.ads (Suppress_Stack_Entry): Move down Suppress component.
+ 	(Scope_Stack_Entry): Reorder components to eliminate holes.
+ 
+ 2026-06-02  Tom Tromey  <tromey@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ 	(GNATLLVM): Update debugging documentation.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2026-06-02  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch13.adb
+ 	(Insert_Aitem): Remove Ins_Node formal parameter.
+ 	(Analyze_One_Aspect): Likewise.
+ 	(Analyze_Aspect_Specifications): Remove Ins_Node local variable.
+ 	(Insert_After_Place): New function containing the
+ 	special case for Annotate.
+ 
+ 2026-06-02  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst (Attribute_Ref):
+ 	New section based on comment in sem_attr.ads.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_util.adb, sem_util.ads (Partially_Visible_Subcomponent): Move
+ 	to right spot.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Array_Aggr_Code): Adjust actual parameter in
+ 	the call to Build_Master_Entity.
+ 	* exp_ch3.adb (Expand_N_Full_Type_Declaration): Likewise.
+ 	(Expand_N_Object_Declaration): Likewise.
+ 	(Expand_Previous_Access_Type): Likewise.
+ 	* exp_ch6.adb (Make_Build_In_Place_Call_In_Anonymous_Context):
+ 	Likewise.
+ 	(Make_Build_In_Place_Iface_Call_In_Allocator): Likewise.
+ 	(Make_Build_In_Place_Iface_Call_In_Anonymous_Context): Likewise.
+ 	* sem_ch3.adb (Access_Definition): Likewise.
+ 	(Access_Type_Declaration): Likewise.
+ 	* exp_ch9.ads (Build_Activation_Chain_Entity): Tweak description.
+ 	(Build_Master_Entity): Change parameter and tweak description.
+ 	* exp_ch9.adb (Build_Master_Entity): Change parameter and adjust.
+ 
+ 2026-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/124143
+ 	* libgnat/s-spsufi.ads (Finalize_And_Deallocate): Adjust comment.
+ 	* libgnat/s-spsufi.adb: Remove clause for Ada.Unchecked_Deallocation
+ 	(Finalize_And_Deallocate): Adjust and implement AI12-0331.
+ 	* libgnat/s-stposu.ads (Allocate_From_Subpool): Remove ??? comment.
+ 	(Deallocate_Subpool): Likewise.
+ 	(SP_Node): Delete.
+ 	(SP_Node_Ptr): Likewise.
+ 	(Root_Storage_Pool_With_Subpools): Adjust type of Subpools component
+ 	(Root_Subpool): Remove Node, add Prev and Next components.
+ 	(Detach): Adjust signature.
+ 	(Initialize): Delete.
+ 	(Initialize_Pool): Likewise.
+ 	* libgnat/s-stposu.adb (Allocate_Any_Controlled): Adjust.
+ 	(Attach): Reimplement.
+ 	(Detach): Likewise.
+ 	(Finalize_Pool): Loop over a simple doubly linked list.
+ 	(Initialize): Delete.
+ 	(Initialize_Pool): Likewise.
+ 	(Print_Pool): Adjust.
+ 	(Print_Subpool): Likewise.
+ 	(Set_Pool_Of_Subpool): Remove obsolete code.
+ 
+ 2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_util.ads (Has_Private_Component): Rename into...
+ 	(Is_Incompletely_Defined): ...this.
+ 	* sem_util.adb (Has_Private_Component): Rename into...
+ 	(Is_Incompletely_Defined): ...this.
+ 	(Check_Fully_Declared): Adapt to above renaming.
+ 	* exp_ch3.adb (Freeze_Type): Likewise.
+ 	* freeze.adb (Check_And_Freeze_Type): Likewise.
+ 	* sem_aggr.adb (Array_Aggr_Subtype): Likewise.
+ 	* sem_ch12.adb (Instantiate_Type): Likewise.
+ 	* sem_ch13.adb (Rep_Item_Too_Early): Likewise.
+ 	* sem_ch3.adb (Access_Definition, Analyze_Full_Type_Declaration,
+ 	Analyze_Subtype_Declaration, Build_Derived_Access_Type,
+ 	Copy_And_Build, Complete_Private_Subtype, Constrain_Access,
+ 	Constrain_Array, Build_Constrained_Access_Type, Constrain_Concurrent,
+ 	Constrain_Corresponding_Record, Copy_Array_Subtype_Attributes,
+ 	Derived_Type_Declaration): Likewise.
+ 	* sem_ch6.adb (Create_Extra_Formals): Likewise.
+ 	* sem_res.adb (Make_Call_Into_Operator): Likewise.
+ 
+ 2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* gen_il-gen-gen_entities.adb (Gen_Entities): Move
+ 	Is_Limited_Composite.
+ 	* einfo.ads (Is_Limited_Composite): Update documentation.
+ 
+ 2026-06-02  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Abstract_State): make error checks
+ 	exclusive.
+ 
+ 2026-06-02  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Private_Component): Rename into...
+ 	(Partially_Visible_Subcomponent): ...this.
+ 	* sem_ch3.adb (Analyze_Component_Declaration, Array_Type_Declaration):
+ 	Adapt to above renaming.
+ 	* sem_ch7.adb (Install_Composite_Operations): Likewise.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* gnathtml.pl: Reflow long line.
diff -Nrcpad gcc-17-20260531/gcc/ada/accessibility.adb gcc-17-20260607/gcc/ada/accessibility.adb
*** gcc-17-20260531/gcc/ada/accessibility.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/accessibility.adb	Sun Jun  7 22:32:05 2026
*************** package body Accessibility is
*** 444,451 ****
  
                    when N_Object_Declaration =>
                       return
!                        Make_Level_Literal
!                          (Scope_Depth (Scope (Defining_Identifier (Par))));
  
                    --  For the dynamic allocation of an object, return the
                    --  accessibility level of the allocator.
--- 444,451 ----
  
                    when N_Object_Declaration =>
                       return
!                        Accessibility_Level
!                          (Defining_Identifier (Par), Object_Decl_Level);
  
                    --  For the dynamic allocation of an object, return the
                    --  accessibility level of the allocator.
*************** package body Accessibility is
*** 517,525 ****
           E := Expr;
        end if;
  
!       --  Extract the entity
  
!       if Nkind (E) in N_Has_Entity and then Present (Entity (E)) then
           E := Entity (E);
  
           --  Deal with a possible renaming of a private protected component
--- 517,528 ----
           E := Expr;
        end if;
  
!       --  Extract the entity when it is valid
  
!       if Nkind (E) in N_Has_Entity
!         and then Present (Entity (E))
!         and then Entity (E) /= Any_Type
!       then
           E := Entity (E);
  
           --  Deal with a possible renaming of a private protected component
*************** package body Accessibility is
*** 612,618 ****
  
                 --  Anonymous access types
  
!                elsif Nkind (Pre) in N_Has_Entity
                   and then Ekind (Entity (Pre)) not in Subprogram_Kind
                   and then Present (Get_Dynamic_Accessibility (Entity (Pre)))
                   and then Level = Dynamic_Level
--- 615,621 ----
  
                 --  Anonymous access types
  
!                elsif Is_Entity_Name (Pre)
                   and then Ekind (Entity (Pre)) not in Subprogram_Kind
                   and then Present (Get_Dynamic_Accessibility (Entity (Pre)))
                   and then Level = Dynamic_Level
*************** package body Accessibility is
*** 666,692 ****
              then
                 return Make_Level_Literal (Scope_Depth (Standard_Standard));
  
!             --  Something went wrong and an extra accessibility formal has not
!             --  been generated when one should have ???
  
              elsif Is_Formal (E)
-               and then No (Get_Dynamic_Accessibility (E))
                and then Ekind (Etype (E)) = E_Anonymous_Access_Type
              then
                 return Make_Level_Literal (Scope_Depth (Standard_Standard));
  
!             --  Stand-alone object of an anonymous access type "SAOAAT"
  
!             elsif (Is_Formal (E)
!                     or else Ekind (E) in E_Variable
!                                        | E_Constant)
                and then Present (Get_Dynamic_Accessibility (E))
!               and then (Level = Dynamic_Level
!                          or else Level = Zero_On_Dynamic_Level)
              then
                 if Level = Zero_On_Dynamic_Level then
!                   return Make_Level_Literal
!                            (Scope_Depth (Standard_Standard));
                 end if;
  
                 --  No_Dynamic_Accessibility_Checks restriction override for
--- 669,694 ----
              then
                 return Make_Level_Literal (Scope_Depth (Standard_Standard));
  
!             --  Return the library level for formal parameters of an anonymous
!             --  access type without extra accessiblity formal. This may happen
!             --  for subprograms with foreign convention or when expansion is
!             --  disabled, see Sem_Ch6.Create_Extra_Formals.
  
              elsif Is_Formal (E)
                and then Ekind (Etype (E)) = E_Anonymous_Access_Type
+               and then No (Get_Dynamic_Accessibility (E))
              then
                 return Make_Level_Literal (Scope_Depth (Standard_Standard));
  
!             --  Formal parameters with an extra accessibility formal, as well
!             --  as stand-alone objects of an anonymous access type (SAOOAAAT).
  
!             elsif (Is_Formal (E) or else Ekind (E) in E_Constant | E_Variable)
                and then Present (Get_Dynamic_Accessibility (E))
!               and then (Level in Dynamic_Level | Zero_On_Dynamic_Level)
              then
                 if Level = Zero_On_Dynamic_Level then
!                   return Make_Level_Literal (Scope_Depth (Standard_Standard));
                 end if;
  
                 --  No_Dynamic_Accessibility_Checks restriction override for
*************** package body Accessibility is
*** 715,722 ****
  
                 --  Return the dynamic level in the normal case
  
!                return New_Occurrence_Of
!                         (Get_Dynamic_Accessibility (E), Loc);
  
              --  Initialization procedures have a special extra accessibility
              --  parameter associated with the level at which the object
--- 717,723 ----
  
                 --  Return the dynamic level in the normal case
  
!                return New_Occurrence_Of (Get_Dynamic_Accessibility (E), Loc);
  
              --  Initialization procedures have a special extra accessibility
              --  parameter associated with the level at which the object
*************** package body Accessibility is
*** 777,788 ****
  
              elsif Level = Dynamic_Level
                 and then Ekind (E) in E_In_Parameter | E_In_Out_Parameter
                 and then Present (Init_Proc_Level_Formal (Scope (E)))
              then
                 return New_Occurrence_Of
                          (Init_Proc_Level_Formal (Scope (E)), Loc);
  
!             --  Normal object - get the level of the enclosing scope
  
              else
                 return Make_Level_Literal
--- 778,796 ----
  
              elsif Level = Dynamic_Level
                 and then Ekind (E) in E_In_Parameter | E_In_Out_Parameter
+                and then Is_Subprogram (Scope (E))
                 and then Present (Init_Proc_Level_Formal (Scope (E)))
              then
                 return New_Occurrence_Of
                          (Init_Proc_Level_Formal (Scope (E)), Loc);
  
!             --  Formal object of generic subprogram - get the level of the
!             --  subprogram
! 
!             elsif Is_Formal_Object (E) and then Is_Subprogram (Scope (E)) then
!                return Make_Level_Literal (Subprogram_Access_Level (Scope (E)));
! 
!             --  Normal object - get the depth of the enclosing dynamic scope
  
              else
                 return Make_Level_Literal
*************** package body Accessibility is
*** 793,800 ****
           --  whereby there is an implicit dereference, a component of a
           --  composite type, or a function call in prefix notation.
  
-          --  We don't handle function calls in prefix notation correctly ???
- 
           when N_Indexed_Component | N_Selected_Component | N_Slice =>
              Pre := Prefix (E);
  
--- 801,806 ----
*************** package body Accessibility is
*** 802,811 ****
              --  of expanding a function call since we want to find the level
              --  of the original source call.
  
!             if not Comes_From_Source (Pre)
!               and then Nkind (Original_Node (Pre)) = N_Function_Call
!             then
!                Pre := Original_Node (Pre);
              end if;
  
              --  When E is an indexed component or selected component and
--- 808,819 ----
              --  of expanding a function call since we want to find the level
              --  of the original source call.
  
!             if not Comes_From_Source (Pre) then
!                if Nkind (Original_Node (Pre)) = N_Function_Call then
!                   Pre := Original_Node (Pre);
!                elsif Is_Captured_Function_Call (Pre) then
!                   Pre := Prefix (Constant_Value (Entity (Prefix (Pre))));
!                end if;
              end if;
  
              --  When E is an indexed component or selected component and
*************** package body Accessibility is
*** 878,910 ****
                   Make_Level_Literal (Typ_Access_Level (Etype (Prefix (E))));
  
              --  The accessibility calculation routine that handles function
!             --  calls (Function_Call_Level) assumes, in the case the
!             --  result is of an anonymous access type, that the result will be
!             --  used "in its entirety" when the call is present within an
!             --  assignment or object declaration.
  
              --  To properly handle cases where the result is not used in its
              --  entirety, we test if the prefix of the component in question is
              --  a function call, which tells us that one of its components has
!             --  been identified and is being accessed. Therefore we can
!             --  conclude that the result is not used "in its entirety"
!             --  according to RM 3.10.2 (10.2/3).
  
              elsif Nkind (Pre) = N_Function_Call
                and then not Is_Named_Access_Type (Etype (Pre))
              then
!                --  Dynamic checks are generated when we are within a return
!                --  value or we are in a function call within an anonymous
!                --  access discriminant constraint of a return object (signified
!                --  by In_Return_Context) on the side of the callee.
! 
!                --  So, in this case, return a library accessibility level to
!                --  null out the check on the side of the caller.
  
!                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));
--- 886,915 ----
                   Make_Level_Literal (Typ_Access_Level (Etype (Prefix (E))));
  
              --  The accessibility calculation routine that handles function
!             --  calls (Function_Call_Or_Allocator_Level) assumes, in the case
!             --  the result is not of a named access type, that the result will
!             --  be used "in its entirety" when the call is present within an
!             --  assignment or object declaration or return value.
  
              --  To properly handle cases where the result is not used in its
              --  entirety, we test if the prefix of the component in question is
              --  a function call, which tells us that one of its components has
!             --  been identified and is being accessed.
  
              elsif Nkind (Pre) = N_Function_Call
                and then not Is_Named_Access_Type (Etype (Pre))
              then
!                --  Even if the result is not used "in it entirety", if the call
!                --  has an accessibility level tied to that of the result of the
!                --  enclosing function, it is nevertheless considered to define
!                --  the result for the purpose of determining its master and its
!                --  accessibility level by the RM 3.10.2(10.5/5) rule.
  
!                if (Ekind (Etype (Pre)) = E_Anonymous_Access_Type
!                     or else Has_Implicit_Dereference (Etype (Pre)))
!                  and then (In_Return_Value (E) or else In_Return_Context)
                 then
!                   return Function_Call_Or_Allocator_Level (Prefix (E));
                 end if;
  
                 return Make_Level_Literal (Innermost_Master_Scope_Depth (Expr));
*************** package body Accessibility is
*** 1169,1175 ****
           Insert_Action (N,
             Make_Implicit_If_Statement (N,
               Condition       => Cond,
!              Then_Statements => Stmts));
        end if;
     end Apply_Accessibility_Check_For_Allocator;
  
--- 1174,1181 ----
           Insert_Action (N,
             Make_Implicit_If_Statement (N,
               Condition       => Cond,
!              Then_Statements => Stmts),
!            Suppress => All_Checks);
        end if;
     end Apply_Accessibility_Check_For_Allocator;
  
*************** package body Accessibility is
*** 1540,1550 ****
        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)
--- 1546,1556 ----
        end loop;
     end Apply_Accessibility_Check_For_Discriminated_Return;
  
!    ----------------------------------------------
!    -- Apply_Accessibility_Check_For_Conversion --
!    ----------------------------------------------
  
!    procedure Apply_Accessibility_Check_For_Conversion
       (N           : Node_Id;
        Typ         : Entity_Id;
        Insert_Node : Node_Id)
*************** package body Accessibility is
*** 1552,1593 ****
        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
  
--- 1558,1597 ----
        Loc : constant Source_Ptr := Sloc (N);
  
        Check_Cond  : Node_Id;
!       Param_Ent   : Entity_Id;
        Param_Level : Node_Id;
        Type_Level  : Node_Id;
  
     begin
+       if Inside_A_Generic then
+          return;
+       end if;
+ 
        --  Verify we haven't tried to add a dynamic accessibility check when we
        --  shouldn't.
  
        pragma Assert (not No_Dynamic_Accessibility_Checks_Enabled (N));
  
+       Param_Ent := Param_Entity (N);
+ 
+       --  Stand-alone object of an anonymous access type (SAOOAAAT)
+ 
        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 (Extra_Accessibility (Entity (N)))
        then
           Param_Ent := Entity (N);
        end if;
  
!       --  Apply the run-time check only if the access object has an associated
!       --  extra access level object and when accessibility checks are enabled.
  
!       if 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
  
*************** package body Accessibility is
*** 1651,1657 ****
              Error_Msg_N ("\Program_Error [<<", N);
           end if;
        end if;
!    end Apply_Accessibility_Check_For_Parameter;
  
     ------------------------------------------
     -- Apply_Accessibility_Check_For_Return --
--- 1655,1661 ----
              Error_Msg_N ("\Program_Error [<<", N);
           end if;
        end if;
!    end Apply_Accessibility_Check_For_Conversion;
  
     ------------------------------------------
     -- Apply_Accessibility_Check_For_Return --
*************** package body Accessibility is
*** 1670,1675 ****
--- 1674,1686 ----
           return;
        end if;
  
+       --  No checks are needed for the return synthesized in a function whose
+       --  body has been wrapped in a nested _Wrapped_Statements function.
+ 
+       if Present (Wrapped_Statements (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.
*************** package body Accessibility is
*** 1699,1705 ****
       (Return_Stmt : Node_Id;
        Stm_Entity  : Entity_Id)
     is
-       Loc      : constant Source_Ptr := Sloc (Return_Stmt);
        Scope_Id : constant Entity_Id  := Return_Applies_To (Stm_Entity);
  
        R_Type : constant Entity_Id := Etype (Scope_Id);
--- 1710,1715 ----
*************** package body Accessibility is
*** 1708,1719 ****
        function First_Selector (Assoc : Node_Id) return Node_Id;
        --  Obtain the first selector or choice from a given association
  
-       function Is_Formal_Of_Current_Function
-         (Assoc_Expr : Node_Id) return Boolean;
-       --  Predicate to test if a given expression associated with a
-       --  discriminant is a formal parameter to the function in which the
-       --  return construct we checking applies to.
- 
        --------------------
        -- First_Selector --
        --------------------
--- 1718,1723 ----
*************** package body Accessibility is
*** 1731,1749 ****
           end if;
        end First_Selector;
  
-       -----------------------------------
-       -- Is_Formal_Of_Current_Function --
-       -----------------------------------
- 
-       function Is_Formal_Of_Current_Function
-         (Assoc_Expr : Node_Id) return Boolean is
-       begin
-          return Is_Entity_Name (Assoc_Expr)
-                   and then Enclosing_Subprogram
-                              (Entity (Assoc_Expr)) = Scope_Id
-                   and then Is_Formal (Entity (Assoc_Expr));
-       end Is_Formal_Of_Current_Function;
- 
        --  Local declarations
  
        Assoc : Node_Id := Empty;
--- 1735,1740 ----
*************** package body Accessibility is
*** 1755,1761 ****
        Assoc_Expr    : Node_Id;
        Assoc_Present : Boolean := False;
  
-       Check_Cond        : Node_Id;
        Unseen_Disc_Count : Nat := 0;
        Seen_Discs        : Elist_Id;
        Disc              : Entity_Id;
--- 1746,1751 ----
*************** package body Accessibility is
*** 2123,2199 ****
              Unseen_Disc_Count := Unseen_Disc_Count - 1;
           end if;
  
!          --  Check the accessibility level of the expression when the
           --  discriminant is of an anonymous access type.
  
           if Present (Assoc_Expr)
             and then Present (Disc)
             and then Ekind (Etype (Disc)) = E_Anonymous_Access_Type
! 
!            --  We disable the check when we have a tagged return type and
!            --  the associated expression for the discriminant is a formal
!            --  parameter since the check would require us to compare the
!            --  accessibility level of Assoc_Expr to the level of the
!            --  Extra_Accessibility_Of_Result of the function - which is
!            --  currently disabled for functions with tagged return types.
!            --  This may change in the future ???
! 
!            --  See Needs_Result_Accessibility_Level for details.
! 
!            and then not
!              (No (Extra_Accessibility_Of_Result (Scope_Id))
!                and then Is_Formal_Of_Current_Function (Assoc_Expr)
!                and then Is_Tagged_Type (Etype (Scope_Id)))
! 
!            --  Disable the check generation when we are only checking semantics
!            --  since required locals do not get generated (e.g. extra
!            --  accessibility of result), and constant folding can occur and
!            --  lead to spurious errors.
! 
!            and then not Check_Semantics_Only_Mode
           then
!             --  Generate a dynamic check based on the extra accessibility of
!             --  the result or the scope of the current function.
! 
!             Check_Cond :=
!               Make_Op_Gt (Loc,
!                 Left_Opnd  => Accessibility_Level
!                                 (Expr              => Assoc_Expr,
!                                  Level             => Dynamic_Level,
!                                  In_Return_Context => True),
!                 Right_Opnd =>
!                   (if Present (Extra_Accessibility_Of_Result (Scope_Id))
! 
!                      --  When Assoc_Expr is a formal we have to look at the
!                      --  extra accessibility-level formal associated with
!                      --  the result.
! 
!                      and then Is_Formal_Of_Current_Function (Assoc_Expr)
!                    then
!                       New_Occurrence_Of
!                         (Extra_Accessibility_Of_Result (Scope_Id), Loc)
! 
!                    --  Otherwise, we compare the level of Assoc_Expr to the
!                    --  scope of the current function.
! 
!                    else
!                       Make_Integer_Literal
!                         (Loc, Scope_Depth (Scope (Scope_Id)))));
! 
!             Insert_Before_And_Analyze (Return_Stmt,
!               Make_Raise_Program_Error (Loc,
!                 Condition => Check_Cond,
!                 Reason    => PE_Accessibility_Check_Failed));
! 
!             --  ??? Is this how we want to detect RM 6.5(5.9) violations?
! 
!             if Nkind (Check_Cond) = N_Identifier
!               and then Entity (Check_Cond) = Standard_True
!             then
!                Error_Msg_N
!                  ("level of type of access discriminant value of return object"
!                     & " is statically too deep", Return_Stmt);
!             end if;
           end if;
  
           --  Iterate over the discriminants, except when we have encountered
--- 2113,2132 ----
              Unseen_Disc_Count := Unseen_Disc_Count - 1;
           end if;
  
!          --  Check the static accessibility level of the expression when the
           --  discriminant is of an anonymous access type.
  
           if Present (Assoc_Expr)
             and then Present (Disc)
             and then Ekind (Etype (Disc)) = E_Anonymous_Access_Type
!            and then
!              Static_Accessibility_Level
!                (Assoc_Expr, Zero_On_Dynamic_Level, In_Return_Context => True)
!                  > Subprogram_Access_Level (Scope_Id)
           then
!             Error_Msg_N
!               ("level of type of access discriminant value of return object"
!                & " is statically too deep", Return_Stmt);
           end if;
  
           --  Iterate over the discriminants, except when we have encountered
*************** package body Accessibility is
*** 2255,2274 ****
        end if;
     end Deepest_Type_Access_Level;
  
!    -----------------------------------
!    -- Effective_Extra_Accessibility --
!    -----------------------------------
  
!    function Effective_Extra_Accessibility (Id : Entity_Id) return Entity_Id is
     begin
        if Present (Renamed_Object (Id))
          and then Is_Entity_Name (Renamed_Object (Id))
        then
!          return Effective_Extra_Accessibility (Entity (Renamed_Object (Id)));
        else
!          return Extra_Accessibility (Id);
        end if;
!    end Effective_Extra_Accessibility;
  
     -------------------------------
     -- Get_Dynamic_Accessibility --
--- 2188,2211 ----
        end if;
     end Deepest_Type_Access_Level;
  
!    -------------------------
!    -- Extra_Accessibility --
!    -------------------------
  
!    function Extra_Accessibility (Id : Entity_Id) return Entity_Id is
     begin
        if Present (Renamed_Object (Id))
          and then Is_Entity_Name (Renamed_Object (Id))
        then
!          return Extra_Accessibility (Entity (Renamed_Object (Id)));
!       end if;
! 
!       if Is_Formal (Id) or else Ekind (Id) in E_Constant | E_Variable then
!          return Extra_Accessibility_Of_Object (Id);
        else
!          return Empty;
        end if;
!    end Extra_Accessibility;
  
     -------------------------------
     -- Get_Dynamic_Accessibility --
*************** package body Accessibility is
*** 2771,2795 ****
                  (Is_Itype (Btyp)
                    and then Nkind (Associated_Node_For_Itype (Btyp)) =
                                                           N_Object_Declaration
!                   and then Is_Return_Object
!                              (Defining_Identifier
!                                 (Associated_Node_For_Itype (Btyp))))
              then
!                declare
!                   Scop : Entity_Id;
! 
!                begin
!                   Scop := Scope (Scope (Btyp));
!                   while Present (Scop) loop
!                      exit when Ekind (Scop) = E_Function;
!                      Scop := Scope (Scop);
!                   end loop;
! 
!                   --  Treat the return object's type as having the level of the
!                   --  function's result subtype (as per RM05-6.5(5.3/2)).
! 
!                   return Type_Access_Level (Etype (Scop), Allow_Alt_Model);
!                end;
              end if;
           end if;
  
--- 2708,2720 ----
                  (Is_Itype (Btyp)
                    and then Nkind (Associated_Node_For_Itype (Btyp)) =
                                                           N_Object_Declaration
!                   and then
!                     Is_Return_Object
!                       (Defining_Identifier (Associated_Node_For_Itype (Btyp))))
              then
!                return
!                  Type_Access_Level
!                    (Etype (Enclosing_Subprogram (Btyp)), Allow_Alt_Model);
              end if;
           end if;
  
*************** package body Accessibility is
*** 2834,2853 ****
           return Scope_Depth (Standard_Standard);
        end if;
  
!       --  It is possible that the current scope is an aliased subprogram -
!       --  this can happen when an abstract primitive from a root type is not
!       --  not visible.
! 
!       if Is_Subprogram (Enclosing_Dynamic_Scope (Btyp))
!         and then Present (Alias (Enclosing_Dynamic_Scope (Btyp)))
!       then
!          return Scope_Depth (Ultimate_Alias (Enclosing_Dynamic_Scope (Btyp)));
! 
!       --  Otherwise, simply use the enclosing dynamic scope
! 
!       else
!          return Scope_Depth (Enclosing_Dynamic_Scope (Btyp));
!       end if;
     end Type_Access_Level;
  
  end Accessibility;
--- 2759,2765 ----
           return Scope_Depth (Standard_Standard);
        end if;
  
!       return Scope_Depth (Enclosing_Dynamic_Scope (Btyp));
     end Type_Access_Level;
  
  end Accessibility;
diff -Nrcpad gcc-17-20260531/gcc/ada/accessibility.ads gcc-17-20260607/gcc/ada/accessibility.ads
*** gcc-17-20260531/gcc/ada/accessibility.ads	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/accessibility.ads	Sun Jun  7 22:32:05 2026
*************** package Accessibility is
*** 35,56 ****
     --  rules of 3.10.2 are violated.
  
     type Accessibility_Level_Kind is
!      (Dynamic_Level,
!       Object_Decl_Level,
!       Zero_On_Dynamic_Level);
!    --  Accessibility_Level_Kind is an enumerated type which captures the
!    --  different modes in which an accessibility level could be obtained for
!    --  a given expression.
  
!    --  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).
  
     function Accessibility_Level
       (Expr              : Node_Id;
--- 35,59 ----
     --  rules of 3.10.2 are violated.
  
     type Accessibility_Level_Kind is
!      (Dynamic_Level, Object_Decl_Level, Zero_On_Dynamic_Level);
!    --  Captures the different modes in which an accessibility level could be
!    --  obtained for a given expression. In the context of Accessibility_Level
!    --  function, Accessibility_Level_Kind signals what type of accessibility
!    --  level to obtain.
  
!    --  When Level is Dynamic_Level, a defining identifier associated with an
!    --  access parameter, an access result, or an SAOOAAAT, may be returned,
!    --  and an N_Integer_Literal node in the other cases.
! 
!    --  When Level is Object_Decl_Level, an N_Integer_Literal node whose value
!    --  is the level of the declaration of the object is returned in the cases
!    --  where Dynamic_Level returns a defining identifier; in the other cases,
!    --  the same N_Integer_Literal node as Dynamic_Level is returned.
! 
!    --  When Level is Zero_On_Dynamic_Level, an N_Integer_Literal node whose
!    --  value is zero (i.e. that of the library level) is returned in the cases
!    --  where Dynamic_Level returns a defining identifier; in the other cases,
!    --  the same N_Integer_Literal node as Dynamic_Level is returned.
  
     function Accessibility_Level
       (Expr              : Node_Id;
*************** package Accessibility is
*** 99,112 ****
     --  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;
--- 102,115 ----
     --  case seems to be an actual gap in the language rules that needs to
     --  be fixed by the ARG. ???
  
!    procedure Apply_Accessibility_Check_For_Conversion
       (N           : Node_Id;
        Typ         : Entity_Id;
        Insert_Node : Node_Id);
!    --  Given a name N denoting an access parameter or an SAOOAAAT, insert a
!    --  run-time check that the accessibility level of the anonymous access
!    --  type of the object is not deeper than the level of Typ. Insert_Node
!    --  indicates the node where the check should be inserted.
  
     procedure Apply_Accessibility_Check_For_Return
       (Exp  : Node_Id;
*************** package Accessibility is
*** 135,142 ****
     --  The Allow_Alt_Model parameter allows the alternative level calculation
     --  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
--- 138,146 ----
     --  The Allow_Alt_Model parameter allows the alternative level calculation
     --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
  
!    function Extra_Accessibility (Id : Entity_Id) return Entity_Id;
!    --  Same as Extra_Accessibility_Of_Object in Einfo, but looks through object
!    --  renamings per the RM 3.10.2(8) rule.
  
     function Get_Dynamic_Accessibility (E : Entity_Id) return Entity_Id;
     --  Obtain the accessibility level for a given entity formal taking into
*************** package Accessibility is
*** 154,159 ****
--- 158,183 ----
     function Has_Anonymous_Access_Discriminant (Typ : Entity_Id) return Boolean;
     --  Returns True if Typ has one or more anonymous access discriminants
  
+    function Has_Unconstrained_Access_Discriminants
+      (Subtyp : Entity_Id) return Boolean;
+    --  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;
+    --  Ada 2012 (AI05-0234): Return True if the function needs an implicit
+    --  parameter to identify the accessibility level of the function result
+    --  "determined by the point of call". Return False if the type of the
+    --  function result is a private type and its completion is unavailable.
+ 
     function Prefix_With_Safe_Accessibility_Level
       (N   : Node_Id;
        Typ : Entity_Id) return Boolean;
*************** package Accessibility is
*** 177,204 ****
     --  integer for use in compile-time checking. Note: Level is restricted to
     --  be non-dynamic.
  
-    function Has_Unconstrained_Access_Discriminants
-      (Subtyp : Entity_Id) return Boolean;
-    --  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;
-    --  Ada 2012 (AI05-0234): Return True if the function needs an implicit
-    --  parameter to identify the accessibility level of the function result
-    --  "determined by the point of call". Return False if the type of the
-    --  function result is a private type and its completion is unavailable.
- 
     function Subprogram_Access_Level (Subp : Entity_Id) return Uint;
!    --  Return the accessibility level of the view denoted by Subp
  
     function Type_Access_Level
       (Typ             : Entity_Id;
--- 201,212 ----
     --  integer for use in compile-time checking. Note: Level is restricted to
     --  be non-dynamic.
  
     function Subprogram_Access_Level (Subp : Entity_Id) return Uint;
!    --  Return the accessibility level of Subp. Note that this is the level of
!    --  the innermost master of the declaration of Subp (modulo renaming) and,
!    --  in particular, is *not* the level of the entities declared within Subp.
!    --  It is used to enforce the accessibility rules for access-to-subprogram
!    --  types, results of function calls, and formal objects of generic units.
  
     function Type_Access_Level
       (Typ             : Entity_Id;
diff -Nrcpad gcc-17-20260531/gcc/ada/adaint.c gcc-17-20260607/gcc/ada/adaint.c
*** gcc-17-20260531/gcc/ada/adaint.c	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/adaint.c	Sun Jun  7 22:32:05 2026
*************** char __gnat_dir_separator = DIR_SEPARATO
*** 315,350 ****
  
  char __gnat_path_separator = PATH_SEPARATOR;
  
- /* The GNAT_LIBRARY_TEMPLATE contains a list of expressions that define
-    the base filenames that libraries specified with -lsomelib options
-    may have. This is used by GNATMAKE to check whether an executable
-    is up-to-date or not. The syntax is
- 
-      library_template ::= { pattern ; } pattern NUL
-      pattern          ::= [ prefix ] * [ postfix ]
- 
-    These should only specify names of static libraries as it makes
-    no sense to determine at link time if dynamic-link libraries are
-    up to date or not. Any libraries that are not found are supposed
-    to be up-to-date:
- 
-      * if they are needed but not present, the link
-        will fail,
- 
-      * otherwise they are libraries in the system paths and so
-        they are considered part of the system and not checked
-        for that reason.
- 
-    ??? This should be part of a GNAT host-specific compiler
-        file instead of being included in all user applications
-        as well. This is only a temporary work-around for 3.11b.  */
- 
- #ifndef GNAT_LIBRARY_TEMPLATE
- #define GNAT_LIBRARY_TEMPLATE "lib*.a"
- #endif
- 
- const char *__gnat_library_template = GNAT_LIBRARY_TEMPLATE;
- 
  #if defined (__vxworks)
  #define GNAT_MAX_PATH_LEN PATH_MAX
  
--- 315,320 ----
*************** __gnat_current_time_string (char *result
*** 444,454 ****
  }
  
  void
! __gnat_to_gm_time (OS_Time *p_time, int *p_year, int *p_month, int *p_day,
  		   int *p_hours, int *p_mins, int *p_secs)
  {
    struct tm *res;
!   time_t time = (time_t) *p_time;
  
    res = gmtime (&time);
    if (res)
--- 414,424 ----
  }
  
  void
! __gnat_to_gm_time (OS_Time date, int *p_year, int *p_month, int *p_day,
  		   int *p_hours, int *p_mins, int *p_secs)
  {
    struct tm *res;
!   time_t time = (time_t) date;
  
    res = gmtime (&time);
    if (res)
*************** __gnat_get_current_dir (char *dir, int *
*** 698,748 ****
     dir[*length] = '\0';
  }
  
! /* Return the suffix for object files.  */
! 
! void
! __gnat_get_object_suffix_ptr (int *len, const char **value)
! {
!   *value = HOST_OBJECT_SUFFIX;
! 
!   if (*value == 0)
!     *len = 0;
!   else
!     *len = strlen (*value);
! 
!   return;
! }
! 
! /* Return the suffix for executable files.  */
  
! void
! __gnat_get_executable_suffix_ptr (int *len, const char **value)
! {
!   *value = HOST_EXECUTABLE_SUFFIX;
  
!   if (!*value)
!     *len = 0;
!   else
!     *len = strlen (*value);
  
!   return;
! }
  
! /* Return the suffix for debuggable files. Usually this is the same as the
     executable extension.  */
  
! void
! __gnat_get_debuggable_suffix_ptr (int *len, const char **value)
! {
!   *value = HOST_EXECUTABLE_SUFFIX;
! 
!   if (*value == 0)
!     *len = 0;
!   else
!     *len = strlen (*value);
! 
!   return;
! }
  
  /* Returns the OS filename and corresponding encoding.  */
  
--- 668,685 ----
     dir[*length] = '\0';
  }
  
! /* Suffix for object files.  */
  
! const char *__gnat_object_suffix = HOST_OBJECT_SUFFIX;
  
! /* Suffix for executable files.  */
  
! const char *__gnat_executable_suffix = HOST_EXECUTABLE_SUFFIX;
  
! /* Suffix for debuggable files. Usually this is the same as the
     executable extension.  */
  
! const char *__gnat_debuggable_suffix = HOST_EXECUTABLE_SUFFIX;
  
  /* Returns the OS filename and corresponding encoding.  */
  
*************** __gnat_is_executable_file_attr (char* na
*** 2209,2214 ****
--- 2146,2158 ----
     if (attr->executable == ATTR_UNSET)
       {
  #if defined (_WIN32)
+        __gnat_is_regular_file_attr (name, attr);
+        if (!attr->regular)
+ 	 {
+ 	   attr->executable = 0;
+ 	   return 0;
+ 	 }
+ 
         TCHAR wname [GNAT_MAX_PATH_LEN + 2];
         GENERIC_MAPPING GenericMapping;
  
*************** __gnat_is_executable_file_attr (char* na
*** 2231,2239 ****
  	     while ((l = _tcsstr(last+1, _T(".exe"))))
  	       last = l;
  
! 	   attr->executable =
! 	     GetFileAttributes (wname) != INVALID_FILE_ATTRIBUTES
! 	     && (last - wname) == (int) (_tcslen (wname) - 4);
  	 }
  #else
         __gnat_stat_to_attr (-1, name, attr);
--- 2175,2181 ----
  	     while ((l = _tcsstr(last+1, _T(".exe"))))
  	       last = l;
  
! 	   attr->executable = (last - wname) == (int)(_tcslen (wname) - 4);
  	 }
  #else
         __gnat_stat_to_attr (-1, name, attr);
*************** int __gnat_argument_needs_quote = 1;
*** 3197,3214 ****
  int __gnat_argument_needs_quote = 0;
  #endif
  
- /* This option is used to enable/disable object files handling from the
-    binder file by the GNAT Project module. For example, this is disabled on
-    Windows (prior to GCC 3.4) as it is already done by the mdll module.
-    Stating with GCC 3.4 the shared libraries are not based on mdll
-    anymore as it uses the GCC's -shared option  */
- #if defined (_WIN32) \
-     && ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 4)))
- int __gnat_prj_add_obj_files = 0;
- #else
- int __gnat_prj_add_obj_files = 1;
- #endif
- 
  /* char used as prefix/suffix for environment variables */
  #if defined (_WIN32)
  char __gnat_environment_char = '%';
--- 3139,3144 ----
*************** __gnat_copy_attribs (char *from ATTRIBUT
*** 3261,3267 ****
         return -1;
  
       res = SetFileTime
!        (hto, NULL, &info.ftCreationTime, &info.ftLastAccessTime);
  
       CloseHandle (hto);
  
--- 3191,3197 ----
         return -1;
  
       res = SetFileTime
!        (hto, &info.ftCreationTime, &info.ftLastAccessTime, &info.ftLastWriteTime);
  
       CloseHandle (hto);
  
diff -Nrcpad gcc-17-20260531/gcc/ada/adaint.h gcc-17-20260607/gcc/ada/adaint.h
*** gcc-17-20260531/gcc/ada/adaint.h	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/adaint.h	Sun Jun  7 22:32:05 2026
*************** extern int  __gnat_in_child_after_fork;
*** 146,152 ****
  
  extern OS_Time __gnat_current_time		   (void);
  extern void   __gnat_current_time_string           (char *);
! extern void   __gnat_to_gm_time			   (OS_Time *, int *, int *,
  				                    int *, int *,
  				                    int *, int *);
  extern void   __gnat_to_os_time                    (OS_Time *, int, int, int,
--- 146,152 ----
  
  extern OS_Time __gnat_current_time		   (void);
  extern void   __gnat_current_time_string           (char *);
! extern void   __gnat_to_gm_time			   (OS_Time, int *, int *,
  				                    int *, int *,
  				                    int *, int *);
  extern void   __gnat_to_os_time                    (OS_Time *, int, int, int,
diff -Nrcpad gcc-17-20260531/gcc/ada/comperr.adb gcc-17-20260607/gcc/ada/comperr.adb
*** gcc-17-20260531/gcc/ada/comperr.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/comperr.adb	Sun Jun  7 22:32:05 2026
*************** package body Comperr is
*** 296,302 ****
              --  Otherwise we use the standard fixed text
  
              else
!                if Is_FSF_Version then
                    Write_Str
                      ("| Please submit a bug report; see" &
                       " https://gcc.gnu.org/bugs/ .");
--- 296,312 ----
              --  Otherwise we use the standard fixed text
  
              else
!                if Is_FSF_Version and then GNATprove_Mode then
!                   Write_Str
!                     ("| Please submit a bug report at the SPARK issue" &
!                      " tracker:");
!                   End_Line;
! 
!                   Write_Str
!                     ("| https://github.com/AdaCore/spark2014 .");
!                   End_Line;
! 
!                elsif Is_FSF_Version then
                    Write_Str
                      ("| Please submit a bug report; see" &
                       " https://gcc.gnu.org/bugs/ .");
diff -Nrcpad gcc-17-20260531/gcc/ada/debug.adb gcc-17-20260607/gcc/ada/debug.adb
*** gcc-17-20260531/gcc/ada/debug.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/debug.adb	Sun Jun  7 22:32:05 2026
*************** package body Debug is
*** 143,149 ****
     --  d_c  CUDA compilation : compile for the host
     --  d_d  CUDA compilation : compile for the device
     --  d_e  Ignore entry calls and requeue statements for elaboration
!    --  d_f  Issue info messages related to GNATprove usage
     --  d_g  Disable large static aggregates
     --  d_h  Disable the use of (perfect) hash functions for enumeration Value
     --  d_i  Ignore activations and calls to instances for elaboration
--- 143,149 ----
     --  d_c  CUDA compilation : compile for the host
     --  d_d  CUDA compilation : compile for the device
     --  d_e  Ignore entry calls and requeue statements for elaboration
!    --  d_f
     --  d_g  Disable large static aggregates
     --  d_h  Disable the use of (perfect) hash functions for enumeration Value
     --  d_i  Ignore activations and calls to instances for elaboration
diff -Nrcpad gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst gcc-17-20260607/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
*** gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Sun Jun  7 22:32:05 2026
*************** Aspect Iterable
*** 425,436 ****
  This aspect provides a light-weight mechanism for loops and quantified
  expressions over container types, without the overhead imposed by the tampering
  checks of standard Ada 2012 iterators. The value of the aspect is an aggregate
! with six named components, of which the last three are optional: ``First``,
! ``Next``, ``Has_Element``, ``Element``, ``Last``, and ``Previous``.
  When only the first three components are specified, only the
! ``for .. in`` form of iteration over cursors is available. When ``Element``
! is specified, both this form and the ``for .. of`` form of iteration over
! elements are available. If the last two components are specified, reverse
  iterations over the container can be specified (analogous to what can be done
  over predefined containers that support the ``Reverse_Iterator`` interface).
  The following is a typical example of use:
--- 425,439 ----
  This aspect provides a light-weight mechanism for loops and quantified
  expressions over container types, without the overhead imposed by the tampering
  checks of standard Ada 2012 iterators. The value of the aspect is an aggregate
! with six named components, of which the last four are optional: ``First``,
! ``Next``, ``Has_Element``, ``Element``, ``Constant_Reference``, ``Last``, and
! ``Previous``.
  When only the first three components are specified, only the
! ``for .. in`` form of iteration over cursors is available. When either
! ``Element`` or ``Constant_Reference`` is specified, both this form and the
! ``for .. of`` form of iteration over elements are available. ``Element``
! and ``Constant_Reference`` cannot be specified together.
! If the last two components are specified, reverse
  iterations over the container can be specified (analogous to what can be done
  over predefined containers that support the ``Reverse_Iterator`` interface).
  The following is a typical example of use:
*************** The following is a typical example of us
*** 438,449 ****
  .. code-block:: ada
  
    type List is private with
!       Iterable => (First       => First_Cursor,
!                    Next        => Advance,
!                    Has_Element => Cursor_Has_Element
!                  [,Element     => Get_Element]
!                  [,Last        => Last_Cursor]
!                  [,Previous    => Retreat]);
  
  * The values of ``First`` and ``Last`` are primitive operations of the
    container type that return a ``Cursor``, which must be a type declared in
--- 441,453 ----
  .. code-block:: ada
  
    type List is private with
!       Iterable => (First              => First_Cursor,
!                    Next               => Advance,
!                    Has_Element        => Cursor_Has_Element
!                  [,Element            => Get_Element]
!                  [,Constant_Reference => Element_Constant_Access]
!                  [,Last               => Last_Cursor]
!                  [,Previous           => Retreat]);
  
  * The values of ``First`` and ``Last`` are primitive operations of the
    container type that return a ``Cursor``, which must be a type declared in
*************** The following is a typical example of us
*** 477,482 ****
--- 481,496 ----
  
    function Get_Element (Cont : Container; Position : Cursor) return Element_Type;
  
+ * The value of ``Constant_Reference`` is a primitive operation of the container
+   type that
+   takes both a container and a cursor and yields an anonymous access-to-constant
+   type designating ``Element_Type`` with null exclusion, which must
+   be a type declared in the container package or visible from it. For example:
+ 
+ .. code-block:: ada
+ 
+   function Element_Constant_Access (Cont : Container; Position : Cursor) return not null access constant Element_Type;
+ 
  This aspect is used in the GNAT-defined formal container packages.
  
  Aspect Linker_Section
diff -Nrcpad gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst gcc-17-20260607/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
*** gcc-17-20260531/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Sun Jun  7 22:32:05 2026
*************** range).  The result is static for static
*** 873,878 ****
--- 873,885 ----
  applied to the index subtype of a one dimensional array always gives the
  same result as ``Length`` applied to the array itself.
  
+ Attribute Ref
+ =============
+ 
+ ``System.Address'Ref`` (``Address`` is the only permissible prefix) is
+ equivalent to ``System'To_Address``, provided for compatibility with other
+ compilers.
+ 
  Attribute Restriction_Set
  =========================
  .. index:: Restriction_Set
*************** Attribute Valid_Scalars
*** 1680,1687 ****
  The ``'Valid_Scalars`` attribute is intended to make it easier to check the
  validity of scalar subcomponents of composite objects. The attribute is defined
  for any prefix ``P`` which denotes an object. Prefix ``P`` can be any type
! except for tagged private or ``Unchecked_Union`` types. The value of the
! attribute is of type ``Boolean``.
  
  ``P'Valid_Scalars`` yields ``True`` if and only if the evaluation of
  ``C'Valid`` yields ``True`` for every scalar subcomponent ``C`` of ``P``, or if
--- 1687,1694 ----
  The ``'Valid_Scalars`` attribute is intended to make it easier to check the
  validity of scalar subcomponents of composite objects. The attribute is defined
  for any prefix ``P`` which denotes an object. Prefix ``P`` can be any type
! except for ``Unchecked_Union`` types. The value of the attribute is of type
! ``Boolean``.
  
  ``P'Valid_Scalars`` yields ``True`` if and only if the evaluation of
  ``C'Valid`` yields ``True`` for every scalar subcomponent ``C`` of ``P``, or if
diff -Nrcpad gcc-17-20260531/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-17-20260607/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	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun Jun  7 22:32:05 2026
*************** passed between C and Ada as simple as pr
*** 8003,8024 ****
  
  GNAT LLVM currently provides limited support for debugging data. It
  provides full line number information for declarations and statements,
! but not sufficient debugging data to display all Ada data
! structures. GNAT LLVM outputs complete debugging data only for a
! subset of types: scalar types; records whose field offsets are known
! at compile time, including discriminated records fitting this
! description; and arrays. Records that have a field whose size or
! offset is only known at run time do not yet have correct debugging
! data. You will not be able to use ``gdb`` print commands to look at
! objects not of those types or to display components of those
! types. You can use low-level ``gdb`` commands that display memory to
! view such data provided you know how they're laid out.
  
! In some situations, a name in the source may not be available.
! Renamings are not currently emitted into the debugging data. When
! debugging a nested function, variables from enclosing scopes will not
! be available. You will have to examine those variables in their
! hosting frame.
  
  In addition, debugging information may be confusing if you have
  ``out`` parameters to subprograms. If you have a procedure with only
--- 8003,8012 ----
  
  GNAT LLVM currently provides limited support for debugging data. It
  provides full line number information for declarations and statements,
! and complete debugging data for all types.
  
! In some situations, a name in the source may not be available.  For
! example, renamings are not currently emitted into the debugging data.
  
  In addition, debugging information may be confusing if you have
  ``out`` parameters to subprograms. If you have a procedure with only
*************** is either an ``out`` parameter or the fu
*** 8030,8036 ****
  The debug information reflects these transformations and not the original
  Ada source code.
  
! GNAT LLVM doesn't fully implement the :switch:`-fcheck-stack` switch.
  When you specify it, the code generated by GNAT LLVM tests for allocating
  overly-large items on the stack, but not all cases of stack overflow.  For
  example, if you have a very deep recursion where each call only uses a
--- 8018,8024 ----
  The debug information reflects these transformations and not the original
  Ada source code.
  
! GNAT LLVM doesn't fully implement the :switch:`-fstack-check` switch.
  When you specify it, the code generated by GNAT LLVM tests for allocating
  overly-large items on the stack, but not all cases of stack overflow.  For
  example, if you have a very deep recursion where each call only uses a
*************** small amount of stack and the total stac
*** 8038,8044 ****
  available stack, the program will be terminated by a signal instead of
  raising an Ada exception.
  
! GNAT LLVM doesn't support the ``Scalar_Storage_Order`` pragma except when
  it's used to confirm the chosen storage order. This is because this facility
  is provided by GCC but not by LLVM.
  
--- 8026,8032 ----
  available stack, the program will be terminated by a signal instead of
  raising an Ada exception.
  
! GNAT LLVM doesn't support the ``Scalar_Storage_Order`` attribute except when
  it's used to confirm the chosen storage order. This is because this facility
  is provided by GCC but not by LLVM.
  
*************** GNAT LLVM doesn't support Convention C++
*** 8046,8051 ****
--- 8034,8043 ----
  'name mangling' by encoding parameter and return datatypes into a
  function name.
  
+ The inline assembler in GNAT LLVM is not yet feature complete. For example, it
+ can't handle more than one output variable, and it doesn't support all
+ constraints.
+ 
  .. only:: PRO
  
      Unlike the GCC versions of GNAT, GNAT LLVM doesn't include any
diff -Nrcpad gcc-17-20260531/gcc/ada/einfo.ads gcc-17-20260607/gcc/ada/einfo.ads
*** gcc-17-20260531/gcc/ada/einfo.ads	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/einfo.ads	Sun Jun  7 22:32:05 2026
*************** package Einfo is
*** 730,740 ****
  --    Component_Type [implementation base type only]
  --       Defined in array types and string types. References component type.
  
- --    Contains_Ignored_Ghost_Code
- --       Defined in blocks, packages and their bodies, subprograms and their
- --       bodies. Set if the entity contains any ignored Ghost code in the form
- --       of declaration, procedure call, assignment statement or pragma.
- 
  --    Continue_Mark
  --       Defined in loop entities. It points to the loop's statement after
  --       which the label for continue statements must be inserted if one is
--- 730,735 ----
*************** package Einfo is
*** 1256,1272 ****
  --       Note one obscure case: for pragma Default_Storage_Pool (null), the
  --       Etype of the N_Null node is Empty.
  
! --    Extra_Accessibility
! --       Defined in formal parameters in the non-generic case. Normally Empty,
! --       but if expansion is active, and a parameter is one for which a
  --       dynamic accessibility check is required, then an extra formal of type
  --       Natural is created (see description of field Extra_Formal), and the
! --       Extra_Accessibility field of the formal parameter points to the entity
! --       for this extra formal. Also defined in variables when compiling
! --       receiving stubs. In this case, a non Empty value means that this
! --       variable's accessibility depth has been transmitted by the caller and
! --       must be retrieved through the entity designed by this field instead of
! --       being computed.
  
  --    Extra_Accessibility_Of_Result
  --       Defined in (non-generic) Function, Operator, and Subprogram_Type
--- 1251,1267 ----
  --       Note one obscure case: for pragma Default_Storage_Pool (null), the
  --       Etype of the N_Null node is Empty.
  
! --    Extra_Accessibility_Of_Object
! --       Defined in formal parameters in the non-generic case: normally Empty,
! --       but if expansion is active, and a formal parameter is one for which a
  --       dynamic accessibility check is required, then an extra formal of type
  --       Natural is created (see description of field Extra_Formal), and the
! --       Extra_Accessibility_Of_Object of the formal parameter points to the
! --       entity of this extra formal. Defined in stand-alone objects: normally
! --       Empty, but if expansion is active, and the object is one for which a
! --       dynamic accessibility check is required (AI05-0148), then a variable
! --       of type Natural is created and the Extra_Accessibility_Of_Object of
! --       the object points to the entity of this variable.
  
  --    Extra_Accessibility_Of_Result
  --       Defined in (non-generic) Function, Operator, and Subprogram_Type
*************** package Einfo is
*** 1294,1300 ****
  --       parameters require extra implicit information to be passed (e.g. the
  --       flag indicating if an unconstrained variant record argument is
  --       constrained, and the accessibility level for access parameters). See
! --       description of Extra_Constrained, Extra_Accessibility fields for
  --       further details. Extra formal parameters are constructed to represent
  --       these values, and chained to the end of the list of formals using the
  --       Extra_Formal field (i.e. the Extra_Formal field of the last "real"
--- 1289,1295 ----
  --       parameters require extra implicit information to be passed (e.g. the
  --       flag indicating if an unconstrained variant record argument is
  --       constrained, and the accessibility level for access parameters). See
! --       description of Extra_Constrained and Extra_Accessibility_Of_Object for
  --       further details. Extra formal parameters are constructed to represent
  --       these values, and chained to the end of the list of formals using the
  --       Extra_Formal field (i.e. the Extra_Formal field of the last "real"
*************** package Einfo is
*** 1493,1498 ****
--- 1488,1504 ----
  --       for Ghost entities without an assertion level, or a user-defined
  --       assertion level.
  
+ --    Has_Activation_Chain_Entity
+ --       Defined in entities that can appear in the scope stack (see spec
+ --       of Sem). It is set if an activation chain entity (_chain) has been
+ --       declared and initialized in the corresponding scope.
+ 
+ --       Note that E_Return_Statement also has this attribute, although it is
+ --       not really a task activator: this chain is only used to store the
+ --       tasks temporarily, and is not used for activating them. On successful
+ --       completion of the return statement, the created tasks are moved onto
+ --       the caller's chain, and the caller activates them.
+ 
  --    Has_Aliased_Components [implementation base type only]
  --       Defined in array type entities. Indicates that the component type
  --       of the array is aliased. Should this also be set for records to
*************** package Einfo is
*** 3041,3050 ****
  --       about them.
  
  --    Is_Limited_Composite
! --       Defined in all entities. Set for composite types that have a limited
! --       component. Used to enforce the rule that operations on the composite
! --       type that depend on the full view of the component do not become
! --       visible until the immediate scope of the composite type itself
  --       (RM 7.3.1 (5)).
  
  --    Is_Limited_Interface
--- 3047,3056 ----
  --       about them.
  
  --    Is_Limited_Composite
! --       Defined in types and subtypes. Set for composite types that have a
! --       limited component. Used to enforce the rule that operations on the
! --       composite type that depend on the full view of the component do not
! --       become visible until the immediate scope of the composite type itself
  --       (RM 7.3.1 (5)).
  
  --    Is_Limited_Interface
*************** package Einfo is
*** 3066,3077 ****
  
  --    Is_Local_Anonymous_Access
  --       Defined in access types. Set for an anonymous access type to indicate
! --       that the type is created for a record component with an access
! --       definition, an array component, or (pre-Ada 2012) a standalone object.
! --       Such anonymous types have an accessibility level equal to that of the
! --       declaration in which they appear, unlike the anonymous access types
! --       that are created for access parameters, access discriminants, and
! --       (as of Ada 2012) stand-alone objects.
  
  --    Is_Loop_Parameter
  --       Applies to all entities. Certain loops, in particular "for ... of"
--- 3072,3084 ----
  
  --    Is_Local_Anonymous_Access
  --       Defined in access types. Set for an anonymous access type to indicate
! --       that the type is created for an array or record component with access
! --       definition, an access result, a return object, or (before Ada 2012) a
! --       stand-alone object. Such anonymous types have an accessibility level
! --       equal to that of the declaration in which they appear (or something
! --       equivalent), unlike the anonymous access types that are created for
! --       access parameters, access discriminants, and (in Ada 2012 and later
! --       versions of the language) stand-alone objects.
  
  --    Is_Loop_Parameter
  --       Applies to all entities. Certain loops, in particular "for ... of"
*************** package Einfo is
*** 3682,3688 ****
  --       having Has_Machine_Radix_Clause True. This happens when a type is
  --       derived from a type with a clause present.
  
! --    Master_Id
  --       Defined in access types and subtypes. Empty unless Has_Task is set for
  --       the designated type, in which case it points to the entity for the
  --       Master_Id for the access type master. Also set for access-to-limited-
--- 3689,3695 ----
  --       having Has_Machine_Radix_Clause True. This happens when a type is
  --       derived from a type with a clause present.
  
! --    Master_Id [root type only]
  --       Defined in access types and subtypes. Empty unless Has_Task is set for
  --       the designated type, in which case it points to the entity for the
  --       Master_Id for the access type master. Also set for access-to-limited-
*************** package Einfo is
*** 5246,5252 ****
     --  E_Access_Type
     --  E_Access_Subtype
     --    Direct_Primitive_Operations $$$ type
!    --    Master_Id
     --    Directly_Designated_Type
     --    Associated_Storage_Pool               (root type only)
     --    Finalization_Collection               (root type only)
--- 5253,5259 ----
     --  E_Access_Type
     --  E_Access_Subtype
     --    Direct_Primitive_Operations $$$ type
!    --    Master_Id                             (root type only)
     --    Directly_Designated_Type
     --    Associated_Storage_Pool               (root type only)
     --    Finalization_Collection               (root type only)
*************** package Einfo is
*** 5325,5330 ****
--- 5332,5338 ----
     --    Contains_Ignored_Ghost_Code
     --    Delay_Cleanups
     --    Discard_Names
+    --    Has_Activation_Chain_Entity
     --    Has_Master_Entity
     --    Has_Nested_Block_With_Handler
     --    Is_Exception_Handler
*************** package Einfo is
*** 5385,5391 ****
     --    Discriminal_Link
     --    Full_View
     --    Esize
!    --    Extra_Accessibility                   (constants only)
     --    Alignment
     --    Actual_Subtype
     --    Renamed_Object
--- 5393,5399 ----
     --    Discriminal_Link
     --    Full_View
     --    Esize
!    --    Extra_Accessibility_Of_Object         (constants only)
     --    Alignment
     --    Actual_Subtype
     --    Renamed_Object
*************** package Einfo is
*** 5637,5642 ****
--- 5645,5651 ----
     --    Delay_Cleanups
     --    Discard_Names
     --    Elaboration_Entity_Required
+    --    Has_Activation_Chain_Entity
     --    Has_Completion
     --    Has_Controlling_Result
     --    Has_Expanded_Contract                (non-generic case only)
*************** package Einfo is
*** 5696,5702 ****
     --  E_General_Access_Type
     --    First_Entity $$$
     --    Renamed_Entity $$$
!    --    Master_Id
     --    Directly_Designated_Type
     --    Associated_Storage_Pool              (root type only)
     --    Finalization_Collection              (root type only)
--- 5705,5711 ----
     --  E_General_Access_Type
     --    First_Entity $$$
     --    Renamed_Entity $$$
!    --    Master_Id                            (root type only)
     --    Directly_Designated_Type
     --    Associated_Storage_Pool              (root type only)
     --    Finalization_Collection              (root type only)
*************** package Einfo is
*** 5736,5742 ****
     --    Discriminal_Link                     (discriminals only)
     --    Entry_Component
     --    Esize
!    --    Extra_Accessibility
     --    Alignment
     --    Extra_Formal
     --    Unset_Reference
--- 5745,5751 ----
     --    Discriminal_Link                     (discriminals only)
     --    Entry_Component
     --    Esize
!    --    Extra_Accessibility_Of_Object
     --    Alignment
     --    Extra_Formal
     --    Unset_Reference
*************** package Einfo is
*** 5778,5783 ****
--- 5787,5793 ----
  
     --  E_Loop
     --    First_Exit_Statement
+    --    Has_Activation_Chain_Entity
     --    Has_Exit
     --    Has_Loop_Entry_Attributes
     --    Has_Master_Entity
*************** package Einfo is
*** 5892,5897 ****
--- 5902,5908 ----
     --    Elaborate_Body_Desirable             (non-generic case only)
     --    Elaboration_Entity_Required
     --    From_Limited_With
+    --    Has_Activation_Chain_Entity
     --    Has_All_Calls_Remote
     --    Has_Completion
     --    Has_Forward_Instantiation
*************** package Einfo is
*** 6003,6008 ****
--- 6014,6020 ----
     --    Default_Expressions_Processed
     --    Delay_Cleanups
     --    Discard_Names
+    --    Has_Activation_Chain_Entity
     --    Has_Completion
     --    Has_Expanded_Contract                (non-generic case only)
     --    Has_Master_Entity
*************** package Einfo is
*** 6174,6179 ****
--- 6186,6192 ----
     --    Return_Applies_To
     --    First_Entity $$$
     --    Last_Entity $$$
+    --    Has_Activation_Chain_Entity
  
     --  E_Signed_Integer_Type
     --  E_Signed_Integer_Subtype
*************** package Einfo is
*** 6259,6264 ****
--- 6272,6278 ----
     --    Contract
     --    SPARK_Aux_Pragma
     --    Delay_Cleanups
+    --    Has_Activation_Chain_Entity
     --    Has_Master_Entity
     --    Has_Storage_Size_Clause              (base type only)
     --    Ignore_SPARK_Mode_Pragmas
*************** package Einfo is
*** 6279,6285 ****
     --    Part_Of_Constituents
     --    Part_Of_References
     --    Esize
!    --    Extra_Accessibility
     --    Alignment
     --    Unset_Reference
     --    Actual_Subtype
--- 6293,6299 ----
     --    Part_Of_Constituents
     --    Part_Of_References
     --    Esize
!    --    Extra_Accessibility_Of_Object
     --    Alignment
     --    Unset_Reference
     --    Actual_Subtype
diff -Nrcpad gcc-17-20260531/gcc/ada/env.c gcc-17-20260607/gcc/ada/env.c
*** gcc-17-20260531/gcc/ada/env.c	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/env.c	Sun Jun  7 22:32:05 2026
*************** __gnat_getenv (char *name, int *len, cha
*** 99,106 ****
  void
  __gnat_setenv (char *name, char *value)
  {
  #if (defined (__vxworks) && (defined (__RTP__) || _WRS_VXWORKS_MAJOR >= 7)) \
!     || defined (__APPLE__)
    setenv (name, value, 1);
  
  #else
--- 99,111 ----
  void
  __gnat_setenv (char *name, char *value)
  {
+ /* We use setenv on a few operating systems where we are sure it's available,
+    plus on all platforms that claim to support a POSIX version where setenv is
+    mandatory */
  #if (defined (__vxworks) && (defined (__RTP__) || _WRS_VXWORKS_MAJOR >= 7)) \
!     || defined (__APPLE__) \
!     || defined (__linux__) \
!     || _POSIX_VERSION >= 200112L
    setenv (name, value, 1);
  
  #else
diff -Nrcpad gcc-17-20260531/gcc/ada/err_vars.ads gcc-17-20260607/gcc/ada/err_vars.ads
*** gcc-17-20260531/gcc/ada/err_vars.ads	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/err_vars.ads	Sun Jun  7 22:32:05 2026
*************** package Err_Vars is
*** 55,60 ****
--- 55,67 ----
     --  not get reset by any Error_Msg call, so the caller is responsible
     --  for resetting it.
  
+    Error_Msg_Qual_For_Standard : Boolean := False;
+    --  Typically we do not want to specify the Standard package when presenting
+    --  entity names even when Error_Msg_Qual_Level is not zero. However
+    --  sometimes we want to emphasize the fact that it is the entity from
+    --  standard. Note that this value does not get reset by any Error_Msg call,
+    --  so the caller is responsible for resetting it.
+ 
     Current_Error_Source_File : Source_File_Index := No_Source_File;
     --  Id of current messages. Used to post file name when unit changes. This
     --  is initialized to Main_Source_File at the start of a compilation, which
diff -Nrcpad gcc-17-20260531/gcc/ada/errout.adb gcc-17-20260607/gcc/ada/errout.adb
*** gcc-17-20260531/gcc/ada/errout.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/errout.adb	Sun Jun  7 22:32:05 2026
*************** package body Errout is
*** 3752,3758 ****
              --  Handle direct attribute definitions
  
              if Parent_Kind (Node) in N_Subprogram_Specification
!               and then Original_Node (Parent (Node)) /= Parent (Node)
                and then Nkind (Defining_Unit_Name
                                 (Original_Node (Parent (Node))))
                           = N_Attribute_Reference
--- 3752,3758 ----
              --  Handle direct attribute definitions
  
              if Parent_Kind (Node) in N_Subprogram_Specification
!               and then Is_Rewrite_Substitution (Parent (Node))
                and then Nkind (Defining_Unit_Name
                                 (Original_Node (Parent (Node))))
                           = N_Attribute_Reference
*************** package body Errout is
*** 3853,3858 ****
--- 3853,3869 ----
        if Is_Internal_Name then
           Kill_Message := True;
        end if;
+ 
+       --  Replace compiler generated name for direct attribute definitions with
+       --  a nicer name.
+ 
+       if Name_Len > 5
+         and then Name_Buffer (1) = 'D'
+         and then Name_Buffer (Name_Len - 3 .. Name_Len) = "_Att"
+       then
+          Replace_With_Attribute_Definition;
+       end if;
+ 
        --  Remaining step is to adjust casing and possibly add 'Class
  
        Adjust_Name_Case (Global_Name_Buffer, Loc);
*************** package body Errout is
*** 4129,4135 ****
  
     procedure Set_Qualification (N : Nat; E : Entity_Id) is
     begin
!       if N /= 0 and then Scope (E) /= Standard_Standard then
           Set_Qualification (N - 1, Scope (E));
           Set_Msg_Node (Scope (E));
           Set_Msg_Char ('.');
--- 4140,4149 ----
  
     procedure Set_Qualification (N : Nat; E : Entity_Id) is
     begin
!       if N /= 0
!         and then
!           (Scope (E) /= Standard_Standard or else Error_Msg_Qual_For_Standard)
!       then
           Set_Qualification (N - 1, Scope (E));
           Set_Msg_Node (Scope (E));
           Set_Msg_Char ('.');
diff -Nrcpad gcc-17-20260531/gcc/ada/errout.ads gcc-17-20260607/gcc/ada/errout.ads
*** gcc-17-20260531/gcc/ada/errout.ads	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/errout.ads	Sun Jun  7 22:32:05 2026
*************** package Errout is
*** 483,488 ****
--- 483,491 ----
     --  not get reset by any Error_Msg call, so the caller is responsible
     --  for resetting it.
  
+    Error_Msg_Qual_For_Standard : Boolean renames
+      Err_Vars.Error_Msg_Qual_For_Standard;
+ 
     Error_Msg_Warn : Boolean renames Err_Vars.Error_Msg_Warn;
     --  Used if current message contains a < insertion character to indicate
     --  if the current message is a warning message. Must be set appropriately
diff -Nrcpad gcc-17-20260531/gcc/ada/erroutc.adb gcc-17-20260607/gcc/ada/erroutc.adb
*** gcc-17-20260531/gcc/ada/erroutc.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/erroutc.adb	Sun Jun  7 22:32:05 2026
*************** package body Erroutc is
*** 1448,1453 ****
--- 1448,1488 ----
        end loop;
     end Prescan_Message;
  
+    ---------------------------------------
+    -- Replace_With_Attribute_Definition --
+    ---------------------------------------
+ 
+    procedure Replace_With_Attribute_Definition is
+       First   : constant Integer := 2;
+       Last    : constant Integer := Name_Len - 4;
+       Att_Buf : Bounded_String (Max_Length => Name_Len - 7);
+ 
+    begin
+       Until_Tick :
+       for J in First .. Last loop
+ 
+          --  J could be at the position separating the prefix from the
+          --  attribute name.
+ 
+          if Name_Buffer (J) = '_' then
+             Att_Buf.Length := 0;
+             Append (Att_Buf, Name_Buffer (J + 1 .. Last));
+             Set_Casing (Att_Buf, All_Lower_Case);
+ 
+             if Is_Direct_Attribute_Definition_Name (Name_Find (Att_Buf)) then
+                Name_Buffer (J) := ''';
+                exit Until_Tick;
+             end if;
+          end if;
+       end loop Until_Tick;
+ 
+       --  Remove prefix 'D' and suffix "_Att"
+ 
+       Name_Buffer (1 .. Last - 1) := Name_Buffer (2 .. Last);
+       Name_Len := Last - 1;
+       Set_Casing (All_Lower_Case);
+    end Replace_With_Attribute_Definition;
+ 
     ----------------
     -- Same_Error --
     ----------------
*************** package body Erroutc is
*** 1713,1758 ****
     ----------------------------
  
     procedure Set_Msg_Insertion_Name is
-       procedure Replace_With_Attribute_Definition;
-       --  This procedure handles direct attribute definition names of the form:
-       --    'D' Prefix_Name "_" Attribute_Name "_Att"
-       --  Specifically, it replace the current Namet.Global_Name_Buffer with an
-       --  all lowercase string of the prefix, and a tick attribute; at this
-       --  stage there is no way to recognize more than an ending attribute ???
-       --
-       --  Note that, at this point, it is not possible to restore the original
-       --  casing thus lowercase is default.a
- 
-       procedure Replace_With_Attribute_Definition is
-          First   : constant Integer := 2;
-          Last    : constant Integer := Name_Len - 4;
-          Att_Buf : Bounded_String (Max_Length => Name_Len - 7);
-       begin
-          Until_Tick :
-          for J in First .. Last loop
- 
-             --  J could be at the position separating the prefix from the
-             --  attribute name.
- 
-             if Name_Buffer (J) = '_' then
-                Att_Buf.Length := 0;
-                Append (Att_Buf, Name_Buffer (J + 1 .. Last));
-                Set_Casing (Att_Buf, All_Lower_Case);
-                if Is_Direct_Attribute_Definition_Name (Name_Find (Att_Buf))
-                then
-                   Name_Buffer (J) := ''';
-                   exit Until_Tick;
-                end if;
-             end if;
-          end loop Until_Tick;
- 
-          --  Remove prefix 'D' and suffix "_Att"
- 
-          Name_Buffer (1 .. Last - 1) := Name_Buffer (2 .. Last);
-          Name_Len := Last - 1;
-          Set_Casing (All_Lower_Case);
-       end Replace_With_Attribute_Definition;
- 
     begin
        if Error_Msg_Name_1 = No_Name then
           null;
--- 1748,1753 ----
*************** package body Erroutc is
*** 1798,1803 ****
--- 1793,1801 ----
           --  Else output with surrounding quotes in proper casing mode
  
           else
+             --  Replace compiler generated name for direct attribute
+             --  definitions with a nicer one.
+ 
              if Name_Buffer (1) = 'D'
                and then Name_Buffer (Name_Len - 3 .. Name_Len) = "_Att"
              then
diff -Nrcpad gcc-17-20260531/gcc/ada/erroutc.ads gcc-17-20260607/gcc/ada/erroutc.ads
*** gcc-17-20260531/gcc/ada/erroutc.ads	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/erroutc.ads	Sun Jun  7 22:32:05 2026
*************** package Erroutc is
*** 770,775 ****
--- 770,781 ----
     --  Iterate over all of the errors in the error chain and mark all messages
     --  as deleted if they match the Filter.
  
+    procedure Replace_With_Attribute_Definition;
+    --  The caller has placed in Namet.Global_Name_Buffer the internal encoding
+    --  of a direct attribute definition; this subprogram rewrites that name to
+    --  a user-readable T'attribute string. The original source casing cannot
+    --  be recovered from the names table, so the result is all lowercase.
+ 
     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
     --  two messages is identical, or if one of them is the same as the other
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_aggr.adb gcc-17-20260607/gcc/ada/exp_aggr.adb
*** gcc-17-20260531/gcc/ada/exp_aggr.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_aggr.adb	Sun Jun  7 22:32:05 2026
*************** package body Exp_Aggr is
*** 2060,2066 ****
        --  in-place functions are called in the expanded code.
  
        if Nkind (Parent (N)) = N_Object_Declaration and then Has_Task (Typ) then
!          Build_Master_Entity (Defining_Identifier (Parent (N)));
        end if;
  
        --  STEP 1: Process component associations
--- 2060,2066 ----
        --  in-place functions are called in the expanded code.
  
        if Nkind (Parent (N)) = N_Object_Declaration and then Has_Task (Typ) then
!          Build_Master_Entity (Parent (N));
        end if;
  
        --  STEP 1: Process component associations
*************** package body Exp_Aggr is
*** 3345,3365 ****
                    Generate_Finalization_Actions;
                 end if;
  
!                --  Ada 2005 (AI-287): If the component type has tasks then
!                --  generate the activation chain and master entities (except
!                --  in case of an allocator because in that case these entities
!                --  are generated by Build_Task_Allocate_Block).
  
!                declare
!                   Inside_Allocator : Boolean := False;
!                   P                : Node_Id := Parent (N);
  
!                begin
!                   if Is_Task_Type (Ctype) or else Has_Task (Ctype) then
                       while Present (P) loop
                          if Nkind (P) = N_Allocator then
                             Inside_Allocator := True;
                             exit;
                          end if;
  
                          P := Parent (P);
--- 3345,3371 ----
                    Generate_Finalization_Actions;
                 end if;
  
!                --  Ada 2005 (AI-287): If the component type has tasks, then
!                --  generate the activation chain entity, except in the case
!                --  of an allocator, where it will be created by the call to
!                --  Build_Task_Allocate_Block from Convert_Aggr_In_Allocator.
  
!                if Has_Task (Ctype) then
!                   declare
!                      Inside_Allocator : Boolean := False;
!                      P                : Node_Id;
  
!                   begin
!                      P := Parent (N);
                       while Present (P) loop
                          if Nkind (P) = N_Allocator then
                             Inside_Allocator := True;
                             exit;
+ 
+                         --  Prevent the search from going too far
+ 
+                         elsif Is_Body_Or_Package_Declaration (P) then
+                            exit;
                          end if;
  
                          P := Parent (P);
*************** package body Exp_Aggr is
*** 3368,3375 ****
                       if not Inside_Init_Proc and not Inside_Allocator then
                          Build_Activation_Chain_Entity (N);
                       end if;
!                   end if;
!                end;
  
                 if not Restriction_Active (No_Default_Initialization) then
                    Append_List_To (L,
--- 3374,3381 ----
                       if not Inside_Init_Proc and not Inside_Allocator then
                          Build_Activation_Chain_Entity (N);
                       end if;
!                   end;
!                end if;
  
                 if not Restriction_Active (No_Default_Initialization) then
                    Append_List_To (L,
*************** package body Exp_Aggr is
*** 3727,3733 ****
  
           begin
              if Has_Task (Typ) then
!                Insert_Actions (N, Build_Task_Allocate_Block (Aggr, Stmts));
              else
                 Insert_Actions (N, Stmts);
              end if;
--- 3733,3739 ----
  
           begin
              if Has_Task (Typ) then
!                Insert_Action (N, Build_Task_Allocate_Block (Aggr, Stmts));
              else
                 Insert_Actions (N, Stmts);
              end if;
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_attr.adb gcc-17-20260607/gcc/ada/exp_attr.adb
*** gcc-17-20260531/gcc/ada/exp_attr.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_attr.adb	Sun Jun  7 22:32:05 2026
*************** package body Exp_Attr is
*** 131,150 ****
     --  Build a call to Disp_Get_Task_Id, passing Actual as actual parameter
  
     function Build_Record_VS_Func
!      (Attr       : Node_Id;
        Formal_Typ : Entity_Id;
        Rec_Typ    : Entity_Id) return Entity_Id;
!    --  Validate the components, discriminants, and variants of a record type by
!    --  means of a function. Return the entity of the validation function. The
!    --  parameters are as follows:
!    --
!    --    * Attr - the 'Valid_Scalars attribute for which the function is
!    --      generated.
!    --
!    --    * Formal_Typ - the type of the generated function's only formal
!    --      parameter.
!    --
!    --    * Rec_Typ - the record type whose internals are to be validated
  
     function Default_Streaming_Unavailable (Typ : Entity_Id) return Boolean;
     --  In most cases, references to unavailable streaming attributes
--- 131,143 ----
     --  Build a call to Disp_Get_Task_Id, passing Actual as actual parameter
  
     function Build_Record_VS_Func
!      (N          : Node_Id;
        Formal_Typ : Entity_Id;
        Rec_Typ    : Entity_Id) return Entity_Id;
!    --  Insert before N the body of a function implementing the validation of
!    --  the components, discriminants, and variants of record type Rec_Type.
!    --  Formal_Typ is the type of the generated function's formal parameter.
!    --  Return the entity of the validation function.
  
     function Default_Streaming_Unavailable (Typ : Entity_Id) return Boolean;
     --  In most cases, references to unavailable streaming attributes
*************** package body Exp_Attr is
*** 677,683 ****
     --------------------------
  
     function Build_Record_VS_Func
!      (Attr       : Node_Id;
        Formal_Typ : Entity_Id;
        Rec_Typ    : Entity_Id) return Entity_Id
     is
--- 670,676 ----
     --------------------------
  
     function Build_Record_VS_Func
!      (N          : Node_Id;
        Formal_Typ : Entity_Id;
        Rec_Typ    : Entity_Id) return Entity_Id
     is
*************** package body Exp_Attr is
*** 688,694 ****
        --  NOTE: The routines within Build_Record_VS_Func are intentionally
        --  unnested to avoid deep indentation of code.
  
!       Loc : constant Source_Ptr := Sloc (Attr);
  
        procedure Validate_Component_List
          (Obj_Id    : Entity_Id;
--- 681,687 ----
        --  NOTE: The routines within Build_Record_VS_Func are intentionally
        --  unnested to avoid deep indentation of code.
  
!       Loc : constant Source_Ptr := Sloc (N);
  
        procedure Validate_Component_List
          (Obj_Id    : Entity_Id;
*************** package body Exp_Attr is
*** 715,720 ****
--- 708,720 ----
        --  Fields. Obj_Id denotes the entity of the validation parameter. All
        --  new code is added to list Stmts.
  
+       procedure Validate_Record
+         (Obj_Id : Entity_Id;
+          Typ    : Entity_Id;
+          Stmts  : in out List_Id);
+       --  Process record type Typ. Obj_Id denotes the entity of the validation
+       --  parameter. All new code is added to list Stmts.
+ 
        procedure Validate_Variant
          (Obj_Id : Entity_Id;
           Var    : Node_Id;
*************** package body Exp_Attr is
*** 852,858 ****
  
           if Present (Cond) then
              Append_New_To (Stmts,
!               Make_Implicit_If_Statement (Attr,
                  Condition       => Cond,
                  Then_Statements => New_List (
                    Make_Simple_Return_Statement (Loc,
--- 852,858 ----
  
           if Present (Cond) then
              Append_New_To (Stmts,
!               Make_Implicit_If_Statement (N,
                  Condition       => Cond,
                  Then_Statements => New_List (
                    Make_Simple_Return_Statement (Loc,
*************** package body Exp_Attr is
*** 860,865 ****
--- 860,922 ----
           end if;
        end Validate_Fields;
  
+       ---------------------
+       -- Validate_Record --
+       ---------------------
+ 
+       procedure Validate_Record
+         (Obj_Id : Entity_Id;
+          Typ    : Entity_Id;
+          Stmts  : in out List_Id)
+       is
+          Typ_Decl : constant Node_Id := Declaration_Node (Typ);
+          Typ_Def  : constant Node_Id := Type_Definition (Typ_Decl);
+ 
+          Comps   : Node_Id;
+          Typ_Ext : Node_Id;
+ 
+       begin
+          --  The components of a derived type are located in the extension part
+ 
+          if Nkind (Typ_Def) = N_Derived_Type_Definition then
+             Typ_Ext := Record_Extension_Part (Typ_Def);
+ 
+             if Present (Typ_Ext) then
+                Comps := Component_List (Typ_Ext);
+             else
+                Comps := Empty;
+             end if;
+ 
+          --  Otherwise the components are available in the definition
+ 
+          else
+             Comps := Component_List (Typ_Def);
+          end if;
+ 
+          --  Validate the discriminants
+ 
+          if not Is_Unchecked_Union (Typ) then
+             Validate_Fields
+               (Obj_Id => Obj_Id,
+                Fields => Discriminant_Specifications (Typ_Decl),
+                Stmts  => Stmts);
+          end if;
+ 
+          --  Validate the components and variant parts
+ 
+          Validate_Component_List
+            (Obj_Id    => Obj_Id,
+             Comp_List => Comps,
+             Stmts     => Stmts);
+ 
+          --  Recurse on the parent subtype, if any
+ 
+          if Present (Parent_Subtype (Typ)) then
+             Validate_Record
+               (Obj_Id, Validated_View (Parent_Subtype (Typ)), Stmts);
+          end if;
+       end Validate_Record;
+ 
        ----------------------
        -- Validate_Variant --
        ----------------------
*************** package body Exp_Attr is
*** 960,974 ****
  
        --  Local variables
  
!       Func_Id  : constant Entity_Id := Make_Temporary (Loc, 'V',
!                                          Related_Node => Attr);
        Obj_Id   : constant Entity_Id := Make_Temporary (Loc, 'R');
!       Comps    : Node_Id;
!       Stmts    : List_Id;
!       Typ      : Entity_Id;
!       Typ_Decl : Node_Id;
!       Typ_Def  : Node_Id;
!       Typ_Ext  : Node_Id;
  
     --  Start of processing for Build_Record_VS_Func
  
--- 1017,1028 ----
  
        --  Local variables
  
!       Func_Id  : constant Entity_Id :=
!                    Make_Temporary (Loc, 'V', Related_Node => N);
        Obj_Id   : constant Entity_Id := Make_Temporary (Loc, 'R');
! 
!       Stmts : List_Id;
!       Typ   : Entity_Id;
  
     --  Start of processing for Build_Record_VS_Func
  
*************** package body Exp_Attr is
*** 981,1006 ****
           Typ := Validated_View (Root_Type (Typ));
        end if;
  
-       Typ_Decl := Declaration_Node (Typ);
-       Typ_Def  := Type_Definition (Typ_Decl);
- 
-       --  The components of a derived type are located in the extension part
- 
-       if Nkind (Typ_Def) = N_Derived_Type_Definition then
-          Typ_Ext := Record_Extension_Part (Typ_Def);
- 
-          if Present (Typ_Ext) then
-             Comps := Component_List (Typ_Ext);
-          else
-             Comps := Empty;
-          end if;
- 
-       --  Otherwise the components are available in the definition
- 
-       else
-          Comps := Component_List (Typ_Def);
-       end if;
- 
        --  The code generated by this routine is as follows:
        --
        --    function Func_Id (Obj_Id : Formal_Typ) return Boolean is
--- 1035,1040 ----
*************** package body Exp_Attr is
*** 1039,1059 ****
  
        Stmts := No_List;
  
!       --  Validate the discriminants
! 
!       if not Is_Unchecked_Union (Rec_Typ) then
!          Validate_Fields
!            (Obj_Id => Obj_Id,
!             Fields => Discriminant_Specifications (Typ_Decl),
!             Stmts  => Stmts);
!       end if;
! 
!       --  Validate the components and variant parts
! 
!       Validate_Component_List
!         (Obj_Id    => Obj_Id,
!          Comp_List => Comps,
!          Stmts     => Stmts);
  
        --  Generate:
        --    return True;
--- 1073,1079 ----
  
        Stmts := No_List;
  
!       Validate_Record (Obj_Id, Typ, Stmts);
  
        --  Generate:
        --    return True;
*************** package body Exp_Attr is
*** 1076,1082 ****
           Set_Debug_Info_Off (Func_Id);
        end if;
  
!       Insert_Action (Attr,
          Make_Subprogram_Body (Loc,
            Specification =>
              Make_Function_Specification (Loc,
--- 1096,1102 ----
           Set_Debug_Info_Off (Func_Id);
        end if;
  
!       Insert_Action (N,
          Make_Subprogram_Body (Loc,
            Specification =>
              Make_Function_Specification (Loc,
*************** package body Exp_Attr is
*** 2062,2068 ****
--- 2082,2100 ----
           Subp     : out Entity_Id;
           Attr_Ref : Node_Id)
        is
+          Ancestor        : Node_Id := Attr_Ref;
+          Insertion_Scope : Entity_Id := Empty;
+          Insertion_Point : Node_Id := Empty;
+          Insert_Before   : Boolean := False;
+          First_Typ       : constant Entity_Id := First_Subtype (Typ);
+          Typ_Comp_Unit   : Node_Id := Enclosing_Comp_Unit_Node (First_Typ);
+ 
           procedure Build;
+          --  Call Build_Type_Attr_Subprogram with appropriate parameters.
+ 
+          procedure Skip_Non_Source_Subps;
+          --  Refine Insertion_Point choice (see comment inside procedure).
+ 
           procedure Build is
           begin
              Build_Type_Attr_Subprogram
*************** package body Exp_Attr is
*** 2071,2082 ****
                 Subp => Subp);
           end Build;
  
!          Ancestor        : Node_Id := Attr_Ref;
!          Insertion_Scope : Entity_Id := Empty;
!          Insertion_Point : Node_Id := Empty;
!          Insert_Before   : Boolean := False;
!          First_Typ       : constant Entity_Id := First_Subtype (Typ);
!          Typ_Comp_Unit   : Node_Id := Enclosing_Comp_Unit_Node (First_Typ);
        begin
           --  handle no-enclosing-comp-unit cases
           if No (Typ_Comp_Unit) then
--- 2103,2151 ----
                 Subp => Subp);
           end Build;
  
!          procedure Skip_Non_Source_Subps is
!             --  A hazard to avoid is use-before-definition
!             --  errors that can result when we have two of these
!             --  subprograms where one calls the other (e.g., given
!             --  Put_Image procedures for a composite type and
!             --  for a component type, the former will often call
!             --  the latter). At the time a subprogram is inserted,
!             --  we know that the one and only call to it is
!             --  somewhere in the subtree rooted at Ancestor.
!             --  So that placement constraint is easy to satisfy.
!             --  But if we construct another subprogram later and
!             --  if that second subprogram calls the first one,
!             --  then we need to be careful not to place the
!             --  second one ahead of the first one. That is the goal
!             --  of this loop. This may need to be revised if it turns
!             --  out that other stuff is being inserted on the list,
!             --  so that the "skip" loop terminates too early.
! 
!             --  On the other hand, inserting things earlier might
!             --  offer more opportunities for sharing.
!             --  If Ancestor occurs in the statement list of a
!             --  subprogram body (ignore the HSS node for now),
!             --  then perhaps we should look for an insertion site
!             --  in the decl list of the subprogram body and only
!             --  look in the statement list if the decl list is empty.
!             --  Similarly if Ancestor occurs in the private decls list
!             --  for a package spec that has a non-empty visible
!             --  decls list. No examples where this would result in more
!             --  sharing and less duplication have been observed, so this
!             --  is just speculation.
!          begin
!             while Insertion_Point /= Ancestor
!               and then Nkind (Insertion_Point) = N_Subprogram_Body
!               and then not Comes_From_Source (Insertion_Point)
!               and then Present (Next (Insertion_Point))
!             loop
!                Next (Insertion_Point);
!             end loop;
!             pragma Assert (Present (Insertion_Point));
!          end Skip_Non_Source_Subps;
! 
!       --  Start of processing for Build_And_Insert_Type_Attr_Subp
! 
        begin
           --  handle no-enclosing-comp-unit cases
           if No (Typ_Comp_Unit) then
*************** package body Exp_Attr is
*** 2108,2152 ****
              while Present (Ancestor) loop
                 if Is_List_Member (Ancestor) then
                    Insertion_Point := First (List_Containing (Ancestor));
  
!                   --  A hazard to avoid here is use-before-definition
!                   --  errors that can result when we have two of these
!                   --  subprograms where one calls the other (e.g., given
!                   --  Put_Image procedures for a composite type and
!                   --  for a component type, the former will often call
!                   --  the latter). At the time a subprogram is inserted,
!                   --  we know that the one and only call to it is
!                   --  somewhere in the subtree rooted at Ancestor.
!                   --  So that placement constraint is easy to satisfy.
!                   --  But if we construct another subprogram later and
!                   --  if that second subprogram calls the first one,
!                   --  then we need to be careful not to place the
!                   --  second one ahead of the first one. That is the goal
!                   --  of this loop. This may need to be revised if it turns
!                   --  out that other stuff is being inserted on the list,
!                   --  so that the loop terminates too early.
! 
!                   --  On the other hand, it seems like inserting things
!                   --  earlier offers more opportunities for sharing.
!                   --  If Ancestor occurs in the statement list of a
!                   --  subprogram body (ignore the HSS node for now),
!                   --  then perhaps we should look for an insertion site
!                   --  in the decl list of the subprogram body and only
!                   --  look in the statement list if the decl list is empty.
!                   --  Similarly if Ancestor occors in the private decls list
!                   --  for a package spec that has a non-empty visible
!                   --  decls list. No examples where this would result in more
!                   --  sharing and less duplication have been observed, so this
!                   --  is just speculation.
! 
!                   while Insertion_Point /= Ancestor
!                     and then Nkind (Insertion_Point) = N_Subprogram_Body
!                     and then not Comes_From_Source (Insertion_Point)
!                   loop
!                      Next (Insertion_Point);
!                   end loop;
  
!                   pragma Assert (Present (Insertion_Point));
                 end if;
  
                 if Nkind (Ancestor) = N_Subunit then
--- 2177,2206 ----
              while Present (Ancestor) loop
                 if Is_List_Member (Ancestor) then
                    Insertion_Point := First (List_Containing (Ancestor));
+                   Skip_Non_Source_Subps;
  
!                --  A subprogram body usually occurs in a declaration list
!                --  (so we will take the preceding Is_List_Member = True path),
!                --  but not always. For a library unit subprogram, we want an
!                --  insertion point in the subprogram's declaration list
!                --  because later on we may need to see the inserted
!                --  declaration from within the declaration list. In the
!                --  preceding non-library-unit case, this visibility issue is
!                --  dealt with by choosing an insertion point outside of the
!                --  subprogram body, but that's not an option here. So if
!                --  Insertion_Point is currently a member of, for example, the
!                --  subprogram's statement list then it needs to be corrected.
  
!                elsif Nkind (Ancestor) = N_Subprogram_Body
!                  and then Present (Declarations (Ancestor))
!                  and then
!                    (No (Insertion_Point)
!                      or else List_Containing (Insertion_Point) /=
!                        Declarations (Ancestor))
!                  and then Nkind (Parent (Ancestor)) /= N_Subunit
!                then
!                   Insertion_Point := First (Declarations (Ancestor));
!                   Skip_Non_Source_Subps;
                 end if;
  
                 if Nkind (Ancestor) = N_Subunit then
*************** package body Exp_Attr is
*** 2233,2238 ****
--- 2287,2294 ----
           Formal_Typ : constant Entity_Id := Etype (Formal);
           Is_Written : constant Boolean   := Ekind (Formal) /= E_In_Parameter;
  
+          Call : Node_Id;
+ 
        begin
           --  The expansion depends on Item, the second actual, which is
           --  the object being streamed in or out.
*************** package body Exp_Attr is
*** 2286,2293 ****
           --  operation is not inherited), we are all set, and can use the
           --  argument unchanged.
  
!          if not Is_Class_Wide_Type (Entity (Pref))
!            and then not Is_Class_Wide_Type (Etype (Item))
             and then Base_Type (Item_Typ) /= Base_Type (Formal_Typ)
           then
              --  Perform an unchecked conversion when either the argument or
--- 2342,2349 ----
           --  operation is not inherited), we are all set, and can use the
           --  argument unchanged.
  
!          if not Is_Class_Wide_Type (Item_Typ)
!            and then not Is_Class_Wide_Type (Formal_Typ)
             and then Base_Type (Item_Typ) /= Base_Type (Formal_Typ)
           then
              --  Perform an unchecked conversion when either the argument or
*************** package body Exp_Attr is
*** 2333,2343 ****
  
           --  And now rewrite the call
  
!          Rewrite (N,
!            Make_Procedure_Call_Statement (Loc,
!              Name                   => New_Occurrence_Of (Pname, Loc),
!              Parameter_Associations => Exprs));
  
           Analyze (N);
        end Rewrite_Attribute_Proc_Call;
  
--- 2389,2409 ----
  
           --  And now rewrite the call
  
!          Call := Make_Procedure_Call_Statement (Loc,
!            Name                   => New_Occurrence_Of (Pname, Loc),
!            Parameter_Associations => Exprs);
! 
!          --  If the attribute has not been specified for a CW type, then we
!          --  must dispatch to the attribute of the specific type identified
!          --  by the tag of Item.
  
+          if Is_Class_Wide_Type (Entity (Pref))
+            and then Is_Dispatching_Operation (Pname)
+          then
+             Set_Controlling_Argument (Call, Item);
+          end if;
+ 
+          Rewrite (N, Call);
           Analyze (N);
        end Rewrite_Attribute_Proc_Call;
  
*************** 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_For_Parameter
                   (Prefix (Enc_Object), Typ, N);
  
                 --  Ada 2005 (AI-251): If the designated type is an interface we
--- 3064,3070 ----
                                  (Entity (Prefix (Enc_Object))))
                and then not No_Dynamic_Accessibility_Checks_Enabled (Enc_Object)
              then
!                Apply_Accessibility_Check_For_Conversion
                   (Prefix (Enc_Object), Typ, N);
  
                 --  Ada 2005 (AI-251): If the designated type is an interface we
*************** package body Exp_Attr is
*** 3325,3331 ****
                    if Name_Buffer (J) = '.' then
                       Store_String_Chars ("__");
                    else
!                      Store_String_Char (Get_Char_Code (Name_Buffer (J)));
                    end if;
                 end loop;
  
--- 3391,3397 ----
                    if Name_Buffer (J) = '.' then
                       Store_String_Chars ("__");
                    else
!                      Store_String_Char (Name_Buffer (J));
                    end if;
                 end loop;
  
*************** package body Exp_Attr is
*** 4951,4959 ****
  
              --  Dispatching case with class-wide type
  
!             elsif Is_Class_Wide_Type (P_Type) then
  
!                if Is_Mutably_Tagged_Type (P_Type) then
  
                    --  In mutably tagged case, rewrite
                    --    T'Class'Input (Strm)
--- 5017,5025 ----
  
              --  Dispatching case with class-wide type
  
!             elsif Is_Class_Wide_Type (U_Type) then
  
!                if Is_Mutably_Tagged_Type (U_Type) then
  
                    --  In mutably tagged case, rewrite
                    --    T'Class'Input (Strm)
*************** package body Exp_Attr is
*** 5003,5009 ****
                 end if;
  
                 Read_Controlling_Tag (P_Type, Cntrl);
!                Fname := Find_Prim_Op (Root_Type (P_Type), TSS_Stream_Input);
  
              --  For tagged types, use the primitive Input function
  
--- 5069,5075 ----
                 end if;
  
                 Read_Controlling_Tag (P_Type, Cntrl);
!                Fname := Find_Prim_Op (U_Type, TSS_Stream_Input);
  
              --  For tagged types, use the primitive Input function
  
*************** package body Exp_Attr is
*** 5372,5377 ****
--- 5438,5446 ----
        when Attribute_Loop_Entry =>
           Expand_Loop_Entry_Attribute (N);
  
+       when Attribute_At =>
+          Error_Msg_N ("expansion of attribute At is not yet supported", N);
+ 
        -------------
        -- Machine --
        -------------
*************** package body Exp_Attr is
*** 5421,5447 ****
        when Attribute_Make =>
           declare
              Constructor_Params : List_Id := New_Copy_List (Expressions (N));
!             Constructor_Rhs    : Node_Id;
!             Result_Decl        : Node_Id;
!             Result_Id          : constant Entity_Id :=
!               Make_Temporary (Loc, 'D', N);
           begin
              if Is_Empty_List (Constructor_Params) then
                 Constructor_Params := New_List;
              end if;
  
-             Result_Decl := Make_Object_Declaration (Loc,
-                              Defining_Identifier => Result_Id,
-                              Object_Definition   =>
-                                New_Occurrence_Of (Typ, Loc));
- 
-             --  Suppress default initialization for result object.
-             --  Default init (except for tag, if tagged) will instead be
-             --  performed in the constructor procedure.
- 
-             Mutate_Ekind (Result_Id, E_Variable);
-             Set_Suppress_Initialization (Result_Id);
- 
              --  A call to the copy constructor can be a special case. Even if
              --  no copy constructor is declared (both explicitly by the user or
              --  implicitly by the compiler), the call needs to succeed. In this
--- 5490,5501 ----
        when Attribute_Make =>
           declare
              Constructor_Params : List_Id := New_Copy_List (Expressions (N));
! 
           begin
              if Is_Empty_List (Constructor_Params) then
                 Constructor_Params := New_List;
              end if;
  
              --  A call to the copy constructor can be a special case. Even if
              --  no copy constructor is declared (both explicitly by the user or
              --  implicitly by the compiler), the call needs to succeed. In this
*************** package body Exp_Attr is
*** 5450,5494 ****
              if Is_Copy_Constructor_Call (N)
                and then not Has_Copy_Constructor (Entity (Pref))
              then
!                if Nkind (First (Exprs)) = N_Parameter_Association
!                then
!                   Constructor_Rhs :=
!                     Relocate_Node (Explicit_Actual_Parameter (First (Exprs)));
                 else
!                   Constructor_Rhs := Relocate_Node (First (Exprs));
                 end if;
  
              --  Otherwise build a prefixed-notation call
  
              else
                 declare
-                   Constructor_Name : constant Node_Id :=
-                     Make_Selected_Component (Loc,
-                       Prefix        => New_Occurrence_Of (Result_Id, Loc),
-                       Selector_Name => Make_Identifier (Loc,
-                                          Direct_Attribute_Definition_Name
-                                            (Typ, Name_Constructor)));
                    Constructor_Call : Node_Id;
                 begin
!                   Set_Is_Prefixed_Call (Constructor_Name);
!                   Constructor_Call :=
!                     Make_Procedure_Call_Statement (Loc,
!                       Parameter_Associations => Constructor_Params,
!                       Name                   => Constructor_Name);
!                   Set_Is_Expanded_Constructor_Call (Constructor_Call, True);
  
!                   Constructor_Rhs :=
!                     Make_Expression_With_Actions (Loc,
!                       Actions => New_List (Result_Decl, Constructor_Call),
!                       Expression => New_Occurrence_Of (Result_Id, Loc));
                 end;
              end if;
- 
-             Rewrite (N, Constructor_Rhs);
           end;
  
-          Analyze_And_Resolve (N, Typ);
- 
        --------------
        -- Mantissa --
        --------------
--- 5504,5671 ----
              if Is_Copy_Constructor_Call (N)
                and then not Has_Copy_Constructor (Entity (Pref))
              then
!                if Nkind (First (Exprs)) = N_Parameter_Association then
!                   Rewrite (N,
!                     Relocate_Node
!                       (Explicit_Actual_Parameter (First (Exprs))));
                 else
!                   Rewrite (N, Relocate_Node (First (Exprs)));
                 end if;
  
+                Analyze_And_Resolve (N, Typ);
+ 
              --  Otherwise build a prefixed-notation call
  
              else
                 declare
                    Constructor_Call : Node_Id;
+                   Constructor_Name : Node_Id;
+                   Result_Decl      : Node_Id;
+                   Result_Id        : Entity_Id;
+ 
                 begin
!                   --  Expand Lhs := T'Make (...) into:
  
!                   --    Lhs.<Type>_constructor_Att (...)
! 
!                   if Nkind (Parent (N)) = N_Assignment_Statement then
!                      Constructor_Name :=
!                        Make_Selected_Component (Loc,
!                          Prefix        =>
!                            New_Copy_Tree (Name (Parent (N))),
!                          Selector_Name =>
!                            Make_Identifier (Loc,
!                              Direct_Attribute_Definition_Name (Typ,
!                                Name_Constructor)));
! 
!                      Constructor_Call :=
!                        Make_Procedure_Call_Statement (Loc,
!                          Parameter_Associations => Constructor_Params,
!                          Name                   => Constructor_Name);
! 
!                      Rewrite (Parent (N), Constructor_Call);
!                      Analyze (Parent (N));
! 
!                   --  Expand Obj : <Type> := T'Make (...), where <Type> T is a
!                   --  limited type, into:
! 
!                   --     Obj : <Type>;
!                   --     Obj.<Type>_constructor_Att (...)
! 
!                   elsif Nkind (Parent (N)) = N_Object_Declaration
!                     and then Is_Limited_Type (Ptyp)
!                   then
!                      Result_Decl := Parent (N);
!                      Result_Id   := Defining_Identifier (Result_Decl);
! 
!                      Set_Suppress_Initialization (Result_Id);
! 
!                      --  For class-wide type object declarations we add a
!                      --  view conversion as the prefixed-call prefix so that
!                      --  analysis resolves to the specific type constructor.
! 
!                      if Is_Class_Wide_Type (Etype (Result_Id)) then
!                         Constructor_Name :=
!                           Make_Selected_Component (Loc,
!                             Prefix        =>
!                               Make_Type_Conversion (Loc,
!                                 Subtype_Mark =>
!                                   New_Occurrence_Of (Ptyp, Loc),
!                                 Expression  =>
!                                   New_Occurrence_Of (Result_Id, Loc)),
!                             Selector_Name =>
!                               Make_Identifier (Loc,
!                                 Direct_Attribute_Definition_Name (Typ,
!                                   Name_Constructor)));
!                      else
!                         Constructor_Name :=
!                           Make_Selected_Component (Loc,
!                             Prefix        =>
!                               New_Occurrence_Of (Result_Id, Loc),
!                             Selector_Name =>
!                               Make_Identifier (Loc,
!                                 Direct_Attribute_Definition_Name (Typ,
!                                   Name_Constructor)));
!                      end if;
! 
!                      Constructor_Call :=
!                        Make_Procedure_Call_Statement (Loc,
!                          Parameter_Associations => Constructor_Params,
!                          Name                   => Constructor_Name);
! 
!                      --  Clear Comes_From_Source so that the expansion of the
!                      --  object declaration is not handled as a source-level
!                      --  construct and generates a redundant initialization
!                      --  call.
! 
!                      Set_Comes_From_Source (Parent (N), False);
! 
!                      Set_Has_Init_Expression (Parent (N), False);
!                      Set_Expression (Parent (N), Empty);
!                      Insert_After (Parent (N), Constructor_Call);
! 
!                      declare
!                         Errors : constant Nat := Serious_Errors_Detected;
! 
!                      begin
!                         Analyze (Constructor_Call);
! 
!                         --  If the analysis of the call reported errors (for
!                         --  example, because of a missing argument in the
!                         --  source code) then prevent Analyze_Declarations
!                         --  from re-analyzing this call: Transform_Object_
!                         --  Operation modifies the actuals in place, and a
!                         --  second pass would produce spurious errors.
! 
!                         if Serious_Errors_Detected > Errors then
!                            Set_Analyzed (Constructor_Call);
!                         end if;
!                      end;
! 
!                   --  Expand T'Make (...) into:
! 
!                   --    do
!                   --       tmp : <Type>;
!                   --       tmp.<Type>_constructor_Att (...)
!                   --    in tmp end
! 
!                   else
!                      Result_Id := Make_Temporary (Loc, 'D', N);
!                      Mutate_Ekind (Result_Id, E_Variable);
! 
!                      Result_Decl :=
!                        Make_Object_Declaration (Loc,
!                          Defining_Identifier => Result_Id,
!                          Object_Definition   => New_Occurrence_Of (Typ, Loc));
!                      Set_Suppress_Initialization (Result_Id);
! 
!                      Constructor_Name :=
!                        Make_Selected_Component (Loc,
!                          Prefix        =>
!                            New_Occurrence_Of (Result_Id, Loc),
!                          Selector_Name =>
!                            Make_Identifier (Loc,
!                              Direct_Attribute_Definition_Name (Typ,
!                                Name_Constructor)));
! 
!                      Constructor_Call :=
!                        Make_Procedure_Call_Statement (Loc,
!                          Parameter_Associations => Constructor_Params,
!                          Name                   => Constructor_Name);
! 
!                      Rewrite (N,
!                        Make_Expression_With_Actions (Loc,
!                          Actions    =>
!                            New_List (Result_Decl, Constructor_Call),
!                          Expression =>
!                            New_Occurrence_Of (Result_Id, Loc)));
! 
!                      Analyze_And_Resolve (N, Typ);
!                   end if;
                 end;
              end if;
           end;
  
        --------------
        -- Mantissa --
        --------------
*************** package body Exp_Attr is
*** 6642,6649 ****
                 end if;
  
              --  Tagged type case, use the primitive Put_Image function. Note
!             --  that this will dispatch in the class-wide case which is what we
!             --  want.
  
              elsif Is_Tagged_Type (U_Type) then
                 Pname := Find_Optional_Prim_Op (U_Type, TSS_Put_Image);
--- 6819,6825 ----
                 end if;
  
              --  Tagged type case, use the primitive Put_Image function. Note
!             --  that this will dispatch in the class-wide case as required.
  
              elsif Is_Tagged_Type (U_Type) then
                 Pname := Find_Optional_Prim_Op (U_Type, TSS_Put_Image);
*************** package body Exp_Attr is
*** 7064,7070 ****
                 end;
  
              --  Tagged type case, use the primitive Read function. Note that
!             --  this will dispatch in the class-wide case which is what we want
  
              elsif Is_Tagged_Type (U_Type) then
  
--- 7240,7246 ----
                 end;
  
              --  Tagged type case, use the primitive Read function. Note that
!             --  this will dispatch in the class-wide case as required.
  
              elsif Is_Tagged_Type (U_Type) then
  
*************** package body Exp_Attr is
*** 8461,8476 ****
  
           Expr := Empty;
  
-          --  Attribute 'Valid_Scalars is not supported on private tagged types;
-          --  see a detailed explanation where this attribute is analyzed.
- 
-          if Is_Private_Type (Ptyp) and then Is_Tagged_Type (Ptyp) then
-             null;
- 
           --  Attribute 'Valid_Scalars evaluates to True when the type lacks
           --  scalars.
  
!          elsif not Scalar_Part_Present (Val_Typ) then
              null;
  
           --  Attribute 'Valid_Scalars is the same as attribute 'Valid when the
--- 8637,8646 ----
  
           Expr := Empty;
  
           --  Attribute 'Valid_Scalars evaluates to True when the type lacks
           --  scalars.
  
!          if not Scalar_Part_Present (Val_Typ) then
              null;
  
           --  Attribute 'Valid_Scalars is the same as attribute 'Valid when the
*************** package body Exp_Attr is
*** 8515,8521 ****
                  Name                   =>
                    New_Occurrence_Of
                      (Build_Record_VS_Func
!                       (Attr       => N,
                         Formal_Typ => Ptyp,
                         Rec_Typ    => Val_Typ),
                      Loc),
--- 8685,8691 ----
                  Name                   =>
                    New_Occurrence_Of
                      (Build_Record_VS_Func
!                       (N          => N,
                         Formal_Typ => Ptyp,
                         Rec_Typ    => Val_Typ),
                      Loc),
*************** package body Exp_Attr is
*** 8790,8796 ****
                 end;
  
              --  Tagged type case, use the primitive Write function. Note that
!             --  this will dispatch in the class-wide case which is what we want
  
              elsif Is_Tagged_Type (U_Type) then
  
--- 8960,8966 ----
                 end;
  
              --  Tagged type case, use the primitive Write function. Note that
!             --  this will dispatch in the class-wide case as required.
  
              elsif Is_Tagged_Type (U_Type) then
  
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_ch11.adb gcc-17-20260607/gcc/ada/exp_ch11.adb
*** gcc-17-20260531/gcc/ada/exp_ch11.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_ch11.adb	Sun Jun  7 22:32:05 2026
*************** package body Exp_Ch11 is
*** 1087,1093 ****
        function Null_String return String_Id is
        begin
           Start_String;
!          Store_String_Char (Get_Char_Code (ASCII.NUL));
           return End_String;
        end Null_String;
  
--- 1087,1093 ----
        function Null_String return String_Id is
        begin
           Start_String;
!          Store_String_Char (ASCII.NUL);
           return End_String;
        end Null_String;
  
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_ch3.adb gcc-17-20260607/gcc/ada/exp_ch3.adb
*** gcc-17-20260531/gcc/ada/exp_ch3.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_ch3.adb	Sun Jun  7 22:32:06 2026
*************** package body Exp_Ch3 is
*** 1406,1411 ****
--- 1406,1414 ----
                and then Comes_From_Source (N)
                and then Needs_Construction (Typ)
              then
+                --  If the parameterless constructor is not available, the
+                --  constructor call will cause reporting an error later.
+ 
                 return
                   Make_Attribute_Reference (Loc,
                     Prefix         => New_Occurrence_Of (Typ, Loc),
*************** package body Exp_Ch3 is
*** 1790,1795 ****
--- 1793,1799 ----
        Body_Stmts, Parameters, Aspect_Specs : List_Id;
        Spec_Node, Stmt                      : Node_Id;
        Self, From                           : Entity_Id;
+ 
     begin
        --  Only build copy constructor for user-defined non-limited tagged
        --  record types that needs construction without having declared a copy
*************** package body Exp_Ch3 is
*** 1997,2002 ****
--- 2001,2007 ----
        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
*************** package body Exp_Ch3 is
*** 2039,2044 ****
--- 2044,2051 ----
  
        Freeze_Extra_Formals (Constructor_Id);
  
+       --  Aspect Initialize enables default initialization
+ 
        declare
           Ignore             : Node_Id;
           Default_Initialize : constant Node_Id :=
*************** package body Exp_Ch3 is
*** 2564,2571 ****
              Append_To (Args, Make_Integer_Literal (Loc, Library_Task_Level));
           elsif Present (Target_Ref) then
              Append_To (Args,
!               New_Occurrence_Of
!                 (Master_Id (Base_Type (Root_Type (Etype (Target_Ref)))), Loc));
           else
              Append_To (Args, Make_Identifier (Loc, Name_uMaster));
           end if;
--- 2571,2577 ----
              Append_To (Args, Make_Integer_Literal (Loc, Library_Task_Level));
           elsif Present (Target_Ref) then
              Append_To (Args,
!               New_Occurrence_Of (Master_Id (Etype (Target_Ref)), Loc));
           else
              Append_To (Args, Make_Identifier (Loc, Name_uMaster));
           end if;
*************** package body Exp_Ch3 is
*** 6866,6872 ****
           --  for such a type.
  
           if Has_Task (Desig_Typ) then
!             Build_Master_Entity (Ptr_Typ);
              Build_Master_Renaming (Ptr_Typ);
  
           --  Create a class-wide master because a Master_Id must be generated
--- 6872,6878 ----
           --  for such a type.
  
           if Has_Task (Desig_Typ) then
!             Build_Master_Entity (N);
              Build_Master_Renaming (Ptr_Typ);
  
           --  Create a class-wide master because a Master_Id must be generated
*************** package body Exp_Ch3 is
*** 6882,6891 ****
           --  but testing Comes_From_Source may be too general in this case
           --  (affects some test output)???
  
!          elsif not Is_Param_Block_Component_Type (Ptr_Typ)
!            and then Is_Limited_Class_Wide_Type (Desig_Typ)
           then
!             Build_Master_Entity (Ptr_Typ);
              Build_Master_Renaming (Ptr_Typ);
           end if;
        end Build_Master;
--- 6888,6897 ----
           --  but testing Comes_From_Source may be too general in this case
           --  (affects some test output)???
  
!          elsif Is_Limited_Class_Wide_Type (Desig_Typ)
!            and then not Is_Param_Block_Component_Type (Ptr_Typ)
           then
!             Build_Master_Entity (N);
              Build_Master_Renaming (Ptr_Typ);
           end if;
        end Build_Master;
*************** package body Exp_Ch3 is
*** 6901,6907 ****
  
     begin
        if Is_Access_Type (Def_Id) then
!          Build_Master (Def_Id);
  
           if Ekind (Def_Id) = E_Access_Protected_Subprogram_Type then
              Expand_Access_Protected_Subprogram_Type (N);
--- 6907,6915 ----
  
     begin
        if Is_Access_Type (Def_Id) then
!          if Nkind (Type_Definition (N)) /= N_Derived_Type_Definition then
!             Build_Master (Def_Id);
!          end if;
  
           if Ekind (Def_Id) = E_Access_Protected_Subprogram_Type then
              Expand_Access_Protected_Subprogram_Type (N);
*************** package body Exp_Ch3 is
*** 6956,6962 ****
                    --  Ensure that the record or array type have a _master
  
                    if First then
!                      Build_Master_Entity (Def_Id);
                       Build_Master_Renaming (Typ);
                       M_Id := Master_Id (Typ);
  
--- 6964,6970 ----
                    --  Ensure that the record or array type have a _master
  
                    if First then
!                      Build_Master_Entity (N);
                       Build_Master_Renaming (Typ);
                       M_Id := Master_Id (Typ);
  
*************** package body Exp_Ch3 is
*** 7874,7880 ****
           Build_Activation_Chain_Entity (N);
  
           if Has_Task (Typ) or else Has_BIP_Init_Expr then
!             Build_Master_Entity (Def_Id);
           end if;
        end if;
  
--- 7882,7888 ----
           Build_Activation_Chain_Entity (N);
  
           if Has_Task (Typ) or else Has_BIP_Init_Expr then
!             Build_Master_Entity (N);
           end if;
        end if;
  
*************** package body Exp_Ch3 is
*** 8744,8761 ****
  
              if No (Expr) then
                 Level_Expr :=
!                  Make_Integer_Literal
!                    (Loc, Scope_Depth (Standard_Standard));
! 
!             --  When the expression of the object is a function which returns
!             --  an anonymous access type the master of the call is the object
!             --  being initialized instead of the type.
! 
!             elsif Nkind (Expr) = N_Function_Call
!               and then Ekind (Etype (Name (Expr))) = E_Anonymous_Access_Type
!             then
!                Level_Expr := Accessibility_Level
!                                (Def_Id, Object_Decl_Level);
  
              --  General case
  
--- 8752,8758 ----
  
              if No (Expr) then
                 Level_Expr :=
!                  Make_Integer_Literal (Loc, Scope_Depth (Standard_Standard));
  
              --  General case
  
*************** package body Exp_Ch3 is
*** 8774,8780 ****
  
              Insert_Action_After (Init_After, Level_Decl);
  
!             Set_Extra_Accessibility (Def_Id, Level);
           end;
        end if;
  
--- 8771,8777 ----
  
              Insert_Action_After (Init_After, Level_Decl);
  
!             Set_Extra_Accessibility_Of_Object (Def_Id, Level);
           end;
        end if;
  
*************** package body Exp_Ch3 is
*** 9567,9573 ****
           then
              --  Ensure that the designated type has a master
  
!             Build_Master_Entity (Def_Id);
  
              --  Private and incomplete types complicate the insertion of master
              --  renamings because the access type may precede the full view of
--- 9564,9570 ----
           then
              --  Ensure that the designated type has a master
  
!             Build_Master_Entity (Parent (Def_Id));
  
              --  Private and incomplete types complicate the insertion of master
              --  renamings because the access type may precede the full view of
*************** package body Exp_Ch3 is
*** 10109,10118 ****
                 Build_Finalization_Collection (Def_Id);
  
              --  Also create a finalization collection when the designated type
!             --  contains a private component. It is assumed that the full view
              --  will be controlled.
  
!             elsif Has_Private_Component (Desig_Type) then
                 Build_Finalization_Collection
                   (Typ            => Def_Id,
                    For_Private    => True,
--- 10106,10115 ----
                 Build_Finalization_Collection (Def_Id);
  
              --  Also create a finalization collection when the designated type
!             --  is not completely defined. It is assumed that the full view
              --  will be controlled.
  
!             elsif Is_Incompletely_Defined (Desig_Type) then
                 Build_Finalization_Collection
                   (Typ            => Def_Id,
                    For_Private    => True,
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_ch4.adb gcc-17-20260607/gcc/ada/exp_ch4.adb
*** gcc-17-20260531/gcc/ada/exp_ch4.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_ch4.adb	Sun Jun  7 22:32:06 2026
*************** package body Exp_Ch4 is
*** 255,261 ****
     --  case expressions. Inspect and process actions list Stmts of expression
     --  Expr for transient objects. If such objects are found, the routine will
     --  generate code to finalize them when the enclosing context is elaborated
!    --  or evaluated.
  
     --  This specific processing is required for these expressions because the
     --  management of transient objects for expressions implemented in Exp_Ch7
--- 255,262 ----
     --  case expressions. Inspect and process actions list Stmts of expression
     --  Expr for transient objects. If such objects are found, the routine will
     --  generate code to finalize them when the enclosing context is elaborated
!    --  or evaluated. Moreover, if the declaration of a _Chain entity is found,
!    --  the routine will append a call to Activate_Tasks on the entity to Stmts.
  
     --  This specific processing is required for these expressions because the
     --  management of transient objects for expressions implemented in Exp_Ch7
*************** package body Exp_Ch4 is
*** 839,845 ****
  
        if Is_Entity_Name (Exp)
          and then Has_Anonymous_Access_Discriminant (Etype (Exp))
!         and then Static_Accessibility_Level (Exp, Object_Decl_Level)
                     > Static_Accessibility_Level (N, Object_Decl_Level)
        then
           --  A dynamic check and a warning are generated when we are within
--- 840,846 ----
  
        if Is_Entity_Name (Exp)
          and then Has_Anonymous_Access_Discriminant (Etype (Exp))
!         and then Static_Accessibility_Level (Exp, Zero_On_Dynamic_Level)
                     > Static_Accessibility_Level (N, Object_Decl_Level)
        then
           --  A dynamic check and a warning are generated when we are within
*************** package body Exp_Ch4 is
*** 4561,4573 ****
           Error_Msg_N ("?_a?use of an anonymous access type allocator", N);
        end if;
  
!       --  Here we set no initialization on types with constructors since we
!       --  generate initialization for the separately.
  
!       if Needs_Construction (Directly_Designated_Type (PtrT))
          and then Nkind (Expression (N)) = N_Identifier
        then
!          Set_No_Initialization (N, False);
        end if;
  
        --  RM E.2.2(17). We enforce that the expected type of an allocator
--- 4562,4575 ----
           Error_Msg_N ("?_a?use of an anonymous access type allocator", N);
        end if;
  
!       --  Suppress default initialization on internally generated allocators
!       --  since they are initialized separately.
  
!       if not Comes_From_Source (Parent (N))
!         and then Needs_Construction (Directly_Designated_Type (PtrT))
          and then Nkind (Expression (N)) = N_Identifier
        then
!          Set_No_Initialization (N);
        end if;
  
        --  RM E.2.2(17). We enforce that the expected type of an allocator
*************** package body Exp_Ch4 is
*** 4975,4981 ****
              --  created when expanding the function declaration.
  
              if Has_Task (Etyp) then
!                if No (Master_Id (Base_Type (PtrT))) then
                    --  The designated type was an incomplete type, and the
                    --  access type did not get expanded. Salvage it now.
  
--- 4977,4983 ----
              --  created when expanding the function declaration.
  
              if Has_Task (Etyp) then
!                if No (Master_Id (PtrT)) then
                    --  The designated type was an incomplete type, and the
                    --  access type did not get expanded. Salvage it now.
  
*************** package body Exp_Ch4 is
*** 5089,5095 ****
                 --  create a specific block to activate the created tasks.
  
                 if Has_Task (Etyp) then
!                   Insert_Actions (N,
                      Build_Task_Allocate_Block (N, Init_Stmts),
                      Suppress => All_Checks);
                 else
--- 5091,5097 ----
                 --  create a specific block to activate the created tasks.
  
                 if Has_Task (Etyp) then
!                   Insert_Action (N,
                      Build_Task_Allocate_Block (N, Init_Stmts),
                      Suppress => All_Checks);
                 else
*************** package body Exp_Ch4 is
*** 5289,5295 ****
  
        --  If the case expression is a predicate specification, do not expand
        --  because it will need to be recognized and converted to the canonical
!       --  predicate form later if it it happens to be static.
  
        if Ekind (Scop) in E_Function | E_Procedure
          and then Is_Predicate_Function (Scop)
--- 5291,5297 ----
  
        --  If the case expression is a predicate specification, do not expand
        --  because it will need to be recognized and converted to the canonical
!       --  predicate form later if it happens to be static.
  
        if Ekind (Scop) in E_Function | E_Procedure
          and then Is_Predicate_Function (Scop)
*************** package body Exp_Ch4 is
*** 5297,5302 ****
--- 5299,5306 ----
          and then Entity (Expression (N)) = First_Entity (Scop)
          and then (Is_Scalar_Type (Etype (Expression (N)))
                     or else Is_String_Type (Etype (Expression (N))))
+         and then Is_Predicate_Static
+             (Expr => N, Nam => Chars (First_Entity (Scop)), Warn => False)
          and then not Has_Dynamic_Predicate_Aspect (Etype (Expression (N)))
        then
           return;
*************** package body Exp_Ch4 is
*** 7215,7228 ****
                    --  since we cannot rely on dynamic levels.
  
                    if No_Dynamic_Accessibility_Checks_Enabled (Lop) then
!                      if Static_Accessibility_Level
!                           (Lop, Object_Decl_Level)
!                             > Type_Access_Level (Rtyp)
!                      then
!                         Rewrite (N, New_Occurrence_Of (Standard_False, Loc));
!                      else
!                         Rewrite (N, New_Occurrence_Of (Standard_True, Loc));
!                      end if;
                       Analyze_And_Resolve (N, Restyp);
  
                    --  If a conversion of the anonymous access value to the
--- 7219,7231 ----
                    --  since we cannot rely on dynamic levels.
  
                    if No_Dynamic_Accessibility_Checks_Enabled (Lop) then
!                      Rewrite (N,
!                        New_Occurrence_Of
!                          (Boolean_Literals
!                             (Static_Accessibility_Level
!                                (Lop, Object_Decl_Level) <=
!                                         Type_Access_Level (Rtyp)),
!                           Loc));
                       Analyze_And_Resolve (N, Restyp);
  
                    --  If a conversion of the anonymous access value to the
*************** package body Exp_Ch4 is
*** 8765,8775 ****
        --  records because there may be padding or undefined fields.
  
        elsif Unnest_Subprogram_Mode
!         and then Ekind (Typl) in E_Class_Wide_Type
!                                | E_Class_Wide_Subtype
                                 | E_Access_Subprogram_Type
-                                | E_Access_Protected_Subprogram_Type
-                                | E_Anonymous_Access_Protected_Subprogram_Type
                                 | E_Exception_Type
          and then Present (Equivalent_Type (Typl))
          and then Is_Record_Type (Equivalent_Type (Typl))
--- 8768,8776 ----
        --  records because there may be padding or undefined fields.
  
        elsif Unnest_Subprogram_Mode
!         and then Ekind (Typl) in Access_Protected_Kind
!                                | Class_Wide_Kind
                                 | E_Access_Subprogram_Type
                                 | E_Exception_Type
          and then Present (Equivalent_Type (Typl))
          and then Is_Record_Type (Equivalent_Type (Typl))
*************** package body Exp_Ch4 is
*** 10148,10159 ****
  
        if Is_Elementary_Type (Typ)
          and then Sloc (Entity (N)) = Standard_Location
!         and then not (Ekind (Typ) in E_Class_Wide_Type
!                               | E_Class_Wide_Subtype
!                               | E_Access_Subprogram_Type
!                               | E_Access_Protected_Subprogram_Type
!                               | E_Anonymous_Access_Protected_Subprogram_Type
!                               | E_Exception_Type
                          and then Present (Equivalent_Type (Typ))
                          and then Is_Record_Type (Equivalent_Type (Typ)))
        then
--- 10149,10158 ----
  
        if Is_Elementary_Type (Typ)
          and then Sloc (Entity (N)) = Standard_Location
!         and then not (Ekind (Typ) in Access_Protected_Kind
!                                    | Class_Wide_Kind
!                                    | E_Access_Subprogram_Type
!                                    | E_Exception_Type
                          and then Present (Equivalent_Type (Typ))
                          and then Is_Record_Type (Equivalent_Type (Typ)))
        then
*************** package body Exp_Ch4 is
*** 11532,11541 ****
        procedure Real_Range_Check;
        --  Handles generation of range check for real target value
  
-       function Has_Extra_Accessibility (Id : Entity_Id) return Boolean;
-       --  True iff Present (Effective_Extra_Accessibility (Id)) successfully
-       --  evaluates to True.
- 
        function Statically_Deeper_Relation_Applies (Targ_Typ : Entity_Id)
          return Boolean;
        --  Given a target type for a conversion, determine whether the
--- 11531,11536 ----
*************** package body Exp_Ch4 is
*** 12048,12069 ****
           Rewrite (Expr, New_Occurrence_Of (Tnn, Loc));
        end Real_Range_Check;
  
-       -----------------------------
-       -- Has_Extra_Accessibility --
-       -----------------------------
- 
-       --  Returns true for a formal of an anonymous access type or for an Ada
-       --  2012-style stand-alone object of an anonymous access type.
- 
-       function Has_Extra_Accessibility (Id : Entity_Id) return Boolean is
-       begin
-          if Is_Formal (Id) or else Ekind (Id) in E_Constant | E_Variable then
-             return Present (Effective_Extra_Accessibility (Id));
-          else
-             return False;
-          end if;
-       end Has_Extra_Accessibility;
- 
        ----------------------------------------
        -- Statically_Deeper_Relation_Applies --
        ----------------------------------------
--- 12043,12048 ----
*************** package body Exp_Ch4 is
*** 12343,12351 ****
           --  subprogram call. Note that other checks may still need to be
           --  applied below (such as tagged type checks).
  
!          elsif Is_Entity_Name (Operand_Acc)
!            and then Has_Extra_Accessibility (Entity (Operand_Acc))
!            and then Ekind (Etype (Operand_Acc)) = E_Anonymous_Access_Type
             and then (Nkind (Original_Node (N)) /= N_Attribute_Reference
                        or else Attribute_Name (Original_Node (N)) = Name_Access)
             and then not No_Dynamic_Accessibility_Checks_Enabled (N)
--- 12322,12330 ----
           --  subprogram call. Note that other checks may still need to be
           --  applied below (such as tagged type checks).
  
!          elsif Ekind (Etype (Operand_Acc)) = E_Anonymous_Access_Type
!            and then Is_Entity_Name (Operand_Acc)
!            and then Present (Extra_Accessibility (Entity (Operand_Acc)))
             and then (Nkind (Original_Node (N)) /= N_Attribute_Reference
                        or else Attribute_Name (Original_Node (N)) = Name_Access)
             and then not No_Dynamic_Accessibility_Checks_Enabled (N)
*************** package body Exp_Ch4 is
*** 12359,12365 ****
                 null;
  
              else
!                Apply_Accessibility_Check_For_Parameter
                   (Operand, Target_Type, Insert_Node => Operand);
              end if;
  
--- 12338,12344 ----
                 null;
  
              else
!                Apply_Accessibility_Check_For_Conversion
                   (Operand, Target_Type, Insert_Node => Operand);
              end if;
  
*************** package body Exp_Ch4 is
*** 15226,15235 ****
  
        Decl := First (Stmts);
        while Present (Decl) loop
!          if Nkind (Decl) = N_Object_Declaration
!            and then Is_Finalizable_Transient (Decl, Expr)
!          then
!             Process_Transient_In_Expression (Decl);
           end if;
  
           Next (Decl);
--- 15205,15219 ----
  
        Decl := First (Stmts);
        while Present (Decl) loop
!          if Nkind (Decl) = N_Object_Declaration then
!             if Is_Finalizable_Transient (Decl, Expr) then
!                Process_Transient_In_Expression (Decl);
! 
!             elsif Chars (Defining_Identifier (Decl)) = Name_uChain then
!                Insert_After_And_Analyze (Last (Stmts),
!                  Make_Task_Activation_Call
!                    (Sloc (Decl), Defining_Identifier (Decl)));
!             end if;
           end if;
  
           Next (Decl);
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_ch5.adb gcc-17-20260607/gcc/ada/exp_ch5.adb
*** gcc-17-20260531/gcc/ada/exp_ch5.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_ch5.adb	Sun Jun  7 22:32:06 2026
*************** package body Exp_Ch5 is
*** 2863,2869 ****
           Apply_Constraint_Check (Rhs, Etype (Lhs));
        end if;
  
!       --  Ada 2012 (AI05-148): Update current accessibility level if Rhs is a
        --  stand-alone obj of an anonymous access type. Do not install the check
        --  when the Lhs denotes a container cursor and the Next function employs
        --  an access type, because this can never result in a dangling pointer.
--- 2863,2869 ----
           Apply_Constraint_Check (Rhs, Etype (Lhs));
        end if;
  
!       --  Ada 2012 (AI05-148): Update current accessibility level if Lhs is a
        --  stand-alone obj of an anonymous access type. Do not install the check
        --  when the Lhs denotes a container cursor and the Next function employs
        --  an access type, because this can never result in a dangling pointer.
*************** package body Exp_Ch5 is
*** 2871,2938 ****
        if Is_Access_Type (Typ)
          and then Is_Entity_Name (Lhs)
          and then Ekind (Entity (Lhs)) /= E_Loop_Parameter
!         and then Present (Effective_Extra_Accessibility (Entity (Lhs)))
        then
!          declare
!             function Lhs_Entity return Entity_Id;
!             --  Look through renames to find the underlying entity.
!             --  For assignment to a rename, we don't care about the
!             --  Enclosing_Dynamic_Scope of the rename declaration.
! 
!             ----------------
!             -- Lhs_Entity --
!             ----------------
! 
!             function Lhs_Entity return Entity_Id is
!                Result : Entity_Id := Entity (Lhs);
! 
!             begin
!                while Present (Renamed_Object (Result)) loop
! 
!                   --  Renamed_Object must return an Entity_Name here
!                   --  because of preceding "Present (E_E_A (...))" test.
! 
!                   Result := Entity (Renamed_Object (Result));
!                end loop;
! 
!                return Result;
!             end Lhs_Entity;
! 
!             --  Local Declarations
! 
!             Access_Check : constant Node_Id :=
!                              Make_Raise_Program_Error (Loc,
!                                Condition =>
!                                  Make_Op_Gt (Loc,
!                                    Left_Opnd  =>
!                                      Accessibility_Level (Rhs, Dynamic_Level),
!                                    Right_Opnd =>
!                                      Make_Integer_Literal (Loc,
!                                        Intval =>
!                                          Scope_Depth
!                                            (Enclosing_Dynamic_Scope
!                                              (Lhs_Entity)))),
!                                Reason => PE_Accessibility_Check_Failed);
! 
!             Access_Level_Update : constant Node_Id :=
!                                     Make_Assignment_Statement (Loc,
!                                      Name       =>
!                                        New_Occurrence_Of
!                                          (Effective_Extra_Accessibility
!                                             (Entity (Lhs)), Loc),
!                                      Expression =>
!                                        Accessibility_Level
!                                          (Expr            => Rhs,
!                                           Level           => Dynamic_Level,
!                                           Allow_Alt_Model => False));
! 
!          begin
!             if not Accessibility_Checks_Suppressed (Entity (Lhs)) then
!                Insert_Action (N, Access_Check);
!             end if;
  
!             Insert_Action (N, Access_Level_Update);
!          end;
        end if;
  
        --  Case of assignment to a bit packed array element. If there is a
--- 2871,2899 ----
        if Is_Access_Type (Typ)
          and then Is_Entity_Name (Lhs)
          and then Ekind (Entity (Lhs)) /= E_Loop_Parameter
!         and then Present (Extra_Accessibility (Entity (Lhs)))
        then
!          if not Accessibility_Checks_Suppressed (Entity (Lhs)) then
!             Insert_Action (N,
!               Make_Raise_Program_Error (Loc,
!                 Condition =>
!                   Make_Op_Gt (Loc,
!                     Left_Opnd  =>
!                       Accessibility_Level (Rhs, Dynamic_Level),
!                     Right_Opnd =>
!                       Accessibility_Level (Lhs, Object_Decl_Level)),
!                 Reason => PE_Accessibility_Check_Failed));
!          end if;
  
!          Insert_Action (N,
!            Make_Assignment_Statement (Loc,
!              Name       =>
!                New_Occurrence_Of (Extra_Accessibility (Entity (Lhs)), Loc),
!              Expression =>
!                Accessibility_Level
!                  (Expr            => Rhs,
!                   Level           => Dynamic_Level,
!                   Allow_Alt_Model => False)));
        end if;
  
        --  Case of assignment to a bit packed array element. If there is a
*************** package body Exp_Ch5 is
*** 4650,4666 ****
        Element_Op : constant Entity_Id :=
                       Get_Iterable_Type_Primitive (Container_Typ, Name_Element);
  
        Advance   : Node_Id;
        Init      : Node_Id;
        New_Loop  : Node_Id;
        Block     : Node_Id;
  
     begin
!       --  For an element iterator, the Element aspect must be present,
!       --  (this is checked during analysis).
  
!       --  We create a block to hold a variable declaration initialized with
!       --  a call to Element, and generate:
  
        --    Cursor : Cursor_Type := First (Container);
        --    while Has_Element (Cursor, Container) loop
--- 4611,4631 ----
        Element_Op : constant Entity_Id :=
                       Get_Iterable_Type_Primitive (Container_Typ, Name_Element);
  
+       Constant_Reference_Op : constant Entity_Id :=
+                      Get_Iterable_Type_Primitive
+                        (Container_Typ, Name_Constant_Reference);
+ 
        Advance   : Node_Id;
        Init      : Node_Id;
        New_Loop  : Node_Id;
        Block     : Node_Id;
  
     begin
!       --  For an element iterator, either the Element or the Constant_Reference
!       --  aspect must be present, (this is checked during analysis).
  
!       --  If Element is present, we create a block to hold a variable
!       --  declaration initialized with a call to Element, and generate:
  
        --    Cursor : Cursor_Type := First (Container);
        --    while Has_Element (Cursor, Container) loop
*************** package body Exp_Ch5 is
*** 4672,4677 ****
--- 4637,4656 ----
        --       end;
        --    end loop;
  
+       --  If Constant_Reference is present, we introduce a constant and a
+       --  renaming, and generate:
+ 
+       --    Cursor : Cursor_Type := First (Container);
+       --    while Has_Element (Cursor, Container) loop
+       --       declare
+       --          Elmt : Element_Type renames
+       --             Constant_Reference (Container, Cursor).all;
+       --       begin
+       --          <original loop statements>
+       --          Cursor := Next (Container, Cursor);
+       --       end;
+       --    end loop;
+ 
        Build_Formal_Container_Iteration
          (N, Container, Cursor, Init, Advance, New_Loop);
  
*************** package body Exp_Ch5 is
*** 4686,4702 ****
  
        --  Declaration for Element
  
!       Elmt_Decl :=
!         Make_Object_Declaration (Loc,
!           Defining_Identifier => Element,
!           Object_Definition   => New_Occurrence_Of (Etype (Element_Op), Loc));
  
!       Set_Expression (Elmt_Decl,
!         Make_Function_Call (Loc,
!           Name                   => New_Occurrence_Of (Element_Op, Loc),
!           Parameter_Associations => New_List (
!             Convert_To_Iterable_Type (Container, Loc),
!             New_Occurrence_Of (Cursor, Loc))));
  
        Block :=
          Make_Block_Statement (Loc,
--- 4665,4700 ----
  
        --  Declaration for Element
  
!       if Present (Element_Op) then
!          Elmt_Decl :=
!            Make_Object_Declaration (Loc,
!              Defining_Identifier => Element,
!              Object_Definition   =>
!                 New_Occurrence_Of (Etype (Element_Op), Loc));
  
!          Set_Expression (Elmt_Decl,
!            Make_Function_Call (Loc,
!              Name                   => New_Occurrence_Of (Element_Op, Loc),
!              Parameter_Associations => New_List (
!                Convert_To_Iterable_Type (Container, Loc),
!                New_Occurrence_Of (Cursor, Loc))));
!       else
!          Elmt_Decl :=
!            Make_Object_Renaming_Declaration (Loc,
!              Defining_Identifier => Element,
!              Subtype_Mark        =>
!                New_Occurrence_Of
!                  (Directly_Designated_Type
!                     (Etype (Constant_Reference_Op)), Loc),
!              Name                =>
!                Make_Explicit_Dereference (Loc,
!                  Prefix => Make_Function_Call (Loc,
!                     Name                   =>
!                       New_Occurrence_Of (Constant_Reference_Op, Loc),
!                     Parameter_Associations => New_List (
!                       Convert_To_Iterable_Type (Container, Loc),
!                       New_Occurrence_Of (Cursor, Loc)))));
!       end if;
  
        Block :=
          Make_Block_Statement (Loc,
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_ch6.adb gcc-17-20260607/gcc/ada/exp_ch6.adb
*** gcc-17-20260531/gcc/ada/exp_ch6.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_ch6.adb	Sun Jun  7 22:32:06 2026
*************** package body Exp_Ch6 is
*** 175,194 ****
     procedure Add_Task_Actuals_To_Build_In_Place_Call
       (Function_Call : Node_Id;
        Function_Id   : Entity_Id;
!       Master_Actual : Node_Id;
!       Chain         : Node_Id := Empty);
     --  Ada 2005 (AI-318-02): For a build-in-place call, if the result type
!    --  contains tasks, add two actual parameters: the master, and a pointer to
!    --  the caller's activation chain. Master_Actual is the actual parameter
     --  expression to pass for the master. In most cases, this is the current
!    --  master (_master). The two exceptions are: If the function call is the
     --  initialization expression for an allocator, we pass the master of the
!    --  access type. If the function call is the initialization expression for a
!    --  return object, we pass along the master passed in by the caller. In most
!    --  contexts, the activation chain to pass is the local one, which is
!    --  indicated by No (Chain). However, in an allocator, the caller passes in
!    --  the activation Chain. Note: Master_Actual can be Empty, but only if
!    --  there are no tasks.
  
     function Caller_Known_Size
       (Func_Call   : Node_Id;
--- 175,193 ----
     procedure Add_Task_Actuals_To_Build_In_Place_Call
       (Function_Call : Node_Id;
        Function_Id   : Entity_Id;
!       Master_Actual : Node_Id := Empty;
!       Chain_Actual  : Node_Id := Empty);
     --  Ada 2005 (AI-318-02): For a build-in-place call, if the result type
!    --  contains tasks, add two actual parameters: the master, and a pointer
!    --  to the activation chain to pass. Master_Actual is the actual parameter
     --  expression to pass for the master. In most cases, this is the current
!    --  master (_master). The two exceptions are: if the function call is the
     --  initialization expression for an allocator, we pass the master of the
!    --  access type; if the function call is the initialization expression for
!    --  a return object, we pass along the master passed in by the caller. And
!    --  Chain_Actual is the reference to the activation chain to pass. In most
!    --  cases, the activation chain to pass is the local one (_chain). However,
!    --  in an allocator, it's the activation chain of the task allocation block.
  
     function Caller_Known_Size
       (Func_Call   : Node_Id;
*************** package body Exp_Ch6 is
*** 628,645 ****
     procedure Add_Task_Actuals_To_Build_In_Place_Call
       (Function_Call : Node_Id;
        Function_Id   : Entity_Id;
!       Master_Actual : Node_Id;
!       Chain         : Node_Id := Empty)
     is
!       Loc           : constant Source_Ptr := Sloc (Function_Call);
        Actual        : Node_Id;
-       Chain_Actual  : Node_Id;
        Chain_Formal  : Node_Id;
        Master_Formal : Node_Id;
  
     begin
!       pragma Assert (Ekind (Function_Id) in E_Function
!                                           | E_Subprogram_Type);
  
        --  No such extra parameters are needed if there are no tasks
  
--- 627,643 ----
     procedure Add_Task_Actuals_To_Build_In_Place_Call
       (Function_Call : Node_Id;
        Function_Id   : Entity_Id;
!       Master_Actual : Node_Id := Empty;
!       Chain_Actual  : Node_Id := Empty)
     is
!       Loc : constant Source_Ptr := Sloc (Function_Call);
! 
        Actual        : Node_Id;
        Chain_Formal  : Node_Id;
        Master_Formal : Node_Id;
  
     begin
!       pragma Assert (Ekind (Function_Id) in E_Function | E_Subprogram_Type);
  
        --  No such extra parameters are needed if there are no tasks
  
*************** package body Exp_Ch6 is
*** 661,687 ****
  
              Chain_Formal :=
                Build_In_Place_Formal (Function_Id, BIP_Activation_Chain);
!             Chain_Actual := Make_Null (Loc);
!             Analyze_And_Resolve (Chain_Actual, Etype (Chain_Formal));
!             Add_Extra_Actual_To_Call
!               (Function_Call, Chain_Formal, Chain_Actual);
           end if;
  
           return;
        end if;
  
-       Actual := Master_Actual;
- 
        --  Use a dummy _master actual in case of No_Task_Hierarchy
  
        if Restriction_Active (No_Task_Hierarchy) then
           Actual := Make_Integer_Literal (Loc, Library_Task_Level);
! 
!       --  In the case where we use the master associated with an access type,
!       --  the actual is an entity and requires an explicit reference.
! 
!       elsif Nkind (Actual) = N_Defining_Identifier then
!          Actual := New_Occurrence_Of (Actual, Loc);
        end if;
  
        --  Locate the implicit master parameter in the called function
--- 659,680 ----
  
              Chain_Formal :=
                Build_In_Place_Formal (Function_Id, BIP_Activation_Chain);
!             Actual := Make_Null (Loc);
!             Analyze_And_Resolve (Actual, Etype (Chain_Formal));
!             Add_Extra_Actual_To_Call (Function_Call, Chain_Formal, Actual);
           end if;
  
           return;
        end if;
  
        --  Use a dummy _master actual in case of No_Task_Hierarchy
  
        if Restriction_Active (No_Task_Hierarchy) then
           Actual := Make_Integer_Literal (Loc, Library_Task_Level);
!       elsif Present (Master_Actual) then
!          Actual := Master_Actual;
!       else
!          Actual := Make_Identifier (Loc, Name_uMaster);
        end if;
  
        --  Locate the implicit master parameter in the called function
*************** package body Exp_Ch6 is
*** 702,730 ****
        --  Create the actual which is a pointer to the current activation chain
  
        if Restriction_Active (No_Task_Hierarchy) then
!          Chain_Actual := Make_Null (Loc);
! 
!       elsif No (Chain) then
!          Chain_Actual :=
             Make_Attribute_Reference (Loc,
!              Prefix         => Make_Identifier (Loc, Name_uChain),
               Attribute_Name => Name_Unrestricted_Access);
- 
-       --  Allocator case; make a reference to the Chain passed in by the caller
- 
        else
!          Chain_Actual :=
             Make_Attribute_Reference (Loc,
!              Prefix         => New_Occurrence_Of (Chain, Loc),
               Attribute_Name => Name_Unrestricted_Access);
        end if;
  
!       Analyze_And_Resolve (Chain_Actual, Etype (Chain_Formal));
  
        --  Build the parameter association for the new actual and add it to the
        --  end of the function's actuals.
  
!       Add_Extra_Actual_To_Call (Function_Call, Chain_Formal, Chain_Actual);
     end Add_Task_Actuals_To_Build_In_Place_Call;
  
     -----------------------
--- 695,719 ----
        --  Create the actual which is a pointer to the current activation chain
  
        if Restriction_Active (No_Task_Hierarchy) then
!          Actual := Make_Null (Loc);
!       elsif Present (Chain_Actual) then
!          Actual :=
             Make_Attribute_Reference (Loc,
!              Prefix         => Chain_Actual,
               Attribute_Name => Name_Unrestricted_Access);
        else
!          Actual :=
             Make_Attribute_Reference (Loc,
!              Prefix         => Make_Identifier (Loc, Name_uChain),
               Attribute_Name => Name_Unrestricted_Access);
        end if;
  
!       Analyze_And_Resolve (Actual, Etype (Chain_Formal));
  
        --  Build the parameter association for the new actual and add it to the
        --  end of the function's actuals.
  
!       Add_Extra_Actual_To_Call (Function_Call, Chain_Formal, Actual);
     end Add_Task_Actuals_To_Build_In_Place_Call;
  
     -----------------------
*************** package body Exp_Ch6 is
*** 1814,1821 ****
  
                 if Is_Access_Type (E_Formal)
                   and then Is_Entity_Name (Lhs)
!                  and then
!                    Present (Effective_Extra_Accessibility (Entity (Lhs)))
                   and then not No_Dynamic_Accessibility_Checks_Enabled (Lhs)
                 then
                    --  Copyback target is an Ada 2012 stand-alone object of an
--- 1803,1809 ----
  
                 if Is_Access_Type (E_Formal)
                   and then Is_Entity_Name (Lhs)
!                  and then Present (Extra_Accessibility (Entity (Lhs)))
                   and then not No_Dynamic_Accessibility_Checks_Enabled (Lhs)
                 then
                    --  Copyback target is an Ada 2012 stand-alone object of an
*************** package body Exp_Ch6 is
*** 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,
--- 1811,1817 ----
  
                    pragma Assert (Ada_Version >= Ada_2012);
  
!                   Apply_Accessibility_Check_For_Conversion (Lhs, E_Formal, N);
  
                    Append_To (Post_Call,
                      Make_Assignment_Statement (Loc,
*************** package body Exp_Ch6 is
*** 1840,1846 ****
                    Append_To (Post_Call,
                      Make_Assignment_Statement (Loc,
                        Name       => New_Occurrence_Of (
!                         Effective_Extra_Accessibility (Entity (Lhs)), Loc),
                        Expression => Make_Integer_Literal (Loc,
                          Type_Access_Level (E_Formal))));
  
--- 1828,1834 ----
                    Append_To (Post_Call,
                      Make_Assignment_Statement (Loc,
                        Name       => New_Occurrence_Of (
!                         Extra_Accessibility (Entity (Lhs)), Loc),
                        Expression => Make_Integer_Literal (Loc,
                          Type_Access_Level (E_Formal))));
  
*************** package body Exp_Ch6 is
*** 5935,6287 ****
        procedure Prepend_Constructor_Procedure_Prologue
          (Spec_Id : Entity_Id; Body_Id : Entity_Id; L : List_Id)
        is
  
!          function First_Param_Type return Entity_Id is
!            (Implementation_Base_Type (Etype (First_Formal (Spec_Id))));
! 
!       begin
!          if not (Nkind (Specification (N)) = N_Procedure_Specification
!                   and then Is_Constructor (Spec_Id))
!          then
!             return; -- the usual case
!          end if;
! 
!          Push_Scope (Spec_Id);
  
!          --  Initialize the first parameter.
!          --  First_Param_Type is a record type (tagged or untagged) or
!          --  a type extension. If it is a type extension, then we begin by
!          --  calling the appropriate constructor procedure for the _parent
!          --  part. In the absence of a Super aspect specification, the
!          --  "appropriate" constructor is the one that takes only a single
!          --  parameter (the object being initialized). Additional actual
!          --  parameters for the constructor call may be provided via a
!          --  Super aspect specification, in which case a different
!          --  constructor procedure will be invoked.
!          --
!          --  For each remaining component we first check to see if it
!          --  is mentioned in the Initialize aspect specification (if any) for
!          --  Body_Id. If so, then evaluate the expression given for that
!          --  component in the aspect specification and assign it to the
!          --  given component of the first parameter. If not, and if an
!          --  explicit default initial value is provided for the given component
!          --  in the type declaration, then do the same thing with that
!          --  expression instead. Otherwise perform normal default
!          --  initialization for the component - invoke the init proc for the
!          --  component's type if one exists, and otherwise do nothing.
  
!          --  We do not perform tag initialization here. That is dealt with
!          --  elsewhere. The init proc for a tagged type is
!          --  passed an extra parameter indicating whether to perform
!          --  tag initialization.
  
!          --  In the case of a type (tagged or untagged) that is not
!          --  an extension, we could just generate a single assignment,
!          --  taking the RHS from the Initialize aspect value (which is an
!          --  N_Aggregate node). But that gets complicated in the case of
!          --  an extension, so we handle all cases one component at a time.
  
!          declare
!             Initialize_Aspect : constant Node_Id :=
                Find_Aspect (Body_Id, Aspect_Initialize);
- 
              First_Initialize_Comp_Assoc : constant Node_Id :=
                (if Present (Initialize_Aspect)
                 then First (Component_Associations
                               (Expression (Initialize_Aspect)))
                 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)
!               return Node_Id;
!             --  Builds and returns a call to the init proc for the type of
!             --  the component in order to initialize the given component.
!             --  The init proc must exist.
  
!             function Make_Parent_Constructor_Call (Parent_Type : Entity_Id)
!               return Node_Id;
!             --  Builds and returns a call to the appropriate constructor
!             --  procedure of the parent type.
!             --  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 --
!             -------------------------
  
!             function Make_Init_Proc_Call (Component      : Entity_Id;
!                                           Component_Name : Node_Id)
!               return Node_Id
!             is
!                Params    : constant List_Id := New_List (Component_Name);
!                Init_Proc : constant Entity_Id :=
!                  Base_Init_Proc (Etype (Component));
!             begin
!                if Is_Tagged_Type (Etype (Component)) then
!                   Append (Make_Mode_Literal (Loc, Full_Init), Params);
!                end if;
  
!                return Init_Proc_Call : constant Node_Id :=
!                  Make_Procedure_Call_Statement (Loc,
!                    Name => New_Occurrence_Of (Init_Proc, Loc),
!                    Parameter_Associations => Params)
!                do
!                   pragma Assert (Check_Number_Of_Actuals
!                                    (Subp_Call => Init_Proc_Call,
!                                     Subp_Id   => Init_Proc));
!                end return;
!             end Make_Init_Proc_Call;
  
!             ----------------------------------
!             -- Make_Parent_Constructor_Call --
!             ----------------------------------
  
!             function Make_Parent_Constructor_Call (Parent_Type : Entity_Id)
!               return Node_Id
!             is
!                Actual_Parameters : List_Id := No_List;
!                Super_Aspect      : constant Node_Id :=
!                  Find_Aspect (Body_Id, Aspect_Super);
  
!                --  Do not confuse the Super aspect with the Super attribute.
!                --  Both are referenced here, but they are not related as
!                --  closely as some aspect/attribute homonym pairs are.
!                --  The attribute takes an object as a prefix. The aspect
!                --  can be specified for the body of a constructor procedure.
!             begin
!                if Present (Super_Aspect) then
!                   declare
!                      Super_Expr : constant Node_Id :=
!                        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.
  
!                         Actual_Parameters := New_List;
!                         Expr := First (Expressions (Super_Expr));
!                         while Present (Expr) loop
!                            Append (New_Copy_Tree (Expr), Actual_Parameters);
!                            Next (Expr);
!                         end loop;
!                      end if;
!                   end;
!                end if;
  
!                return Make_Assignment_Statement (Loc,
!                  Name       =>
!                    Make_Attribute_Reference (Loc,
!                      Prefix         =>
!                        New_Occurrence_Of (First_Formal (Spec_Id), Loc),
!                      Attribute_Name => Name_Super),
!                  Expression =>
!                    Make_Attribute_Reference (Loc,
!                      Prefix         =>
!                        New_Occurrence_Of (Parent_Type, Loc),
!                      Attribute_Name => Name_Make,
!                      Expressions    => Actual_Parameters));
!             end Make_Parent_Constructor_Call;
  
!          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,
!                           Prefix        =>
!                             New_Occurrence_Of (First_Formal (Spec_Id), Loc),
!                           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));
                       else
!                         pragma Assert (not Is_Tagged_Type (Etype (Component)));
                       end if;
-                   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;
        end Prepend_Constructor_Procedure_Prologue;
  
        --  Local variables
--- 5923,6283 ----
        procedure Prepend_Constructor_Procedure_Prologue
          (Spec_Id : Entity_Id; Body_Id : Entity_Id; L : List_Id)
        is
+          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) return Node_Id;
!          --  Build and return a call to the init proc for the type of the
!          --  component to initialize it.
  
!          function Make_Parent_Constructor_Call
!            (Parent_Type : Entity_Id) return Node_Id;
!          --  Builds and returns a call to the appropriate constructor procedure
!          --  of the parent type. 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
!             Initialize_Aspect           : constant Node_Id :=
                Find_Aspect (Body_Id, Aspect_Initialize);
              First_Initialize_Comp_Assoc : constant Node_Id :=
                (if Present (Initialize_Aspect)
                 then First (Component_Associations
                               (Expression (Initialize_Aspect)))
                 else Empty);
+             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 --
!          -------------------------
  
!          function Make_Init_Proc_Call
!            (Component      : Entity_Id;
!             Component_Name : Node_Id) return Node_Id
!          is
!             Params    : constant List_Id   := New_List (Component_Name);
!             Init_Proc : constant Entity_Id := Base_Init_Proc
!                                                 (Etype (Component));
!          begin
!             pragma Assert (Present (Init_Proc));
  
!             if Is_Tagged_Type (Etype (Component)) then
!                Append (Make_Mode_Literal (Loc, Full_Init), Params);
!             end if;
  
!             return Init_Proc_Call : constant Node_Id :=
!               Make_Procedure_Call_Statement (Loc,
!                 Name => New_Occurrence_Of (Init_Proc, Loc),
!                 Parameter_Associations => Params)
!             do
!                pragma Assert (Check_Number_Of_Actuals
!                                 (Subp_Call => Init_Proc_Call,
!                                  Subp_Id   => Init_Proc));
!             end return;
!          end Make_Init_Proc_Call;
  
!          ----------------------------------
!          -- Make_Parent_Constructor_Call --
!          ----------------------------------
  
!          function Make_Parent_Constructor_Call
!            (Parent_Type : Entity_Id) return Node_Id
!          is
!             Actual_Parameters : List_Id := No_List;
!             Lhs               : Node_Id;
!             Super_Aspect      : constant Node_Id :=
!                                   Find_Aspect (Body_Id, Aspect_Super);
  
!             --  Do not confuse the Super aspect with the Super attribute.
!             --  Both are referenced here, but they are not related as
!             --  closely as some aspect/attribute homonym pairs are.
!             --  The attribute takes an object as a prefix. The aspect
!             --  can be specified for the body of a constructor procedure.
!          begin
!             if Present (Super_Aspect) then
!                declare
!                   Super_Expr : constant Node_Id := 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.
  
!                      Actual_Parameters := New_List;
!                      Expr := First (Expressions (Super_Expr));
!                      while Present (Expr) loop
!                         Append (New_Copy_Tree (Expr), Actual_Parameters);
!                         Next (Expr);
!                      end loop;
!                   end if;
!                end;
!             end if;
  
!             Lhs :=
!               Make_Attribute_Reference (Loc,
!                 Prefix         =>
!                   New_Occurrence_Of (First_Formal (Spec_Id), Loc),
!                 Attribute_Name => Name_Super);
!             Set_Assignment_OK (Lhs);
  
!             return Make_Assignment_Statement (Loc,
!               Name       => Lhs,
!               Expression =>
!                 Make_Attribute_Reference (Loc,
!                   Prefix         => New_Occurrence_Of (Parent_Type, Loc),
!                   Attribute_Name => Name_Make,
!                   Expressions    => Actual_Parameters));
!          end Make_Parent_Constructor_Call;
  
!          --  Local variables
  
!          First_Param_Type : constant Entity_Id :=
!                               Implementation_Base_Type
!                                 (Etype (First_Formal (Spec_Id)));
!          Component        : Entity_Id;
  
!          Comp_List        : constant List_Id := New_List;
!          Initialize_List  : constant List_Id := New_List;
!          Tag_List         : constant List_Id := New_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.
  
!       --  Start of processing for Prepend_Constructor_Procedure_Prologue
  
!       begin
!          pragma Assert (Is_Constructor (Spec_Id));
  
!          Install_Formals (Spec_Id);
!          Push_Scope (Spec_Id);
  
!          --  First_Param_Type is a record type (tagged or untagged) or a type
!          --  extension. If it is a type extension, then we begin by calling the
!          --  appropriate constructor procedure for the _parent part. In the
!          --  absence of a Super aspect specification, the "appropriate"
!          --  constructor is the one that takes only a single parameter (the
!          --  object being initialized). Additional actual parameters for the
!          --  constructor call may be provided via a Super aspect specification,
!          --  in which case a different constructor procedure will be invoked.
!          --
!          --  For each remaining component we first check to see if it is
!          --  mentioned in the Initialize aspect specification (if any) for
!          --  Body_Id. If so, then evaluate the expression given for that
!          --  component in the aspect specification and assign it to the given
!          --  component of the first parameter. If not, and if an explicit
!          --  default initial value is provided for the given component in the
!          --  type declaration, then do the same thing with that expression
!          --  instead. Otherwise perform normal default initialization for the
!          --  component - invoke the init proc for the component's type if one
!          --  exists, and otherwise do nothing.
  
!          --  In the case of a type (tagged or untagged) that is not an
!          --  extension, we could just generate a single assignment, taking the
!          --  RHS from the Initialize aspect value (which is an N_Aggregate
!          --  node). But that gets complicated in the case of an extension, so
!          --  we handle all cases one component at a time.
  
!          Component := First_Entity (First_Param_Type);
!          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,
!                        Prefix        =>
!                          New_Occurrence_Of (First_Formal (Spec_Id), Loc),
!                        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
! 
!                      if not Has_Discriminants (Etype (Component)) then
                          Append_To (Comp_List,
!                           Make_Init_Proc_Call (
!                             Component      => Component,
!                             Component_Name => Make_Component_Name));
                       else
!                         Append_List_To (Comp_List,
!                           Build_Initialization_Call
!                             (N            => Parent (Component),
!                              Id_Ref       => Make_Component_Name,
!                              Typ          => Etype (Component),
!                              In_Init_Proc => True,
!                              Enclos_Type  => First_Param_Type));
                       end if;
  
!                   else
!                      pragma Assert (not Is_Tagged_Type (Etype (Component)));
!                   end if;
!                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_Scope;
        end Prepend_Constructor_Procedure_Prologue;
  
        --  Local variables
*************** package body Exp_Ch6 is
*** 6519,6526 ****
        --  If the subprogram is a constructor procedure then prepend
        --  and analyze initialization code.
  
!       Prepend_Constructor_Procedure_Prologue
!         (Spec_Id => Spec_Id, Body_Id => Body_Id, L => L);
  
        --  Set to encode entity names in package body before gigi is called
  
--- 6515,6526 ----
        --  If the subprogram is a constructor procedure then prepend
        --  and analyze initialization code.
  
!       if Nkind (Specification (N)) = N_Procedure_Specification
!         and then Is_Constructor (Spec_Id)
!       then
!          Prepend_Constructor_Procedure_Prologue
!            (Spec_Id => Spec_Id, Body_Id => Body_Id, L => L);
!       end if;
  
        --  Set to encode entity names in package body before gigi is called
  
*************** package body Exp_Ch6 is
*** 8670,8684 ****
        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
        Alloc_Form        : BIP_Allocation_Form;
        Pool_Actual       : Node_Id; -- Present if Alloc_Form = User_Storage_Pool
        Return_Obj_Actual : Node_Id; -- the temp.all, in caller-allocates case
!       Chain             : Entity_Id; -- activation chain, in case of tasks
  
     begin
        --  Mark the call as processed as a build-in-place call
--- 8670,8687 ----
        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);
  
        Alloc_Form        : BIP_Allocation_Form;
+       Assign            : Node_Id;
+       Chain             : Node_Id; -- activation chain, in case of tasks
+       Master            : Node_Id; -- master, in case of tasks
+       New_Allocator     : Node_Id;
        Pool_Actual       : Node_Id; -- Present if Alloc_Form = User_Storage_Pool
+       Ref_Func_Call     : Node_Id;
+       Return_Obj_Access : Entity_Id; -- temp for function result
        Return_Obj_Actual : Node_Id; -- the temp.all, in caller-allocates case
!       Temp_Init         : Node_Id; -- initial value of Return_Obj_Access
  
     begin
        --  Mark the call as processed as a build-in-place call
*************** package body Exp_Ch6 is
*** 8821,8878 ****
        --  that the full types will be compatible, but the types not visibly
        --  compatible.
  
!       elsif Nkind (Function_Call)
!               in N_Type_Conversion | N_Unchecked_Type_Conversion
        then
           Ref_Func_Call := Unchecked_Convert_To (Acc_Type, Ref_Func_Call);
        end if;
  
!       declare
!          Assign : constant Node_Id :=
!                     Make_Assignment_Statement (Loc,
!                       Name       => New_Occurrence_Of (Return_Obj_Access, Loc),
!                       Expression => Ref_Func_Call);
!          --  Assign the result of the function call into the temp. In the
!          --  caller-allocates case, this is overwriting the temp with its
!          --  initial value, which has no effect. In the callee-allocates case,
!          --  this is setting the temp to point to the object allocated by the
!          --  callee. Unchecked_Convert is needed for T'Input where T is derived
!          --  from a controlled type.
  
!          Actions : List_Id;
!          --  Actions to be inserted. If there are no tasks, this is just the
!          --  assignment statement. If the allocated object has tasks, we need
!          --  to wrap the assignment in a block that activates them. The
!          --  activation chain of that block must be passed to the function,
!          --  rather than some outer chain.
  
!       begin
!          if Might_Have_Tasks (Result_Subt) then
!             Actions :=
!               Build_Task_Allocate_Block (Allocator, New_List (Assign));
!             Chain   := Activation_Chain_Entity (Last (Actions));
!          else
!             Actions := New_List (Assign);
!             Chain   := Empty;
!          end if;
  
!          --  See the Needs_Cleanup predicate in Expand_Allocator_Expression
  
!          if Alloc_Form = Caller_Allocation
!            and then not For_Special_Return_Object (Allocator)
!            and then not (Is_Entity_Name (Name (Func_Call))
!                           and then No_Raise (Entity (Name (Func_Call))))
!            and then not Restriction_Active (No_Exception_Propagation)
!            and then RTE_Available (RE_Free)
!            and then not Debug_Flag_QQ
!          then
!             Insert_Action (Allocator,
!               Build_Cleanup_For_Allocator (Loc,
!                 Return_Obj_Access, Storage_Pool (Allocator), Actions));
!          else
!             Insert_Actions (Allocator, Actions);
!          end if;
!       end;
  
        --  Add implicit actuals for the BIP formal parameters, if any
  
--- 8824,8877 ----
        --  that the full types will be compatible, but the types not visibly
        --  compatible.
  
!       elsif Nkind (Function_Call) in N_Type_Conversion
!                                    | N_Unchecked_Type_Conversion
        then
           Ref_Func_Call := Unchecked_Convert_To (Acc_Type, Ref_Func_Call);
        end if;
  
!       --  Assign the result of the function call into the temporary. In the
!       --  caller-allocates case, this is overwriting the temporary with its
!       --  initial value, which has no effect. In the callee-allocates case,
!       --  this is setting the temporary to point to the object allocated by
!       --  the callee.
  
!       Assign :=
!         Make_Assignment_Statement (Loc,
!           Name       => New_Occurrence_Of (Return_Obj_Access, Loc),
!           Expression => Ref_Func_Call);
  
!       --  If the allocated object has tasks, we need to wrap the assignment in
!       --  a block that activates them. The activation chain of that block must
!       --  be passed to the function rather than some outer chain.
  
!       if Has_Tasks then
!          Assign := Build_Task_Allocate_Block (Allocator, New_List (Assign));
!          Master := New_Occurrence_Of (Master_Id (Acc_Type), Loc);
!          Chain  :=
!            New_Occurrence_Of (
!              Defining_Identifier (First (Declarations (Assign))), Loc);
!       else
!          Master := Empty;
!          Chain  := Empty;
!       end if;
  
!       --  See the Needs_Cleanup predicate in Expand_Allocator_Expression
! 
!       if Alloc_Form = Caller_Allocation
!         and then not For_Special_Return_Object (Allocator)
!         and then not (Is_Entity_Name (Name (Func_Call))
!                        and then No_Raise (Entity (Name (Func_Call))))
!         and then not Restriction_Active (No_Exception_Propagation)
!         and then RTE_Available (RE_Free)
!         and then not Debug_Flag_QQ
!       then
!          Insert_Action (Allocator,
!            Build_Cleanup_For_Allocator (Loc,
!              Return_Obj_Access, Storage_Pool (Allocator), New_List (Assign)));
!       else
!          Insert_Action (Allocator, Assign);
!       end if;
  
        --  Add implicit actuals for the BIP formal parameters, if any
  
*************** package body Exp_Ch6 is
*** 8886,8895 ****
          (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);
  
        --  Add an implicit actual to the function call that provides access
        --  to the allocated object. An unchecked conversion to the (specific)
--- 8885,8891 ----
          (Func_Call, Func_Id, Ptr_Typ => Acc_Type);
  
        Add_Task_Actuals_To_Build_In_Place_Call
!         (Func_Call, Func_Id, Master_Actual => Master, Chain_Actual => Chain);
  
        --  Add an implicit actual to the function call that provides access
        --  to the allocated object. An unchecked conversion to the (specific)
*************** package body Exp_Ch6 is
*** 8947,8966 ****
  
        Warn_BIP (Func_Call);
  
-       --  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.
- 
        --  If the build-in-place function returns a definite subtype, then an
!       --  object also needs to be created and an access value designating it
!       --  passed as an actual.
  
        --  Insert a temporary before the call initialized with function call to
        --  reuse the BIP machinery which takes care of adding the extra build-in
        --  place actuals.
  
!       if Needs_Fin or else Known_Size or else Has_Tasks then
!          if Needs_Fin then
              Establish_Transient_Scope
                (Func_Call, Manage_Sec_Stack => not Known_Size);
           end if;
--- 8943,8963 ----
  
        Warn_BIP (Func_Call);
  
        --  If the build-in-place function returns a definite subtype, then an
!       --  object needs to be created and an access value designating it needs
!       --  to be passed as an actual.
! 
!       --  If the build-in-place function returns either a controlled object or
!       --  an object that contains tasks, 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.
  
        --  Insert a temporary before the call initialized with function call to
        --  reuse the BIP machinery which takes care of adding the extra build-in
        --  place actuals.
  
!       if Known_Size or else Needs_Fin or else Has_Tasks then
!          if Needs_Fin or else Has_Tasks then
              Establish_Transient_Scope
                (Func_Call, Manage_Sec_Stack => not Known_Size);
           end if;
*************** package body Exp_Ch6 is
*** 8982,8988 ****
  
              if Has_Tasks then
                 Build_Activation_Chain_Entity (Temp_Decl);
!                Build_Master_Entity (Temp_Id);
              end if;
  
              Make_Build_In_Place_Call_In_Object_Declaration
--- 8979,8985 ----
  
              if Has_Tasks then
                 Build_Activation_Chain_Entity (Temp_Decl);
!                Build_Master_Entity (Temp_Decl);
              end if;
  
              Make_Build_In_Place_Call_In_Object_Declaration
*************** package body Exp_Ch6 is
*** 9008,9014 ****
             (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.
--- 9005,9011 ----
             (Func_Call, Func_Id);
  
           Add_Task_Actuals_To_Build_In_Place_Call
!            (Func_Call, Func_Id);
  
           --  Pass a null value to the function since no return object is
           --  available on the caller side.
*************** package body Exp_Ch6 is
*** 9069,9075 ****
          (Func_Call, Func_Id);
  
        Add_Task_Actuals_To_Build_In_Place_Call
!         (Func_Call, Func_Id, Make_Identifier (Loc, Name_uMaster));
  
        --  Add an implicit actual to the function call that provides access to
        --  the caller's return object.
--- 9066,9072 ----
          (Func_Call, Func_Id);
  
        Add_Task_Actuals_To_Build_In_Place_Call
!         (Func_Call, Func_Id);
  
        --  Add an implicit actual to the function call that provides access to
        --  the caller's return object.
*************** package body Exp_Ch6 is
*** 9401,9407 ****
  
        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
--- 9398,9404 ----
  
        else
           Add_Task_Actuals_To_Build_In_Place_Call
!            (Func_Call, Func_Id);
        end if;
  
        Add_Access_Actual_To_Build_In_Place_Call
*************** package body Exp_Ch6 is
*** 9580,9586 ****
        Insert_Action (Allocator, Tmp_Decl);
        Expander_Mode_Restore;
  
!       Build_Master_Entity (Anon_Type);
        Build_Master_Renaming (Anon_Type);
  
        Make_Build_In_Place_Call_In_Allocator
--- 9577,9583 ----
        Insert_Action (Allocator, Tmp_Decl);
        Expander_Mode_Restore;
  
!       Build_Master_Entity (Tmp_Decl);
        Build_Master_Renaming (Anon_Type);
  
        Make_Build_In_Place_Call_In_Allocator
*************** package body Exp_Ch6 is
*** 9638,9644 ****
        Expander_Mode_Restore;
  
        Build_Activation_Chain_Entity (Tmp_Decl);
!       Build_Master_Entity (Tmp_Id);
  
        Make_Build_In_Place_Iface_Call_In_Object_Declaration
          (Obj_Decl      => Tmp_Decl,
--- 9635,9641 ----
        Expander_Mode_Restore;
  
        Build_Activation_Chain_Entity (Tmp_Decl);
!       Build_Master_Entity (Tmp_Decl);
  
        Make_Build_In_Place_Iface_Call_In_Object_Declaration
          (Obj_Decl      => Tmp_Decl,
*************** package body Exp_Ch6 is
*** 9935,9942 ****
  
        return not Restriction_Active (No_Finalization)
          and then (Needs_Finalization (Typ) or else Is_Tagged_Type (Typ))
!         and then not Has_Relaxed_Finalization (Typ)
!         and then not Has_Foreign_Convention (Typ);
     end Needs_BIP_Collection;
  
     --------------------------
--- 9932,9938 ----
  
        return not Restriction_Active (No_Finalization)
          and then (Needs_Finalization (Typ) or else Is_Tagged_Type (Typ))
!         and then not Has_Relaxed_Finalization (Typ);
     end Needs_BIP_Collection;
  
     --------------------------
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_ch7.adb gcc-17-20260607/gcc/ada/exp_ch7.adb
*** gcc-17-20260531/gcc/ada/exp_ch7.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_ch7.adb	Sun Jun  7 22:32:06 2026
*************** package body Exp_Ch7 is
*** 499,509 ****
       (Loc    : Source_Ptr;
        Action : Node_Id;
        Par    : Node_Id) return Node_Id;
!    --  Action is a single statement or object declaration. Par is the proper
!    --  parent of the generated block. Create a transient block whose name is
!    --  the current scope and the only handled statement is Action. If Action
!    --  involves controlled objects or secondary stack usage, the corresponding
!    --  cleanup actions are performed at the end of the block.
  
     procedure Store_Actions_In_Scope (AK : Scope_Action_Kind; L : List_Id);
     --  Shared processing for the Store_xxx_Actions_In_Scope routines: attach
--- 499,509 ----
       (Loc    : Source_Ptr;
        Action : Node_Id;
        Par    : Node_Id) return Node_Id;
!    --  Action is a single statement. Par is the proper parent of the generated
!    --  block. Create a transient block whose name is the current scope and the
!    --  only handled statement is Action. If Action involves controlled objects
!    --  or task objects or secondary stack usage, corresponding cleanup actions
!    --  are performed at the end of the block.
  
     procedure Store_Actions_In_Scope (AK : Scope_Action_Kind; L : List_Id);
     --  Shared processing for the Store_xxx_Actions_In_Scope routines: attach
*************** package body Exp_Ch7 is
*** 1450,1456 ****
                 New_Occurrence_Of
                   (RTE (RE_Expunge_Unactivated_Tasks), Loc),
               Parameter_Associations => New_List (
!                New_Occurrence_Of (Activation_Chain_Entity (N), Loc))));
  
        --  Attempt to cancel an asynchronous entry call whenever the block which
        --  contains the abortable part is exited.
--- 1450,1456 ----
                 New_Occurrence_Of
                   (RTE (RE_Expunge_Unactivated_Tasks), Loc),
               Parameter_Associations => New_List (
!                Make_Identifier (Loc, Name_uChain))));
  
        --  Attempt to cancel an asynchronous entry call whenever the block which
        --  contains the abortable part is exited.
*************** package body Exp_Ch7 is
*** 2430,2435 ****
--- 2430,2443 ----
              Strict       : Boolean := False)
           is
           begin
+             --  No need to process ignored ghost declarations as they will be
+             --  removed later and therefore do not need finalization
+             --  primitives.
+ 
+             if Is_Ignored_Ghost_Node (Decl) then
+                return;
+             end if;
+ 
              --  Library-level tagged type
  
              if Nkind (Decl) = N_Full_Type_Declaration then
*************** package body Exp_Ch7 is
*** 5463,5473 ****
        --  subtype, its Finalize_Address primitive expects the address of
        --  an object with a dope vector (see Make_Finalize_Address_Stmts).
        --  This is achieved by setting Is_Constr_Array_Subt_With_Bounds,
!       --  but the address of the object is still that of its elements,
!       --  so we need to shift it back to skip the dope vector.
  
        if Is_Array_Type (Utyp)
          and then not Is_Constrained (First_Subtype (Utyp))
        then
           Obj_Addr :=
             Shift_Address_For_Descriptor
--- 5471,5482 ----
        --  subtype, its Finalize_Address primitive expects the address of
        --  an object with a dope vector (see Make_Finalize_Address_Stmts).
        --  This is achieved by setting Is_Constr_Array_Subt_With_Bounds,
!       --  whose predicate also requires Has_Controlled_Component, so we
!       --  have to check for the controlled component here, too.
  
        if Is_Array_Type (Utyp)
          and then not Is_Constrained (First_Subtype (Utyp))
+         and then Has_Controlled_Component (Utyp)
        then
           Obj_Addr :=
             Shift_Address_For_Descriptor
*************** package body Exp_Ch7 is
*** 8712,8718 ****
  
        --  Local variables
  
-       Decls    : constant List_Id   := New_List;
        Instrs   : constant List_Id   := New_List (Action);
        Trans_Id : constant Entity_Id := Current_Scope;
  
--- 8721,8726 ----
*************** package body Exp_Ch7 is
*** 8811,8822 ****
        Block :=
          Make_Block_Statement (Loc,
            Identifier                 => New_Occurrence_Of (Trans_Id, Loc),
!           Declarations               => Decls,
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc, Statements => Instrs),
            Has_Created_Identifier     => True);
        Set_Parent (Block, Par);
  
        --  Insert actions stuck in the transient scopes as well as all freezing
        --  nodes needed by those actions. Do not insert cleanup actions here,
        --  they will be transferred to the newly created block.
--- 8819,8867 ----
        Block :=
          Make_Block_Statement (Loc,
            Identifier                 => New_Occurrence_Of (Trans_Id, Loc),
!           Declarations               => New_List,
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc, Statements => Instrs),
            Has_Created_Identifier     => True);
        Set_Parent (Block, Par);
  
+       --  If the transient scope contains a _Master entity, mark it as being
+       --  a task master since Build_Master_Entity could not do it.
+ 
+       Set_Is_Task_Master (Block, Has_Master_Entity (Trans_Id));
+ 
+       --  If the transient scope contains a _Chain entity, try to find its
+       --  declaration in the actions to be executed before the main action.
+       --  If found, generate a call to Activate_Tasks on the entity and, in
+       --  either case, set Is_Task_Allocation_Block to block the subsequent
+       --  generation of the same call by Build_Task_Activation_Call.
+ 
+       if Has_Activation_Chain_Entity (Trans_Id) then
+          declare
+             Before_Actions : List_Id
+               renames Scope_Stack.Table (Scope_Stack.Last).
+                         Actions_To_Be_Wrapped (Before);
+             Act : Node_Id;
+ 
+          begin
+             Act := First (Before_Actions);
+             while Present (Act) loop
+                if Nkind (Act) = N_Object_Declaration
+                  and then Chars (Defining_Identifier (Act)) = Name_uChain
+                then
+                   Append_To (Before_Actions,
+                     Make_Task_Activation_Call
+                       (Loc, Defining_Identifier (Act)));
+                   exit;
+                end if;
+ 
+                Next (Act);
+             end loop;
+ 
+             Set_Is_Task_Allocation_Block (Block);
+          end;
+       end if;
+ 
        --  Insert actions stuck in the transient scopes as well as all freezing
        --  nodes needed by those actions. Do not insert cleanup actions here,
        --  they will be transferred to the newly created block.
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_ch9.adb gcc-17-20260607/gcc/ada/exp_ch9.adb
*** gcc-17-20260531/gcc/ada/exp_ch9.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_ch9.adb	Sun Jun  7 22:32:06 2026
*************** with Elists;         use Elists;
*** 34,39 ****
--- 34,40 ----
  with Errout;         use Errout;
  with Exp_Ch3;        use Exp_Ch3;
  with Exp_Ch6;        use Exp_Ch6;
+ with Exp_Ch7;        use Exp_Ch7;
  with Exp_Ch11;       use Exp_Ch11;
  with Exp_Dbug;       use Exp_Dbug;
  with Exp_Sel;        use Exp_Sel;
*************** package body Exp_Ch9 is
*** 427,436 ****
        Context_Decls : out List_Id);
     --  Subsidiary routine to procedures Build_Activation_Chain_Entity and
     --  Build_Master_Entity. Given an arbitrary node in the tree, find the
!    --  nearest enclosing body, block, package, or return statement and return
!    --  its constituents. Context is the enclosing construct, Context_Id is
!    --  the scope of Context_Id and Context_Decls is the declarative list of
!    --  Context.
  
     function First_Protected_Operation (D : List_Id) return Node_Id;
     --  Given the declarations list for a protected body, find the
--- 428,439 ----
        Context_Decls : out List_Id);
     --  Subsidiary routine to procedures Build_Activation_Chain_Entity and
     --  Build_Master_Entity. Given an arbitrary node in the tree, find the
!    --  enclosing body, block, package, or return statement and return its
!    --  constituents. Context is the enclosing construct, Context_Id is the
!    --  scope of Context and Context_Decls is the list of declarations of
!    --  Context. When the current scope is transient and will give rise to
!    --  a block, Context is the node to be wrapped, Context_Id is the scope
!    --  and Context_Decls is No_List.
  
     function First_Protected_Operation (D : List_Id) return Node_Id;
     --  Given the declarations list for a protected body, find the
*************** package body Exp_Ch9 is
*** 971,979 ****
     -----------------------------------
  
     procedure Build_Activation_Chain_Entity (N : Node_Id) is
!       Context    : Node_Id;
!       Context_Id : Entity_Id;
!       Decls      : List_Id;
  
     --  Start of processing for Build_Activation_Chain_Entity
  
--- 974,983 ----
     -----------------------------------
  
     procedure Build_Activation_Chain_Entity (N : Node_Id) is
!       Context       : Node_Id;
!       Context_Id    : Entity_Id;
!       Context_Decls : List_Id;
!       Decl          : Node_Id;
  
     --  Start of processing for Build_Activation_Chain_Entity
  
*************** package body Exp_Ch9 is
*** 991,1031 ****
           return;
        end if;
  
!       Find_Enclosing_Context (N, Context, Context_Id, Decls);
! 
!       --  If activation chain entity has not been declared already, create one
  
!       if No (Activation_Chain_Entity (Context)) then
!          declare
!             Loc   : constant Source_Ptr := Sloc (Context);
!             Chain : Entity_Id;
!             Decl  : Node_Id;
  
!          begin
!             Chain := Make_Defining_Identifier (Sloc (N), Name_uChain);
  
!             Set_Activation_Chain_Entity (Context, Chain);
  
!             Decl :=
!               Make_Object_Declaration (Loc,
!                 Defining_Identifier => Chain,
!                 Aliased_Present     => True,
!                 Object_Definition   =>
!                   New_Occurrence_Of (RTE (RE_Activation_Chain), Loc));
  
!             Prepend_To (Decls, Decl);
  
!             --  Ensure that _chain appears in the proper scope of the context
  
!             if Context_Id /= Current_Scope then
!                Push_Scope (Context_Id);
!                Analyze (Decl);
!                Pop_Scope;
!             else
!                Analyze (Decl);
!             end if;
!          end;
        end if;
     end Build_Activation_Chain_Entity;
  
     ----------------------------
--- 995,1034 ----
           return;
        end if;
  
!       Find_Enclosing_Context (N, Context, Context_Id, Context_Decls);
  
!       --  Nothing to do if the context already has an activation chain entity
  
!       if Has_Activation_Chain_Entity (Context_Id) then
!          return;
!       end if;
  
!       Decl :=
!         Make_Object_Declaration (Sloc (N),
!           Defining_Identifier =>
!             Make_Defining_Identifier (Sloc (N), Name_uChain),
!           Aliased_Present     => True,
!           Object_Definition   =>
!             New_Occurrence_Of (RTE (RE_Activation_Chain), Sloc (N)));
  
!       if Present (Context_Decls) then
!          Prepend_To (Context_Decls, Decl);
  
!          --  Ensure that _Chain appears in the proper scope of the context
  
!          if Context_Id /= Current_Scope then
!             Push_Scope (Context_Id);
!             Analyze (Decl);
!             Pop_Scope;
!          else
!             Analyze (Decl);
!          end if;
  
!       else
!          Insert_Action (N, Decl);
        end if;
+ 
+       Set_Has_Activation_Chain_Entity (Context_Id);
     end Build_Activation_Chain_Entity;
  
     ----------------------------
*************** package body Exp_Ch9 is
*** 2111,2130 ****
     is
        Def     : Node_Id;
        Rec_Typ : Entity_Id;
        procedure Scan_Declarations (L : List_Id);
        --  Common processing for visible and private declarations
        --  of a protected type.
  
        procedure Scan_Declarations (L : List_Id) is
           Decl      : Node_Id;
           Wrap_Decl : Node_Id;
           Wrap_Spec : Node_Id;
  
        begin
-          if No (L) then
-             return;
-          end if;
- 
           Decl := First (L);
           while Present (Decl) loop
              Wrap_Spec := Empty;
--- 2114,2134 ----
     is
        Def     : Node_Id;
        Rec_Typ : Entity_Id;
+ 
        procedure Scan_Declarations (L : List_Id);
        --  Common processing for visible and private declarations
        --  of a protected type.
  
+       -----------------------
+       -- Scan_Declarations --
+       -----------------------
+ 
        procedure Scan_Declarations (L : List_Id) is
           Decl      : Node_Id;
           Wrap_Decl : Node_Id;
           Wrap_Spec : Node_Id;
  
        begin
           Decl := First (L);
           while Present (Decl) loop
              Wrap_Spec := Empty;
*************** package body Exp_Ch9 is
*** 3033,3045 ****
     -- Build_Master_Entity --
     -------------------------
  
!    procedure Build_Master_Entity (Obj_Or_Typ : Entity_Id) is
!       Loc        : constant Source_Ptr := Sloc (Obj_Or_Typ);
!       Context    : Node_Id;
!       Context_Id : Entity_Id;
!       Decl       : Node_Id;
!       Decls      : List_Id;
!       Par        : Node_Id;
  
     begin
        --  No action needed if the run-time has no tasking support
--- 3037,3047 ----
     -- Build_Master_Entity --
     -------------------------
  
!    procedure Build_Master_Entity (N : Node_Id) is
!       Context       : Node_Id;
!       Context_Id    : Entity_Id;
!       Context_Decls : List_Id;
!       Decl          : Node_Id;
  
     begin
        --  No action needed if the run-time has no tasking support
*************** package body Exp_Ch9 is
*** 3048,3074 ****
           return;
        end if;
  
-       if Is_Itype (Obj_Or_Typ) then
-          Par := Associated_Node_For_Itype (Obj_Or_Typ);
-       else
-          Par := Parent (Obj_Or_Typ);
-       end if;
- 
        --  When creating a master for a record component which is either a task
        --  or access-to-task, the enclosing record is the master scope and the
        --  proper insertion point is the component list.
  
        if Is_Record_Type (Current_Scope) then
!          Context    := Par;
           Context_Id := Current_Scope;
!          Decls      := List_Containing (Context);
  
        --  Default case for object declarations and access types. Note that the
        --  context is updated to the nearest enclosing body, block, package, or
        --  return statement.
  
        else
!          Find_Enclosing_Context (Par, Context, Context_Id, Decls);
        end if;
  
        pragma Assert (not Is_Finalizer (Context_Id));
--- 3050,3070 ----
           return;
        end if;
  
        --  When creating a master for a record component which is either a task
        --  or access-to-task, the enclosing record is the master scope and the
        --  proper insertion point is the component list.
  
        if Is_Record_Type (Current_Scope) then
!          Context := N;
           Context_Id := Current_Scope;
!          Context_Decls := List_Containing (Context);
  
        --  Default case for object declarations and access types. Note that the
        --  context is updated to the nearest enclosing body, block, package, or
        --  return statement.
  
        else
!          Find_Enclosing_Context (N, Context, Context_Id, Context_Decls);
        end if;
  
        pragma Assert (not Is_Finalizer (Context_Id));
*************** package body Exp_Ch9 is
*** 3079,3112 ****
           return;
        end if;
  
!       Decl := Build_Master_Declaration (Loc);
  
!       --  The master is inserted at the start of the declarative list of the
!       --  context.
  
!       Prepend_To (Decls, Decl);
  
!       --  In certain cases where transient scopes are involved, the immediate
!       --  scope is not always the proper master scope. Ensure that the master
!       --  declaration and entity appear in the same context.
  
!       if Context_Id /= Current_Scope then
!          Push_Scope (Context_Id);
!          Analyze (Decl);
!          Pop_Scope;
!       else
!          Analyze (Decl);
!       end if;
  
!       Set_Has_Master_Entity (Context_Id);
  
!       --  Mark its associated construct as being a task master, but masters
!       --  associated with return statements are already marked at this stage
!       --  (see Analyze_Subprogram_Body_Helper).
  
!       if Nkind (Context) /= N_Extended_Return_Statement then
!          Mark_Construct_As_Task_Master (Context);
        end if;
     end Build_Master_Entity;
  
     ---------------------------------------
--- 3075,3111 ----
           return;
        end if;
  
!       Decl := Build_Master_Declaration (Sloc (N));
  
!       if Present (Context_Decls) then
!          --  The master is inserted at the start of the declarative list of the
!          --  context.
  
!          Prepend_To (Context_Decls, Decl);
  
!          --  Ensure that _Master appears in the proper scope of the context
  
!          if Context_Id /= Current_Scope then
!             Push_Scope (Context_Id);
!             Analyze (Decl);
!             Pop_Scope;
!          else
!             Analyze (Decl);
!          end if;
  
!          --  Mark its associated construct as being a task master, but masters
!          --  associated with return statements are already marked at this stage
!          --  (see Analyze_Subprogram_Body_Helper).
  
!          if Nkind (Context) /= N_Extended_Return_Statement then
!             Mark_Construct_As_Task_Master (Context);
!          end if;
  
!       else
!          Insert_Action (N, Decl);
        end if;
+ 
+       Set_Has_Master_Entity (Context_Id);
     end Build_Master_Entity;
  
     ---------------------------------------
*************** package body Exp_Ch9 is
*** 4403,4408 ****
--- 4402,4410 ----
        function Activation_Call_Loc return Source_Ptr;
        --  Find a suitable source location for the activation call
  
+       function Activation_Chain_Entity (N : Node_Id) return Entity_Id;
+       --  Return the entity of the activation chain associated with N
+ 
        -------------------------
        -- Activation_Call_Loc --
        -------------------------
*************** package body Exp_Ch9 is
*** 4423,4435 ****
           end if;
        end Activation_Call_Loc;
  
        --  Local variables
  
        Chain : Entity_Id;
        Call  : Node_Id;
        Loc   : Source_Ptr;
-       Name  : Node_Id;
-       Owner : Node_Id;
        Stmt  : Node_Id;
  
     --  Start of processing for Build_Task_Activation_Call
--- 4425,4483 ----
           end if;
        end Activation_Call_Loc;
  
+       -----------------------------
+       -- Activation_Chain_Entity --
+       -----------------------------
+ 
+       function Activation_Chain_Entity (N : Node_Id) return Entity_Id is
+          K      : constant Node_Kind := Nkind (N);
+          Def_Id : constant Entity_Id :=
+            (if K = N_Subprogram_Body and then Is_Task_Body_Procedure (N)
+             then Corresponding_Spec (Original_Node (N))
+             else Unique_Defining_Entity (N));
+          --  For task body procedures, the entity is chained on the task spec
+ 
+          E : Entity_Id;
+ 
+       begin
+          if not Has_Activation_Chain_Entity (Def_Id) then
+             return Empty;
+          end if;
+ 
+          E := First_Entity (Def_Id);
+          while Present (E) loop
+             exit when Chars (E) = Name_uChain;
+             Next_Entity (E);
+          end loop;
+ 
+          --  For package and subprogram bodies, entities first chained on the
+          --  spec may subsequently be moved to the body when they are created
+          --  during the analysis of the body, see the manipulation at the end
+          --  of Analyze_{Package,Subprogram}_Body_Helper.
+ 
+          if No (E)
+            and then K in N_Package_Body | N_Subprogram_Body
+            and then Present (Corresponding_Spec (N))
+          then
+             E := First_Entity (Defining_Entity (N));
+             while Present (E) loop
+                exit when Chars (E) = Name_uChain;
+                Next_Entity (E);
+             end loop;
+          end if;
+ 
+          --  The entity must be present if the flag is set
+ 
+          pragma Assert (Present (E));
+ 
+          return E;
+       end Activation_Chain_Entity;
+ 
        --  Local variables
  
        Chain : Entity_Id;
        Call  : Node_Id;
        Loc   : Source_Ptr;
        Stmt  : Node_Id;
  
     --  Start of processing for Build_Task_Activation_Call
*************** package body Exp_Ch9 is
*** 4451,4475 ****
           return;
        end if;
  
-       --  Obtain the activation chain entity. Block statements, entry bodies,
-       --  subprogram bodies, and task bodies keep the entity in their nodes.
-       --  Package bodies on the other hand store it in the declaration of the
-       --  corresponding package spec.
- 
-       Owner := N;
- 
-       if Nkind (Owner) = N_Package_Body then
-          Owner := Unit_Declaration_Node (Corresponding_Spec (Owner));
-       end if;
- 
        --  An extended return statement is not really a task activator, but it
        --  does have an activation chain on which to store tasks temporarily.
        --  On successful return, the tasks on this chain are moved to the chain
        --  passed in by the caller.
  
!       pragma Assert (Nkind (Owner) /= N_Extended_Return_Statement);
  
!       Chain := Activation_Chain_Entity (Owner);
  
        --  Nothing to do when there are no tasks to activate. This is indicated
        --  by a missing activation chain entity; also skip generating it when
--- 4499,4514 ----
           return;
        end if;
  
        --  An extended return statement is not really a task activator, but it
        --  does have an activation chain on which to store tasks temporarily.
        --  On successful return, the tasks on this chain are moved to the chain
        --  passed in by the caller.
  
!       pragma Assert (Nkind (N) /= N_Extended_Return_Statement);
  
!       --  Obtain the activation chain entity
! 
!       Chain := Activation_Chain_Entity (N);
  
        --  Nothing to do when there are no tasks to activate. This is indicated
        --  by a missing activation chain entity; also skip generating it when
*************** package body Exp_Ch9 is
*** 4497,4515 ****
  
        Loc := Activation_Call_Loc;
  
!       if Restricted_Profile then
!          Name := New_Occurrence_Of (RTE (RE_Activate_Restricted_Tasks), Loc);
!       else
!          Name := New_Occurrence_Of (RTE (RE_Activate_Tasks), Loc);
!       end if;
! 
!       Call :=
!         Make_Procedure_Call_Statement (Loc,
!           Name                   => Name,
!           Parameter_Associations =>
!             New_List (Make_Attribute_Reference (Loc,
!               Prefix         => New_Occurrence_Of (Chain, Loc),
!               Attribute_Name => Name_Unchecked_Access)));
  
        if Nkind (N) = N_Package_Declaration then
           if Present (Private_Declarations (Specification (N))) then
--- 4536,4542 ----
  
        Loc := Activation_Call_Loc;
  
!       Call := Make_Task_Activation_Call (Loc, Chain);
  
        if Nkind (N) = N_Package_Declaration then
           if Present (Private_Declarations (Specification (N))) then
*************** package body Exp_Ch9 is
*** 4573,4594 ****
  
     function Build_Task_Allocate_Block
       (N          : Node_Id;
!       Init_Stmts : List_Id) return List_Id
     is
        Loc    : constant Source_Ptr := Sloc (N);
        Chain  : constant Entity_Id  :=
                   Make_Defining_Identifier (Loc, Name_uChain);
!       Blkent : constant Entity_Id  := Make_Temporary (Loc, 'A');
        Block  : Node_Id;
  
     begin
!       Append_To (Init_Stmts,
!         Make_Procedure_Call_Statement (Loc,
!           Name => New_Occurrence_Of (RTE (RE_Activate_Tasks), Loc),
!           Parameter_Associations => New_List (
!             Make_Attribute_Reference (Loc,
!               Prefix         => New_Occurrence_Of (Chain, Loc),
!               Attribute_Name => Name_Unchecked_Access))));
  
        Block :=
          Make_Block_Statement (Loc,
--- 4600,4619 ----
  
     function Build_Task_Allocate_Block
       (N          : Node_Id;
!       Init_Stmts : List_Id) return Node_Id
     is
        Loc    : constant Source_Ptr := Sloc (N);
        Chain  : constant Entity_Id  :=
                   Make_Defining_Identifier (Loc, Name_uChain);
!       Blkent : constant Entity_Id  :=
!         New_Internal_Entity (E_Block, Current_Scope, Loc, 'B');
        Block  : Node_Id;
  
     begin
!       Set_Etype (Blkent, Standard_Void_Type);
!       Set_Has_Activation_Chain_Entity (Blkent);
! 
!       Append_To (Init_Stmts, Make_Task_Activation_Call (Loc, Chain));
  
        Block :=
          Make_Block_Statement (Loc,
*************** package body Exp_Ch9 is
*** 4606,4621 ****
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc, Init_Stmts),
  
!           Has_Created_Identifier   => True,
!           Is_Task_Allocation_Block => True);
  
!       Set_Activation_Chain_Entity (Block, Chain);
  
!       return New_List (
!         Make_Implicit_Label_Declaration (Loc,
!           Defining_Identifier => Blkent,
!           Label_Construct     => Block),
!         Block);
     end Build_Task_Allocate_Block;
  
     -----------------------------------
--- 4631,4641 ----
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc, Init_Stmts),
  
!           Has_Created_Identifier => True);
  
!       Set_Is_Task_Allocation_Block (Block);
  
!       return Block;
     end Build_Task_Allocate_Block;
  
     -----------------------------------
*************** package body Exp_Ch9 is
*** 11343,11358 ****
     --  callings sequence is identical.
  
     procedure Expand_N_Task_Body (N : Node_Id) is
!       Loc   : constant Source_Ptr := Sloc (N);
!       Ttyp  : constant Entity_Id  := Corresponding_Spec (N);
!       Call  : Node_Id;
!       New_N : Node_Id;
  
        Insert_Nod : Node_Id;
!       --  Used to determine the proper location of wrapper body insertions
  
     begin
!       --  if no task body procedure, means we had an error in configurable
        --  run-time mode, and there is no point in proceeding further.
  
        if No (Task_Body_Procedure (Ttyp)) then
--- 11363,11377 ----
     --  callings sequence is identical.
  
     procedure Expand_N_Task_Body (N : Node_Id) is
!       Loc  : constant Source_Ptr := Sloc (N);
!       Ttyp : constant Entity_Id  := Corresponding_Spec (N);
  
+       Call       : Node_Id;
        Insert_Nod : Node_Id;
!       New_N      : Node_Id;
  
     begin
!       --  If no task body procedure, means we had an error in configurable
        --  run-time mode, and there is no point in proceeding further.
  
        if No (Task_Body_Procedure (Ttyp)) then
*************** package body Exp_Ch9 is
*** 11395,11408 ****
        Set_At_End_Proc (New_N, At_End_Proc (N));
  
        --  If the task contains generic instantiations, cleanup actions are
!       --  delayed until after instantiation. Transfer the activation chain to
!       --  the subprogram, to insure that the activation call is properly
!       --  generated. It the task body contains inner tasks, indicate that the
!       --  subprogram is a task master.
  
        if Delay_Cleanups (Ttyp) then
!          Set_Activation_Chain_Entity (New_N, Activation_Chain_Entity (N));
!          Set_Is_Task_Master  (New_N, Is_Task_Master (N));
        end if;
  
        Rewrite (N, New_N);
--- 11414,11429 ----
        Set_At_End_Proc (New_N, At_End_Proc (N));
  
        --  If the task contains generic instantiations, cleanup actions are
!       --  delayed until after instantiation. Propagate the activation chain
!       --  to the subprogram, to ensure that the activation call is properly
!       --  generated, and indicate that the subprogram body is a task master.
  
        if Delay_Cleanups (Ttyp) then
!          Set_Has_Activation_Chain_Entity
!            (Task_Body_Procedure (Ttyp), Has_Activation_Chain_Entity (Ttyp));
!          Set_Has_Master_Entity
!            (Task_Body_Procedure (Ttyp), Has_Master_Entity (Ttyp));
!          Set_Is_Task_Master (New_N, Is_Task_Master (N));
        end if;
  
        Rewrite (N, New_N);
*************** package body Exp_Ch9 is
*** 12994,12999 ****
--- 13015,13032 ----
        Context_Decls : out List_Id)
     is
     begin
+       --  First deal with a transient scope that will give rise to a block
+ 
+       if Scope_Is_Transient
+         and then Nkind (Node_To_Be_Wrapped) not in N_Declaration
+                                                  | N_Renaming_Declaration
+       then
+          Context := Node_To_Be_Wrapped;
+          Context_Id := Current_Scope;
+          Context_Decls := No_List;
+          return;
+       end if;
+ 
        --  Traverse the parent chain looking for an enclosing body, block,
        --  package or return statement.
  
*************** package body Exp_Ch9 is
*** 13060,13066 ****
              end if;
  
           elsif Nkind (Context) = N_Entry_Body then
!             Context_Id := Defining_Identifier (Context);
  
           elsif Nkind (Context) = N_Subprogram_Body then
              if Present (Corresponding_Spec (Context)) then
--- 13093,13099 ----
              end if;
  
           elsif Nkind (Context) = N_Entry_Body then
!             Context_Id := Corresponding_Spec (Context);
  
           elsif Nkind (Context) = N_Subprogram_Body then
              if Present (Corresponding_Spec (Context)) then
*************** package body Exp_Ch9 is
*** 13987,13992 ****
--- 14020,14051 ----
        return L;
     end Make_Initialize_Protection;
  
+    -------------------------------
+    -- Make_Task_Activation_Call --
+    -------------------------------
+ 
+    function Make_Task_Activation_Call
+      (Loc   : Source_Ptr;
+       Chain : Entity_Id) return Node_Id
+     is
+       Name : Node_Id;
+ 
+    begin
+       if Restricted_Profile then
+          Name := New_Occurrence_Of (RTE (RE_Activate_Restricted_Tasks), Loc);
+       else
+          Name := New_Occurrence_Of (RTE (RE_Activate_Tasks), Loc);
+       end if;
+ 
+       return
+         Make_Procedure_Call_Statement (Loc,
+           Name                   => Name,
+           Parameter_Associations =>
+             New_List (Make_Attribute_Reference (Loc,
+               Prefix         => New_Occurrence_Of (Chain, Loc),
+               Attribute_Name => Name_Unchecked_Access)));
+    end Make_Task_Activation_Call;
+ 
     ---------------------------
     -- Make_Task_Create_Call --
     ---------------------------
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_ch9.ads gcc-17-20260607/gcc/ada/exp_ch9.ads
*** gcc-17-20260531/gcc/ada/exp_ch9.ads	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_ch9.ads	Sun Jun  7 22:32:06 2026
*************** package Exp_Ch9 is
*** 37,47 ****
     --  protected subprogram.
  
     procedure Build_Activation_Chain_Entity (N : Node_Id);
!    --  Given a declaration N of an object that is a task, or contains tasks
!    --  (other than allocators to tasks) this routine ensures that an activation
!    --  chain has been declared in the appropriate scope, building the required
!    --  declaration for the chain variable if not. The name of this variable
!    --  is always _Chain and it is accessed by name.
  
     function Build_Call_With_Task (N : Node_Id; E : Entity_Id) return Node_Id;
     --  N is a node representing the name of a task or an access to a task.
--- 37,45 ----
     --  protected subprogram.
  
     procedure Build_Activation_Chain_Entity (N : Node_Id);
!    --  Given a construct N that involves tasks (other than allocators to tasks)
!    --  create a _Chain entity in the appropriate scope to be used as activation
!    --  chain if there is not already one.
  
     function Build_Call_With_Task (N : Node_Id; E : Entity_Id) return Node_Id;
     --  N is a node representing the name of a task or an access to a task.
*************** package Exp_Ch9 is
*** 56,66 ****
     --  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;
--- 54,64 ----
     --  For targets where tasks or tasking hierarchies are prohibited, generate:
     --      _Master : constant Integer := Library_Task_Level;
  
!    procedure Build_Master_Entity (N : Node_Id);
!    --  Given a construct N that involves or designates tasks, create a _Master
!    --  entity in the appropriate scope if there is not already one, which will
!    --  capture 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;
*************** package Exp_Ch9 is
*** 111,121 ****
  
     function Build_Task_Allocate_Block
       (N          : Node_Id;
!       Init_Stmts : List_Id) return List_Id;
     --  This function is used for allocators where the designated type is a task
     --  or contains tasks. In this case, the initialization call is replaced by:
     --
-    --    blockname : label;
     --    blockname : declare
     --       _Chain  : Activation_Chain;
     --
--- 109,118 ----
  
     function Build_Task_Allocate_Block
       (N          : Node_Id;
!       Init_Stmts : List_Id) return Node_Id;
     --  This function is used for allocators where the designated type is a task
     --  or contains tasks. In this case, the initialization call is replaced by:
     --
     --    blockname : declare
     --       _Chain  : Activation_Chain;
     --
*************** package Exp_Ch9 is
*** 311,316 ****
--- 308,318 ----
     --  All the above declarations are inserted in the order shown to the front
     --  of Decls.
  
+    function Make_Task_Activation_Call
+      (Loc   : Source_Ptr;
+       Chain : Entity_Id) return Node_Id;
+    --  Build a call to Activate_Tasks with Chain as the single parameter
+ 
     function Make_Task_Create_Call (Task_Rec : Entity_Id) return Node_Id;
     --  Given the entity of the record type created for a task type, build
     --  the call to Create_Task
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_disp.adb gcc-17-20260607/gcc/ada/exp_disp.adb
*** gcc-17-20260531/gcc/ada/exp_disp.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_disp.adb	Sun Jun  7 22:32:06 2026
*************** package body Exp_Disp is
*** 5129,5134 ****
--- 5129,5178 ----
               Attribute_Name => Name_Alignment));
        end if;
  
+       --  Transportable: Set for types that can be used in remote calls
+       --  with respect to E.4(18) legality rules.
+ 
+       declare
+          Transportable : Entity_Id;
+ 
+       begin
+          Transportable :=
+            Boolean_Literals
+              (Is_Pure (Typ)
+                 or else Is_Shared_Passive (Typ)
+                 or else
+                   ((Is_Remote_Types (Typ)
+                      or else Is_Remote_Call_Interface (Typ))
+                    and then Original_View_In_Visible_Part (Typ))
+                 or else not Comes_From_Source (Typ));
+ 
+          Append_To (TSD_Aggr_List,
+             New_Occurrence_Of (Transportable, Loc));
+       end;
+ 
+       --  Needs_Finalization: Set if the type is controlled or has controlled
+       --  components.
+ 
+       declare
+          Needs_Fin : Entity_Id;
+       begin
+          Needs_Fin := Boolean_Literals (Needs_Finalization (Typ));
+          Append_To (TSD_Aggr_List, New_Occurrence_Of (Needs_Fin, Loc));
+       end;
+ 
+       --  Is_Abstract (Ada 2012: AI05-0173). This functionality is not
+       --  available in the HIE runtime.
+ 
+       if RTE_Record_Component_Available (RE_Is_Abstract) then
+          declare
+             Is_Abstract : Entity_Id;
+          begin
+             Is_Abstract := Boolean_Literals (Is_Abstract_Type (Typ));
+             Append_To (TSD_Aggr_List,
+               New_Occurrence_Of (Is_Abstract, Loc));
+          end;
+       end if;
+ 
        --  Expanded_Name
  
        Append_To (TSD_Aggr_List,
*************** package body Exp_Disp is
*** 5301,5307 ****
                    New_Val := Old_Val;
                 else
                    Start_String (Old_Val);
!                   Store_String_Char (Get_Char_Code (ASCII.NUL));
                    New_Val := End_String;
                 end if;
  
--- 5345,5351 ----
                    New_Val := Old_Val;
                 else
                    Start_String (Old_Val);
!                   Store_String_Char (ASCII.NUL);
                    New_Val := End_String;
                 end if;
  
*************** package body Exp_Disp is
*** 5345,5394 ****
               New_Occurrence_Of (RTE (RE_Null_Address), Loc)));
        end if;
  
-       --  Transportable: Set for types that can be used in remote calls
-       --  with respect to E.4(18) legality rules.
- 
-       declare
-          Transportable : Entity_Id;
- 
-       begin
-          Transportable :=
-            Boolean_Literals
-              (Is_Pure (Typ)
-                 or else Is_Shared_Passive (Typ)
-                 or else
-                   ((Is_Remote_Types (Typ)
-                      or else Is_Remote_Call_Interface (Typ))
-                    and then Original_View_In_Visible_Part (Typ))
-                 or else not Comes_From_Source (Typ));
- 
-          Append_To (TSD_Aggr_List,
-             New_Occurrence_Of (Transportable, Loc));
-       end;
- 
-       --  Is_Abstract (Ada 2012: AI05-0173). This functionality is not
-       --  available in the HIE runtime.
- 
-       if RTE_Record_Component_Available (RE_Is_Abstract) then
-          declare
-             Is_Abstract : Entity_Id;
-          begin
-             Is_Abstract := Boolean_Literals (Is_Abstract_Type (Typ));
-             Append_To (TSD_Aggr_List,
-               New_Occurrence_Of (Is_Abstract, Loc));
-          end;
-       end if;
- 
-       --  Needs_Finalization: Set if the type is controlled or has controlled
-       --  components.
- 
-       declare
-          Needs_Fin : Entity_Id;
-       begin
-          Needs_Fin := Boolean_Literals (Needs_Finalization (Typ));
-          Append_To (TSD_Aggr_List, New_Occurrence_Of (Needs_Fin, Loc));
-       end;
- 
        --  Size_Func
  
        if RTE_Record_Component_Available (RE_Size_Func) then
--- 5389,5394 ----
diff -Nrcpad gcc-17-20260531/gcc/ada/exp_util.adb gcc-17-20260607/gcc/ada/exp_util.adb
*** gcc-17-20260531/gcc/ada/exp_util.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/exp_util.adb	Sun Jun  7 22:32:06 2026
*************** package body Exp_Util is
*** 6829,6835 ****
        --  early return if we have no more statements or they have been
        --  rewritten, which means that they were in the source code.
  
!       elsif No (Stmt) or else Original_Node (Stmt) /= Stmt then
           return Last_Init;
  
        --  In all other cases the initialization calls follow the related
--- 6829,6835 ----
        --  early return if we have no more statements or they have been
        --  rewritten, which means that they were in the source code.
  
!       elsif No (Stmt) or else Is_Rewrite_Substitution (Stmt) then
           return Last_Init;
  
        --  In all other cases the initialization calls follow the related
*************** package body Exp_Util is
*** 7401,7413 ****
  
           if Present (Scope (Scope (Ent))) then
              Internal_Full_Qualified_Name (Scope (Ent));
!             Store_String_Char (Get_Char_Code ('.'));
           end if;
  
           --  Every entity should have a name except some expanded blocks
           --  don't bother about those.
  
           if Chars (Ent) = No_Name then
              return;
           end if;
  
--- 7401,7415 ----
  
           if Present (Scope (Scope (Ent))) then
              Internal_Full_Qualified_Name (Scope (Ent));
!             Store_String_Char ('.');
           end if;
  
           --  Every entity should have a name except some expanded blocks
           --  don't bother about those.
  
           if Chars (Ent) = No_Name then
+             pragma Assert (Ekind (Ent) = E_Block);
+             pragma Assert (No (Scope (Ent)));
              return;
           end if;
  
*************** package body Exp_Util is
*** 7419,7432 ****
           return;
        end Internal_Full_Qualified_Name;
  
!    --  Start of processing for Full_Qualified_Name
  
     begin
        Start_String;
        Internal_Full_Qualified_Name (E);
  
        if Append_NUL then
!          Store_String_Char (Get_Char_Code (ASCII.NUL));
        end if;
  
        return End_String;
--- 7421,7434 ----
           return;
        end Internal_Full_Qualified_Name;
  
!    --  Start of processing for Full_Qualified_Name_String
  
     begin
        Start_String;
        Internal_Full_Qualified_Name (E);
  
        if Append_NUL then
!          Store_String_Char (ASCII.NUL);
        end if;
  
        return End_String;
diff -Nrcpad gcc-17-20260531/gcc/ada/expander.adb gcc-17-20260607/gcc/ada/expander.adb
*** gcc-17-20260531/gcc/ada/expander.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/expander.adb	Sun Jun  7 22:32:06 2026
*************** package body Expander is
*** 537,543 ****
  
           if Scope_Is_Transient and then N = Node_To_Be_Wrapped then
              case Nkind (N) is
!                when N_Procedure_Call_Statement
                    | N_Statement_Other_Than_Procedure_Call
                 =>
                    Wrap_Transient_Statement (N);
--- 537,544 ----
  
           if Scope_Is_Transient and then N = Node_To_Be_Wrapped then
              case Nkind (N) is
!                when N_Pragma
!                   | N_Procedure_Call_Statement
                    | N_Statement_Other_Than_Procedure_Call
                 =>
                    Wrap_Transient_Statement (N);
diff -Nrcpad gcc-17-20260531/gcc/ada/freeze.adb gcc-17-20260607/gcc/ada/freeze.adb
*** gcc-17-20260531/gcc/ada/freeze.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/freeze.adb	Sun Jun  7 22:32:06 2026
*************** package body Freeze is
*** 8621,8627 ****
  
        Allocator_Typ : Entity_Id := Empty;
  
!       Freeze_Outside_Subp  : Entity_Id := Empty;
        --  This entity is set if we are inside a subprogram body and the frozen
        --  entity is defined in the enclosing scope of this subprogram. In such
        --  case we must skip the subprogram body when climbing the parents chain
--- 8621,8627 ----
  
        Allocator_Typ : Entity_Id := Empty;
  
!       Freeze_Outside_Subp : Entity_Id := Empty;
        --  This entity is set if we are inside a subprogram body and the frozen
        --  entity is defined in the enclosing scope of this subprogram. In such
        --  case we must skip the subprogram body when climbing the parents chain
*************** package body Freeze is
*** 9419,9428 ****
              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;
--- 9419,9428 ----
              Check_Fully_Declared (Typ, N);
  
              if Error_Posted (N) then
!                if Is_Incompletely_Defined (Typ)
                   and then not Is_Private_Type (Typ)
                 then
!                   Error_Msg_NE ("\\type& is not completely defined", N, Typ);
                 end if;
  
                 Explain_Error;
diff -Nrcpad gcc-17-20260531/gcc/ada/gcc-interface/decl.cc gcc-17-20260607/gcc/ada/gcc-interface/decl.cc
*** gcc-17-20260531/gcc/ada/gcc-interface/decl.cc	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gcc-interface/decl.cc	Sun Jun  7 22:32:06 2026
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 814,825 ****
  	  }
  
  	/* If an alignment is specified, use it if valid.  Note that exceptions
! 	   are objects but don't have an alignment and there is also no point in
! 	   setting it for an address clause, since the final type of the object
! 	   will be a reference type.  */
! 	if (Known_Alignment (gnat_entity)
! 	    && kind != E_Exception
! 	    && No (Address_Clause (gnat_entity)))
  	  align = validate_alignment (Alignment (gnat_entity), gnat_entity,
  				      TYPE_ALIGN (gnu_type));
  
--- 814,821 ----
  	  }
  
  	/* If an alignment is specified, use it if valid.  Note that exceptions
! 	   are objects but don't have an alignment.  */
! 	if (Known_Alignment (gnat_entity) && kind != E_Exception)
  	  align = validate_alignment (Alignment (gnat_entity), gnat_entity,
  				      TYPE_ALIGN (gnu_type));
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1489,1500 ****
  			     false);
  		  }
  
- 		/* Give a warning if the size is constant but too large.  */
- 		if (TREE_CODE (TYPE_SIZE_UNIT (gnu_alloc_type)) == INTEGER_CST
- 		    && !valid_constant_size_p (TYPE_SIZE_UNIT (gnu_alloc_type)))
- 		  post_error ("??Storage_Error will be raised at run time!",
- 			      gnat_entity);
- 
  		gnu_expr
  		  = build_allocator (gnu_alloc_type, gnu_expr, gnu_type,
  				     Empty, Empty, gnat_entity, mutable_p);
--- 1485,1490 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3551,3558 ****
  	      }
  
  	/* If this is a derived type with discriminants and these discriminants
! 	   affect the initial shape it has inherited, factor them in.  */
! 	if (has_discr
  	    && !is_extension
  	    && !Has_Record_Rep_Clause (gnat_entity)
  	    && Stored_Constraint (gnat_entity) != No_Elist
--- 3541,3551 ----
  	      }
  
  	/* If this is a derived type with discriminants and these discriminants
! 	   affect the initial shape it has inherited, factor them in, but this
! 	   is not needed for a C-compatible Unchecked_Union since the variants
! 	   are at offset 0 in there.  */
! 	if (TREE_CODE (gnu_type) == RECORD_TYPE
! 	    && has_discr
  	    && !is_extension
  	    && !Has_Record_Rep_Clause (gnat_entity)
  	    && Stored_Constraint (gnat_entity) != No_Elist
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3727,3734 ****
  		 we are asked to output GNAT encodings, write a record that
  		 shows what we are a subtype of and also make a variable that
  		 indicates our size, if still variable.  */
! 	      if (debug_info_p
! 		  && gnat_encodings == DWARF_GNAT_ENCODINGS_ALL)
  		{
  		  tree gnu_subtype_marker = make_node (RECORD_TYPE);
  		  tree gnu_unpad_base_name
--- 3720,3729 ----
  		 we are asked to output GNAT encodings, write a record that
  		 shows what we are a subtype of and also make a variable that
  		 indicates our size, if still variable.  */
! 	      if (!debug_info_p)
! 		;
! 
! 	      else if (gnat_encodings == DWARF_GNAT_ENCODINGS_ALL)
  		{
  		  tree gnu_subtype_marker = make_node (RECORD_TYPE);
  		  tree gnu_unpad_base_name
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3759,3769 ****
  					 true, true, NULL, gnat_entity, false);
  		}
  
! 	      /* Or else, if the subtype is artificial and GNAT encodings are
! 		 not used, use the base record type as the debug type.  */
! 	      else if (debug_info_p
! 		       && artificial_p
! 		       && gnat_encodings != DWARF_GNAT_ENCODINGS_ALL)
  		SET_TYPE_DEBUG_TYPE (gnu_type, gnu_unpad_base_type);
  	    }
  
--- 3754,3762 ----
  					 true, true, NULL, gnat_entity, false);
  		}
  
! 	      /* Or else, if the subtype is artificial, use the base record
! 	         type as the debug type.  */
! 	      else if (artificial_p)
  		SET_TYPE_DEBUG_TYPE (gnu_type, gnu_unpad_base_type);
  	    }
  
*************** update_profile (Entity_Id gnat_subprog)
*** 6018,6023 ****
--- 6011,6019 ----
  
        DECL_ARGUMENTS (gnu_subprog) = gnu_param_list;
        finish_subprog_decl (gnu_subprog, gnu_ext_name, gnu_type);
+ 
+       /* If the function returns by invisible reference, make it explicit.  */
+       adjust_result_decl_for_invisible_reference (gnu_subprog);
      }
  }
  
*************** components_to_record (Node_Id gnat_compo
*** 8614,8622 ****
       mutually exclusive and should go in the same memory.  To do this we need
       to treat each variant as a record whose elements are created from the
       component list for the variant.  So here we create the records from the
!      lists for the variants and put them all into the QUAL_UNION_TYPE.
!      If this is an Unchecked_Union, we make a UNION_TYPE instead or
!      use GNU_RECORD_TYPE if there are no fields so far.  */
    if (Present (gnat_variant_part))
      {
        Node_Id gnat_discr = Name (gnat_variant_part), variant;
--- 8610,8618 ----
       mutually exclusive and should go in the same memory.  To do this we need
       to treat each variant as a record whose elements are created from the
       component list for the variant.  So here we create the records from the
!      lists for the variants and put them all into the QUAL_UNION_TYPE.  But
!      if this is an Unchecked_Union, we make a UNION_TYPE instead, or reuse
!      GNU_RECORD_TYPE (which is a UNION_TYPE) if there are no fixed fields.  */
    if (Present (gnat_variant_part))
      {
        Node_Id gnat_discr = Name (gnat_variant_part), variant;
*************** build_position_list (tree gnu_type, bool
*** 9721,9727 ****
  	{
  	  tree gnu_field_type = TREE_TYPE (gnu_field);
  	  if (do_not_flatten_variant
! 	      && TREE_CODE (gnu_field_type) == QUAL_UNION_TYPE)
  	    gnu_list
  	      = build_position_list (gnu_field_type, do_not_flatten_variant,
  				     size_zero_node, bitsize_zero_node,
--- 9717,9724 ----
  	{
  	  tree gnu_field_type = TREE_TYPE (gnu_field);
  	  if (do_not_flatten_variant
! 	      && (TREE_CODE (gnu_field_type) == QUAL_UNION_TYPE
! 		  || TREE_CODE (gnu_field_type) == UNION_TYPE))
  	    gnu_list
  	      = build_position_list (gnu_field_type, do_not_flatten_variant,
  				     size_zero_node, bitsize_zero_node,
*************** build_variant_list (tree gnu_qual_union_
*** 9808,9814 ****
  
        /* If the new qualifier is not unconditionally false, its variant may
  	 still be accessed.  */
!       if (!integer_zerop (qual))
  	{
  	  tree variant_type = TREE_TYPE (gnu_field), variant_subpart;
  	  variant_desc v
--- 9805,9811 ----
  
        /* If the new qualifier is not unconditionally false, its variant may
  	 still be accessed.  */
!       if (!qual || !integer_zerop (qual))
  	{
  	  tree variant_type = TREE_TYPE (gnu_field), variant_subpart;
  	  variant_desc v
*************** build_variant_list (tree gnu_qual_union_
*** 9817,9823 ****
  	  gnu_list.safe_push (v);
  
  	  /* Annotate the GNAT node if present.  */
! 	  if (Present (gnat_variant))
  	    Set_Present_Expr (gnat_variant, annotate_value (qual));
  
  	  /* Recurse on the variant subpart of the variant, if any.  */
--- 9814,9820 ----
  	  gnu_list.safe_push (v);
  
  	  /* Annotate the GNAT node if present.  */
! 	  if (qual && Present (gnat_variant))
  	    Set_Present_Expr (gnat_variant, annotate_value (qual));
  
  	  /* Recurse on the variant subpart of the variant, if any.  */
*************** build_variant_list (tree gnu_qual_union_
*** 9834,9840 ****
  
  	  /* If the new qualifier is unconditionally true, the subsequent
  	     variants cannot be accessed.  */
! 	  if (integer_onep (qual))
  	    break;
  	}
      }
--- 9831,9837 ----
  
  	  /* If the new qualifier is unconditionally true, the subsequent
  	     variants cannot be accessed.  */
! 	  if (qual && integer_onep (qual))
  	    break;
  	}
      }
*************** get_variant_part (tree record_type)
*** 10549,10558 ****
  {
    tree field;
  
!   /* The variant part is the only internal field that is a qualified union.  */
    for (field = TYPE_FIELDS (record_type); field; field = DECL_CHAIN (field))
      if (DECL_INTERNAL_P (field)
! 	&& TREE_CODE (TREE_TYPE (field)) == QUAL_UNION_TYPE)
        return field;
  
    return NULL_TREE;
--- 10546,10556 ----
  {
    tree field;
  
!   /* The variant part is the only internal field that is a union.  */
    for (field = TYPE_FIELDS (record_type); field; field = DECL_CHAIN (field))
      if (DECL_INTERNAL_P (field)
! 	&& (TREE_CODE (TREE_TYPE (field)) == QUAL_UNION_TYPE
! 	    || TREE_CODE (TREE_TYPE (field)) == UNION_TYPE))
        return field;
  
    return NULL_TREE;
*************** create_variant_part_from (tree old_varia
*** 10579,10585 ****
    unsigned int i;
  
    /* First create the type of the variant part from that of the old one.  */
!   new_union_type = make_node (QUAL_UNION_TYPE);
    TYPE_NAME (new_union_type)
      = concat_name (TYPE_NAME (record_type),
  		   IDENTIFIER_POINTER (DECL_NAME (old_variant_part)));
--- 10577,10583 ----
    unsigned int i;
  
    /* First create the type of the variant part from that of the old one.  */
!   new_union_type = make_node (TREE_CODE (TREE_TYPE (old_variant_part)));
    TYPE_NAME (new_union_type)
      = concat_name (TYPE_NAME (record_type),
  		   IDENTIFIER_POINTER (DECL_NAME (old_variant_part)));
*************** copy_and_substitute_in_layout (Entity_Id
*** 10782,10788 ****
  	 is statically selected.  */
        selected_variant = true;
        FOR_EACH_VEC_ELT (gnu_variant_list, i, v)
! 	if (!integer_onep (v->qual))
  	  {
  	    selected_variant = false;
  	    break;
--- 10780,10786 ----
  	 is statically selected.  */
        selected_variant = true;
        FOR_EACH_VEC_ELT (gnu_variant_list, i, v)
! 	if (!v->qual || !integer_onep (v->qual))
  	  {
  	    selected_variant = false;
  	    break;
*************** copy_and_substitute_in_layout (Entity_Id
*** 10972,10977 ****
--- 10970,10996 ----
  	  save_gnu_tree (gnat_field, gnu_field, false);
        }
  
+   /* For a tagged subtype, inherit the non-stored dicriminants from the old
+      type instead of inheriting them from an ancestor.  That's specifically
+      helpful for the Parent_Subtype of tagged extensions when discriminants
+      must be rematerialized by the DWARF back-end, to describe the variant
+      part of extensions, because the discriminants of the old type are also
+      non-stored whereas those of the (ultimate) ancestor are stored.  */
+   if (is_subtype && Is_Tagged_Type (gnat_new_type))
+     for (gnat_field = First_Discriminant (gnat_new_type);
+ 	 Present (gnat_field);
+ 	 gnat_field = Next_Discriminant (gnat_field))
+       if (!is_stored_discriminant (gnat_field, gnat_new_type)
+ 	  && (gnat_old_field = Original_Record_Component (gnat_field))
+ 	  && Underlying_Type (Scope (gnat_old_field)) == gnat_old_type
+ 	  && present_gnu_tree (gnat_old_field))
+ 	{
+ 	  tree gnu_old_field = get_gnu_tree (gnat_old_field);
+ 	  if (TREE_CODE (gnu_old_field) == COMPONENT_REF)
+ 	    gnu_old_field = TREE_OPERAND (gnu_old_field, 1);
+ 	  save_gnu_tree (gnat_field, gnu_old_field, false);
+ 	}
+ 
    /* Put the fields with fixed position in order of increasing position.  */
    if (gnu_field_list)
      gnu_field_list = reverse_sort_field_list (gnu_field_list);
diff -Nrcpad gcc-17-20260531/gcc/ada/gcc-interface/gigi.h gcc-17-20260607/gcc/ada/gcc-interface/gigi.h
*** gcc-17-20260531/gcc/ada/gcc-interface/gigi.h	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gcc-interface/gigi.h	Sun Jun  7 22:32:06 2026
*************** return_type_with_variable_size_p (tree t
*** 1208,1213 ****
--- 1208,1237 ----
    return false;
  }
  
+ /* Adjust RESULT_DECL of a function that returns by invisible reference.
+ 
+    Adjusting the RESULT_DECL of functions is needed before handing them over
+    to the middle-end when they return by invisible reference and are defined
+    in the current translation unit, which is done in Subprogram_Body_to_gnu.
+ 
+    That's also needed when the functions are generated by the middle-end, like
+    GNU thunks.  But, in this case, the transformation can only be applied when
+    the full view of the type is available, which is not guaranteed by the time
+    maybe_make_gnu_thunk is invoked, so the transformation needs to be delayed
+    and applied by update_profile when the full view is eventually seen.  */
+ 
+ static inline void
+ adjust_result_decl_for_invisible_reference (tree subprog)
+ {
+   if (TREE_ADDRESSABLE (TREE_TYPE (subprog))
+       && TREE_CODE (TREE_TYPE (DECL_RESULT (subprog))) != REFERENCE_TYPE)
+     {
+       TREE_TYPE (DECL_RESULT (subprog))
+ 	= build_reference_type (TREE_TYPE (DECL_RESULT (subprog)));
+       relayout_decl (DECL_RESULT (subprog));
+     }
+ }
+ 
  /* Return the unsigned version of TYPE_NODE, a scalar type.  */
  
  static inline tree
diff -Nrcpad gcc-17-20260531/gcc/ada/gcc-interface/targtyps.cc gcc-17-20260607/gcc/ada/gcc-interface/targtyps.cc
*** gcc-17-20260531/gcc/ada/gcc-interface/targtyps.cc	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gcc-interface/targtyps.cc	Sun Jun  7 22:32:06 2026
***************
*** 31,36 ****
--- 31,37 ----
  #include "tm.h"
  #include "target.h"
  #include "tree.h"
+ #include "stor-layout.h"
  
  #include "ada.h"
  #include "types.h"
diff -Nrcpad gcc-17-20260531/gcc/ada/gcc-interface/trans.cc gcc-17-20260607/gcc/ada/gcc-interface/trans.cc
*** gcc-17-20260531/gcc/ada/gcc-interface/trans.cc	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gcc-interface/trans.cc	Sun Jun  7 22:32:06 2026
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3995,4011 ****
    else
      gnu_return_var_elmt = NULL_TREE;
  
!   /* If the function returns by invisible reference, make it explicit in the
!      function body, but beware that maybe_make_gnu_thunk may already have done
!      it if the function is inlined across units.  See gnat_to_gnu_subprog_type
!      for more details.  */
!   if (TREE_ADDRESSABLE (gnu_subprog_type)
!       && TREE_CODE (TREE_TYPE (gnu_result_decl)) != REFERENCE_TYPE)
!     {
!       TREE_TYPE (gnu_result_decl)
! 	= build_reference_type (TREE_TYPE (gnu_result_decl));
!       relayout_decl (gnu_result_decl);
!     }
  
    /* Set the line number in the decl to correspond to that of the body.  */
    if (DECL_IGNORED_P (gnu_subprog))
--- 3995,4002 ----
    else
      gnu_return_var_elmt = NULL_TREE;
  
!   /* If the function returns by invisible reference, make it explicit.  */
!   adjust_result_decl_for_invisible_reference (gnu_subprog);
  
    /* Set the line number in the decl to correspond to that of the body.  */
    if (DECL_IGNORED_P (gnu_subprog))
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8002,8014 ****
        break;
  
      case N_Exit_Statement:
!       gnu_result
! 	= build2 (EXIT_STMT, void_type_node,
! 		  (Present (Condition (gnat_node))
! 		   ? gnat_to_gnu (Condition (gnat_node)) : NULL_TREE),
! 		  (Present (Name (gnat_node))
! 		   ? get_gnu_tree (Entity (Name (gnat_node)))
! 		   : LOOP_STMT_LABEL (gnu_loop_stack->last ()->stmt)));
        break;
  
      case N_Simple_Return_Statement:
--- 7993,8009 ----
        break;
  
      case N_Exit_Statement:
!       {
! 	tree end_loop_label = Present (Name (gnat_node))
! 	  ? get_gnu_tree (Entity (Name (gnat_node)))
! 	  : LOOP_STMT_LABEL (gnu_loop_stack->last ()->stmt);
! 	gnu_result
! 	  = build2 (EXIT_STMT, void_type_node,
! 	      (Present (Condition (gnat_node))
! 		? gnat_to_gnu (Condition (gnat_node)) : NULL_TREE),
! 		end_loop_label);
! 	TREE_USED (end_loop_label) = 1;
!       }
        break;
  
      case N_Simple_Return_Statement:
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8789,8794 ****
--- 8784,8791 ----
  	  || kind == N_Selected_Component)
        && TREE_CODE (get_base_type (gnu_result_type)) == BOOLEAN_TYPE
        && Nkind (Parent (gnat_node)) != N_Attribute_Reference
+       && Nkind (Parent (gnat_node)) != N_Discriminant_Association
+       && Nkind (Parent (gnat_node)) != N_Index_Or_Discriminant_Constraint
        && Nkind (Parent (gnat_node)) != N_Pragma_Argument_Association
        && Nkind (Parent (gnat_node)) != N_Variant_Part
        && !lvalue_required_p (gnat_node, gnu_result_type, false, false))
*************** gnat_gimplify_stmt (tree *stmt_p)
*** 9539,9544 ****
--- 9536,9543 ----
  	    gnu_cond
  	      = build3 (COND_EXPR, void_type_node, gnu_cond, NULL_TREE,
  			build1 (GOTO_EXPR, void_type_node, gnu_end_label));
+ 
+             TREE_USED (gnu_end_label) = 1;
  	  }
  
  	/* Set to emit the statements of the loop.  */
*************** gnat_gimplify_stmt (tree *stmt_p)
*** 9548,9555 ****
  	   end label if there's a top condition, then the update if it's at
  	   the top, then the body of the loop, then a conditional jump to
  	   the end label if there's a bottom condition, then the update if
! 	   it's at the bottom, and finally a jump to the start label and the
! 	   definition of the end label.  */
  	append_to_statement_list (build1 (LABEL_EXPR, void_type_node,
  					  gnu_start_label),
  				  stmt_p);
--- 9547,9555 ----
  	   end label if there's a top condition, then the update if it's at
  	   the top, then the body of the loop, then a conditional jump to
  	   the end label if there's a bottom condition, then the update if
! 	   it's at the bottom, and finally a jump to the start label and if
! 	   there's a top or bottom condition, the definition of the end
! 	   label.  */
  	append_to_statement_list (build1 (LABEL_EXPR, void_type_node,
  					  gnu_start_label),
  				  stmt_p);
*************** gnat_gimplify_stmt (tree *stmt_p)
*** 9572,9580 ****
  	SET_EXPR_LOCATION (t, DECL_SOURCE_LOCATION (gnu_end_label));
  	append_to_statement_list (t, stmt_p);
  
! 	append_to_statement_list (build1 (LABEL_EXPR, void_type_node,
! 					  gnu_end_label),
! 				  stmt_p);
  	return GS_OK;
        }
  
--- 9572,9581 ----
  	SET_EXPR_LOCATION (t, DECL_SOURCE_LOCATION (gnu_end_label));
  	append_to_statement_list (t, stmt_p);
  
! 	if (TREE_USED (gnu_end_label))
! 	  append_to_statement_list (build1 (LABEL_EXPR, void_type_node,
! 					    gnu_end_label),
! 				    stmt_p);
  	return GS_OK;
        }
  
*************** maybe_make_gnu_thunk (Entity_Id gnat_thu
*** 11514,11529 ****
        indirect_offset = (HOST_WIDE_INT) (POINTER_SIZE / BITS_PER_UNIT);
      }
  
!   /* If the target returns by invisible reference and is external, apply the
!      same transformation as Subprogram_Body_to_gnu here.  */
!   if (TREE_ADDRESSABLE (TREE_TYPE (gnu_target))
!       && DECL_EXTERNAL (gnu_target)
!       && TREE_CODE (TREE_TYPE (DECL_RESULT (gnu_target))) != REFERENCE_TYPE)
!     {
!       TREE_TYPE (DECL_RESULT (gnu_target))
! 	= build_reference_type (TREE_TYPE (DECL_RESULT (gnu_target)));
!       relayout_decl (DECL_RESULT (gnu_target));
!     }
  
    /* The thunk expander requires the return types of thunk and target to be
       compatible, which is not fully the case with the CICO mechanism.  */
--- 11515,11522 ----
        indirect_offset = (HOST_WIDE_INT) (POINTER_SIZE / BITS_PER_UNIT);
      }
  
!   /* If the function returns by invisible reference, make it explicit.  */
!   adjust_result_decl_for_invisible_reference (gnu_target);
  
    /* The thunk expander requires the return types of thunk and target to be
       compatible, which is not fully the case with the CICO mechanism.  */
diff -Nrcpad gcc-17-20260531/gcc/ada/gcc-interface/utils.cc gcc-17-20260607/gcc/ada/gcc-interface/utils.cc
*** gcc-17-20260531/gcc/ada/gcc-interface/utils.cc	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gcc-interface/utils.cc	Sun Jun  7 22:32:06 2026
*************** maybe_pad_type (tree type, tree size, un
*** 1763,1768 ****
--- 1763,1778 ----
  	       size_binop (EXACT_DIV_EXPR, TYPE_SIZE (record),
  			   bitsize_unit_node));
  
+   /* Propagate the storage order from an aggregate type to the padded type.
+      Ideally this should not be necessary, because the flag on the padded
+      type has no semantic effects given that its only field is not scalar.
+      However, when the aggregate type contains a single scalar field, SRA
+      may totally scalarize the padded type without taking into account the
+      intermediate aggregate type and, therefore, may test the flag on the
+      former instead of the latter to generate a reverse memory access.  */
+   if (AGGREGATE_TYPE_P (type))
+     TYPE_REVERSE_STORAGE_ORDER (record) = TYPE_REVERSE_STORAGE_ORDER (type);
+ 
    /* If we are changing the alignment and the input type is a record with
       BLKmode and a small constant size, try to make a form that has an
       integral mode.  This might allow the padding record to also have an
diff -Nrcpad gcc-17-20260531/gcc/ada/gcc-interface/utils2.cc gcc-17-20260607/gcc/ada/gcc-interface/utils2.cc
*** gcc-17-20260531/gcc/ada/gcc-interface/utils2.cc	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gcc-interface/utils2.cc	Sun Jun  7 22:32:06 2026
*************** build_allocator (tree type, tree init, t
*** 2731,2737 ****
  
    /* If the size overflows, pass -1 so Storage_Error will be raised.  */
    if (TREE_CODE (size) == INTEGER_CST && !valid_constant_size_p (size))
!     size = size_int (-1);
  
    storage = convert (result_type,
  		     build_call_alloc_dealloc (NULL_TREE, size, type,
--- 2731,2740 ----
  
    /* If the size overflows, pass -1 so Storage_Error will be raised.  */
    if (TREE_CODE (size) == INTEGER_CST && !valid_constant_size_p (size))
!     {
!       post_error ("??Storage_Error will be raised at run time!", gnat_node);
!       size = size_int (-1);
!     }
  
    storage = convert (result_type,
  		     build_call_alloc_dealloc (NULL_TREE, size, type,
diff -Nrcpad gcc-17-20260531/gcc/ada/gen_il-fields.ads gcc-17-20260607/gcc/ada/gen_il-fields.ads
*** gcc-17-20260531/gcc/ada/gen_il-fields.ads	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gen_il-fields.ads	Sun Jun  7 22:32:06 2026
*************** package Gen_IL.Fields is
*** 61,67 ****
        Access_To_Subprogram_Definition,
        Access_Types_To_Process,
        Actions,
-       Activation_Chain_Entity,
        Acts_As_Spec,
        Actual_Designated_Subtype,
        Aggregate_Bounds_Or_Ancestor_Type,
--- 61,66 ----
*************** package Gen_IL.Fields is
*** 536,542 ****
        Enumeration_Rep_Expr,
        Equivalent_Type,
        Esize,
!       Extra_Accessibility,
        Extra_Accessibility_Of_Result,
        Extra_Constrained,
        Extra_Formal,
--- 535,541 ----
        Enumeration_Rep_Expr,
        Equivalent_Type,
        Esize,
!       Extra_Accessibility_Of_Object,
        Extra_Accessibility_Of_Result,
        Extra_Constrained,
        Extra_Formal,
*************** package Gen_IL.Fields is
*** 558,563 ****
--- 557,563 ----
        Generic_Homonym,
        Generic_Renamings,
        Ghost_Assertion_Level,
+       Has_Activation_Chain_Entity,
        Has_Aliased_Components,
        Has_Alignment_Clause,
        Has_All_Calls_Remote,
diff -Nrcpad gcc-17-20260531/gcc/ada/gen_il-gen-gen_entities.adb gcc-17-20260607/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-17-20260531/gcc/ada/gen_il-gen-gen_entities.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gen_il-gen-gen_entities.adb	Sun Jun  7 22:32:06 2026
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 64,69 ****
--- 64,70 ----
          Sm (Freeze_Node, Node_Id),
          Sm (From_Limited_With, Flag),
          Sm (Ghost_Assertion_Level, Node_Id),
+         Sm (Has_Activation_Chain_Entity, Flag),
          Sm (Has_Aliased_Components, Flag, Impl_Base_Type_Only),
          Sm (Has_Alignment_Clause, Flag),
          Sm (Has_All_Calls_Remote, Flag),
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 173,179 ****
          Sm (Is_Known_Non_Null, Flag),
          Sm (Is_Known_Null, Flag),
          Sm (Is_Known_Valid, Flag),
-         Sm (Is_Limited_Composite, Flag),
          Sm (Is_Limited_Interface, Flag),
          Sm (Is_Limited_Record, Flag),
          Sm (Is_Link_Once, Flag),
--- 174,179 ----
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 347,353 ****
          Sm (Contract, Node_Id),
          Sm (Discriminal_Link, Node_Id),
          Sm (Encapsulating_State, Node_Id),
!         Sm (Extra_Accessibility, Node_Id),
          Sm (Initialization_Statements, Node_Id),
          Sm (Is_Elaboration_Checks_OK_Id, Flag),
          Sm (Is_Elaboration_Warnings_OK_Id, Flag),
--- 347,353 ----
          Sm (Contract, Node_Id),
          Sm (Discriminal_Link, Node_Id),
          Sm (Encapsulating_State, Node_Id),
!         Sm (Extra_Accessibility_Of_Object, Node_Id),
          Sm (Initialization_Statements, Node_Id),
          Sm (Is_Elaboration_Checks_OK_Id, Flag),
          Sm (Is_Elaboration_Warnings_OK_Id, Flag),
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 401,407 ****
          Sm (Alignment, Unat),
          Sm (Default_Value, Node_Id),
          Sm (Entry_Component, Node_Id),
!         Sm (Extra_Accessibility, Node_Id),
          Sm (Extra_Constrained, Node_Id),
          Sm (Extra_Formal, Node_Id),
          Sm (Has_Initial_Value, Flag),
--- 401,407 ----
          Sm (Alignment, Unat),
          Sm (Default_Value, Node_Id),
          Sm (Entry_Component, Node_Id),
!         Sm (Extra_Accessibility_Of_Object, Node_Id),
          Sm (Extra_Constrained, Node_Id),
          Sm (Extra_Formal, Node_Id),
          Sm (Has_Initial_Value, Flag),
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 508,513 ****
--- 508,514 ----
          Sm (Is_Fixed_Lower_Bound_Index_Subtype, Flag),
          Sm (Is_Generic_Actual_Type, Flag),
          Sm (Is_Implicit_Full_View, Flag),
+         Sm (Is_Limited_Composite, Flag),
          Sm (Is_Mutably_Tagged_Type, Flag),
          Sm (Is_Non_Static_Subtype, Flag),
          Sm (Is_Private_Composite, Flag),
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 651,657 ****
          Sm (Is_Local_Anonymous_Access, Flag),
          Sm (Is_Param_Block_Component_Type, Flag, Base_Type_Only),
          Sm (Is_Pure_Unit_Access_Type, Flag),
!         Sm (Master_Id, Node_Id),
          Sm (No_Pool_Assigned, Flag, Root_Type_Only),
          Sm (No_Strict_Aliasing, Flag, Base_Type_Only),
          Sm (Storage_Size_Variable, Node_Id, Impl_Base_Type_Only)));
--- 652,658 ----
          Sm (Is_Local_Anonymous_Access, Flag),
          Sm (Is_Param_Block_Component_Type, Flag, Base_Type_Only),
          Sm (Is_Pure_Unit_Access_Type, Flag),
!         Sm (Master_Id, Node_Id, Root_Type_Only),
          Sm (No_Pool_Assigned, Flag, Root_Type_Only),
          Sm (No_Strict_Aliasing, Flag, Base_Type_Only),
          Sm (Storage_Size_Variable, Node_Id, Impl_Base_Type_Only)));
diff -Nrcpad gcc-17-20260531/gcc/ada/gen_il-gen-gen_nodes.adb gcc-17-20260607/gcc/ada/gen_il-gen-gen_nodes.adb
*** gcc-17-20260531/gcc/ada/gen_il-gen-gen_nodes.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gen_il-gen-gen_nodes.adb	Sun Jun  7 22:32:06 2026
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 737,743 ****
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
          Sy (Bad_Is_Detected, Flag),
          Sy (At_End_Proc, Node_Id, Default_Empty),
-         Sm (Activation_Chain_Entity, Node_Id),
          Sm (Acts_As_Spec, Flag),
          Sm (Corresponding_Entry_Body, Node_Id),
          Sm (Has_Relative_Deadline_Pragma, Flag),
--- 737,742 ----
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 760,766 ****
          Sy (Declarations, List_Id, Default_No_List),
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
          Sy (At_End_Proc, Node_Id, Default_Empty),
-         Sm (Activation_Chain_Entity, Node_Id),
          Sm (Is_Task_Master, Flag)));
  
     Cc (N_Implicit_Label_Declaration, N_Later_Decl_Item,
--- 759,764 ----
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 770,776 ****
     Cc (N_Package_Declaration, N_Later_Decl_Item,
         (Sy (Specification, Node_Id),
          Sy (Aspect_Specifications, List_Id, Default_No_List),
-         Sm (Activation_Chain_Entity, Node_Id),
          Sm (Corresponding_Body, Node_Id),
          Sm (Parent_Spec, Node_Id)));
  
--- 768,773 ----
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 913,926 ****
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
          Sy (Has_Created_Identifier, Flag),
          Sy (Is_Asynchronous_Call_Block, Flag),
-         Sy (Is_Task_Allocation_Block, Flag),
          Sy (At_End_Proc, Node_Id, Default_Empty),
-         Sm (Activation_Chain_Entity, Node_Id),
          Sm (Cleanup_Actions, List_Id),
          Sm (Exception_Junk, Flag),
          Sm (Is_Abort_Block, Flag),
          Sm (Is_Expanded_Dispatching_Call, Flag),
          Sm (Is_Initialization_Block, Flag),
          Sm (Is_Task_Master, Flag)));
  
     Cc (N_Case_Statement, N_Statement_Other_Than_Procedure_Call,
--- 910,922 ----
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
          Sy (Has_Created_Identifier, Flag),
          Sy (Is_Asynchronous_Call_Block, Flag),
          Sy (At_End_Proc, Node_Id, Default_Empty),
          Sm (Cleanup_Actions, List_Id),
          Sm (Exception_Junk, Flag),
          Sm (Is_Abort_Block, Flag),
          Sm (Is_Expanded_Dispatching_Call, Flag),
          Sm (Is_Initialization_Block, Flag),
+         Sm (Is_Task_Allocation_Block, Flag),
          Sm (Is_Task_Master, Flag)));
  
     Cc (N_Case_Statement, N_Statement_Other_Than_Procedure_Call,
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1016,1022 ****
     Cc (N_Extended_Return_Statement, N_Statement_Other_Than_Procedure_Call,
         (Sy (Return_Object_Declarations, List_Id),
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
-         Sm (Activation_Chain_Entity, Node_Id),
          Sm (Procedure_To_Call, Node_Id),
          Sm (Return_Statement_Entity, Node_Id),
          Sm (Storage_Pool, Node_Id)));
--- 1012,1017 ----
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1277,1283 ****
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
          Sy (At_End_Proc, Node_Id, Default_Empty),
          Sy (Aspect_Specifications, List_Id, Default_No_List),
-         Sm (Activation_Chain_Entity, Node_Id),
          Sm (Corresponding_Spec, Node_Id)));
  
     Cc (N_Entry_Call_Alternative, Node_Kind,
--- 1272,1277 ----
diff -Nrcpad gcc-17-20260531/gcc/ada/ghost.adb gcc-17-20260607/gcc/ada/ghost.adb
*** gcc-17-20260531/gcc/ada/ghost.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/ghost.adb	Sun Jun  7 22:32:06 2026
*************** package body Ghost is
*** 628,635 ****
  
              if Nkind (Stmt) = N_Assignment_Statement then
                 if Is_Ghost_Assignment (Stmt) then
!                   Check_Assignment_Levels
!                     (Get_Enclosing_Ghost_Entity (Name (Stmt)));
                    return True;
                 end if;
  
--- 628,642 ----
  
              if Nkind (Stmt) = N_Assignment_Statement then
                 if Is_Ghost_Assignment (Stmt) then
!                   --  No Id is present when checking the context of the
!                   --  Initialized attribute that can only appear in ghost
!                   --  context. However we do not need to check the assertion
!                   --  levels in this case.
! 
!                   if Present (Id) then
!                      Check_Assignment_Levels
!                        (Get_Enclosing_Ghost_Entity (Name (Stmt)));
!                   end if;
                    return True;
                 end if;
  
*************** package body Ghost is
*** 637,643 ****
  
              elsif Nkind (Stmt) = N_Procedure_Call_Statement then
                 if Is_Ghost_Procedure_Call (Stmt) then
!                   Check_Procedure_Call_Policies (Get_Subprogram_Entity (Stmt));
                    return True;
                 end if;
  
--- 644,658 ----
  
              elsif Nkind (Stmt) = N_Procedure_Call_Statement then
                 if Is_Ghost_Procedure_Call (Stmt) then
!                   --  No Id is present when checking the context of the
!                   --  Initialized attribute that can only appear in ghost
!                   --  context. However we do not need to check the policies nor
!                   --  the assertion levels in this case.
! 
!                   if Present (Id) then
!                      Check_Procedure_Call_Policies
!                        (Get_Subprogram_Entity (Stmt));
!                   end if;
                    return True;
                 end if;
  
*************** package body Ghost is
*** 1072,1083 ****
     -----------------------------
  
     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;
  
--- 1087,1106 ----
     -----------------------------
  
     procedure Check_Ghost_Equality_Op (Eq_Op : Entity_Id; Typ : Entity_Id) is
+       Underlying : constant Entity_Id := Underlying_Type (Typ);
     begin
        if not Is_Ghost_Entity (Eq_Op) then
           return;
        end if;
  
!       --  Look through any private view to get the underlying record type,
!       --  since a limited private type whose full view is a non-limited record
!       --  does not have "only limited views" and must be checked.
! 
!       if No (Underlying)
!         or else not Is_Record_Type (Underlying)
!         or else Is_Limited_Record (Underlying)
!       then
           return;
        end if;
  
*************** package body Ghost is
*** 2884,2889 ****
--- 2907,2914 ----
           else
              if Is_Checked (N) then
                 Install_Ghost_Region (Check, N, Level);
+             elsif Is_Ignored (N) then
+                Install_Ghost_Region (Ignore, N, Level);
              else
                 Install_Ghost_Region (None, N, Level);
              end if;
diff -Nrcpad gcc-17-20260531/gcc/ada/gnat1drv.adb gcc-17-20260607/gcc/ada/gnat1drv.adb
*** gcc-17-20260531/gcc/ada/gnat1drv.adb	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gnat1drv.adb	Sun Jun  7 22:32:06 2026
*************** begin
*** 1194,1199 ****
--- 1194,1216 ----
  
        if Compilation_Errors then
           Ecode := E_Errors;
+ 
+          if GNATprove_Mode then
+             Atree.Lock;
+             Elists.Lock;
+             Fname.UF.Lock;
+             Ghost.Lock;
+             Inline.Lock;
+             Lib.Lock;
+             Namet.Lock;
+             Nlists.Lock;
+             Sem.Lock;
+             Sinput.Lock;
+             Stringt.Lock;
+ 
+             Back_End.Call_Back_End (Declarations_Only);
+          end if;
+ 
           Treepr.Tree_Dump;
           Errout.Finalize (Last_Call => True);
           Errout.Output_Messages (Ecode);
diff -Nrcpad gcc-17-20260531/gcc/ada/gnat_rm.texi gcc-17-20260607/gcc/ada/gnat_rm.texi
*** gcc-17-20260531/gcc/ada/gnat_rm.texi	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gnat_rm.texi	Sun Jun  7 22:32:06 2026
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT Reference Manual , May 19, 2026
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT Reference Manual , Jun 04, 2026
  
  AdaCore
  
*************** Implementation Defined Attributes
*** 434,439 ****
--- 434,440 ----
  * Attribute Passed_By_Reference:: 
  * Attribute Pool_Address:: 
  * Attribute Range_Length:: 
+ * Attribute Ref:: 
  * Attribute Restriction_Set:: 
  * Attribute Result:: 
  * Attribute Round:: 
*************** that it is separately controllable using
*** 10191,10214 ****
  This aspect provides a light-weight mechanism for loops and quantified
  expressions over container types, without the overhead imposed by the tampering
  checks of standard Ada 2012 iterators. The value of the aspect is an aggregate
! with six named components, of which the last three are optional: @code{First},
! @code{Next}, @code{Has_Element}, @code{Element}, @code{Last}, and @code{Previous}.
  When only the first three components are specified, only the
! @code{for .. in} form of iteration over cursors is available. When @code{Element}
! is specified, both this form and the @code{for .. of} form of iteration over
! elements are available. If the last two components are specified, reverse
  iterations over the container can be specified (analogous to what can be done
  over predefined containers that support the @code{Reverse_Iterator} interface).
  The following is a typical example of use:
  
  @example
  type List is private with
!     Iterable => (First       => First_Cursor,
!                  Next        => Advance,
!                  Has_Element => Cursor_Has_Element
!                [,Element     => Get_Element]
!                [,Last        => Last_Cursor]
!                [,Previous    => Retreat]);
  @end example
  
  
--- 10192,10219 ----
  This aspect provides a light-weight mechanism for loops and quantified
  expressions over container types, without the overhead imposed by the tampering
  checks of standard Ada 2012 iterators. The value of the aspect is an aggregate
! with six named components, of which the last four are optional: @code{First},
! @code{Next}, @code{Has_Element}, @code{Element}, @code{Constant_Reference}, @code{Last}, and
! @code{Previous}.
  When only the first three components are specified, only the
! @code{for .. in} form of iteration over cursors is available. When either
! @code{Element} or @code{Constant_Reference} is specified, both this form and the
! @code{for .. of} form of iteration over elements are available. @code{Element}
! and @code{Constant_Reference} cannot be specified together.
! If the last two components are specified, reverse
  iterations over the container can be specified (analogous to what can be done
  over predefined containers that support the @code{Reverse_Iterator} interface).
  The following is a typical example of use:
  
  @example
  type List is private with
!     Iterable => (First              => First_Cursor,
!                  Next               => Advance,
!                  Has_Element        => Cursor_Has_Element
!                [,Element            => Get_Element]
!                [,Constant_Reference => Element_Constant_Access]
!                [,Last               => Last_Cursor]
!                [,Previous           => Retreat]);
  @end example
  
  
*************** be a type declared in the container pack
*** 10263,10268 ****
--- 10268,10288 ----
  function Get_Element (Cont : Container; Position : Cursor) return Element_Type;
  @end example
  
+ 
+ @itemize *
+ 
+ @item 
+ The value of @code{Constant_Reference} is a primitive operation of the container
+ type that
+ takes both a container and a cursor and yields an anonymous access-to-constant
+ type designating @code{Element_Type} with null exclusion, which must
+ be a type declared in the container package or visible from it. For example:
+ @end itemize
+ 
+ @example
+ function Element_Constant_Access (Cont : Container; Position : Cursor) return not null access constant Element_Type;
+ @end example
+ 
  This aspect is used in the GNAT-defined formal container packages.
  
  @node Aspect Linker_Section,Aspect Local_Restrictions,Aspect Iterable,Implementation Defined Aspects
*************** consideration, you should minimize the u
*** 10822,10827 ****
--- 10842,10848 ----
  * Attribute Passed_By_Reference:: 
  * Attribute Pool_Address:: 
  * Attribute Range_Length:: 
+ * Attribute Ref:: 
  * Attribute Restriction_Set:: 
  * Attribute Result:: 
  * Attribute Round:: 
*************** the global heap, on the stack, or in a s
*** 11843,11849 ****
  For an object created by @code{new}, @code{Ptr.all'Pool_Address} is
  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
  
--- 11864,11870 ----
  For an object created by @code{new}, @code{Ptr.all'Pool_Address} is
  what is passed to @code{Allocate} and returned from @code{Deallocate}.
  
! @node Attribute Range_Length,Attribute Ref,Attribute Pool_Address,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{1b3}
  @section Attribute Range_Length
  
*************** range).  The result is static for static
*** 11856,11863 ****
  applied to the index subtype of a one dimensional array always gives the
  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
  
  
--- 11877,11893 ----
  applied to the index subtype of a one dimensional array always gives the
  same result as @code{Length} applied to the array itself.
  
! @node Attribute Ref,Attribute Restriction_Set,Attribute Range_Length,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-ref}@anchor{1b4}
! @section Attribute Ref
! 
! 
! @code{System.Address'Ref} (@code{Address} is the only permissible prefix) is
! equivalent to @code{System'To_Address}, provided for compatibility with other
! compilers.
! 
! @node Attribute Restriction_Set,Attribute Result,Attribute Ref,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{1b5}
  @section Attribute Restriction_Set
  
  
*************** Restrictions pragma, they are not analyz
*** 11927,11933 ****
  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
  
  
--- 11957,11963 ----
  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{1b6}
  @section Attribute Result
  
  
*************** For a further discussion of the use of t
*** 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
  
  
--- 11970,11976 ----
  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{1b7}
  @section Attribute Round
  
  
*************** also permits the use of the @code{'Round
*** 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
  
  
--- 11981,11987 ----
  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{1b8}
  @section Attribute Safe_Emax
  
  
*************** the Ada 83 reference manual for an exact
*** 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
  
  
--- 11994,12000 ----
  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{1b9}
  @section Attribute Safe_Large
  
  
*************** the Ada 83 reference manual for an exact
*** 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
  
  
--- 12007,12013 ----
  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{1ba}
  @section Attribute Safe_Small
  
  
*************** the Ada 83 reference manual for an exact
*** 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
  
  
--- 12020,12026 ----
  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{1bb}
  @section Attribute Scalar_Storage_Order
  
  
*************** If the opposite storage order is specifi
*** 12067,12073 ****
  a scalar component of an object of type @code{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
--- 12097,12103 ----
  a scalar component of an object of type @code{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
*************** Note that debuggers may be unable to dis
*** 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
  
  
--- 12183,12189 ----
  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{1bc}
  @section Attribute Simple_Storage_Pool
  
  
*************** as defined in section 13.11.2 of the Ada
*** 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
  
  
--- 12246,12252 ----
  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{1bd}
  @section Attribute Small
  
  
*************** the Ada 83 reference manual for an exact
*** 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
  
  
--- 12262,12268 ----
  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{1be}
  @section Attribute Small_Denominator
  
  
*************** denominator in the representation of @co
*** 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
  
  
--- 12275,12281 ----
  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{1bf}
  @section Attribute Small_Numerator
  
  
*************** numerator in the representation of @code
*** 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
  
  
--- 12288,12294 ----
  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{1c0}
  @section Attribute Storage_Unit
  
  
*************** with coprime factors (i.e. as an irreduc
*** 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
  
  
--- 12298,12304 ----
  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{1c1}
  @section Attribute Stub_Type
  
  
*************** unit @code{System.Partition_Interface}.
*** 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
  
  
--- 12322,12328 ----
  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{1c2}
  @section Attribute System_Allocator_Alignment
  
  
*************** with alignment too large or to enable a
*** 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
  
  
--- 12339,12345 ----
  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{1c3}
  @section Attribute Target_Name
  
  
*************** standard gcc target name without the ter
*** 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
  
  
--- 12352,12358 ----
  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{1c4}
  @section Attribute To_Address
  
  
*************** modular manner (e.g., -1 means the same
*** 12345,12351 ****
  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
  
  
--- 12375,12381 ----
  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{1c5}
  @section Attribute To_Any
  
  
*************** This internal attribute is used for the
*** 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
  
  
--- 12385,12391 ----
  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{1c6}
  @section Attribute Type_Class
  
  
*************** applies to all concurrent types.  This a
*** 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
  
  
--- 12415,12421 ----
  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{1c7}
  @section Attribute Type_Key
  
  
*************** about the type or subtype. This provides
*** 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
  
  
--- 12427,12433 ----
  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{1c8}
  @section Attribute TypeCode
  
  
*************** This internal attribute is used for the
*** 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
  
  
--- 12437,12443 ----
  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{1c9}
  @section Attribute Unconstrained_Array
  
  
*************** still static, and yields the result of a
*** 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
  
  
--- 12451,12457 ----
  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{1ca}
  @section Attribute Universal_Literal_String
  
  
*************** end;
*** 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
  
  
--- 12479,12485 ----
  @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{1cb}
  @section Attribute Unrestricted_Access
  
  
*************** In general this is a risky approach. It
*** 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
  
  
--- 12666,12672 ----
  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{1cc}
  @section Attribute Update
  
  
*************** A := A'Update ((1, 2) => 20, (3, 4) => 3
*** 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
  
  
--- 12747,12753 ----
  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{1cd}
  @section Attribute Valid_Value
  
  
*************** a function that takes a String, and retu
*** 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
  
  
--- 12759,12765 ----
  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{1ce}
  @section Attribute Valid_Scalars
  
  
*************** returns True if and only if @code{T'Valu
*** 12738,12745 ****
  The @code{'Valid_Scalars} attribute is intended to make it easier to check the
  validity of scalar subcomponents of composite objects. The attribute is defined
  for any prefix @code{P} which denotes an object. Prefix @code{P} can be any type
! except for tagged private or @code{Unchecked_Union} types. The value of the
! attribute is of type @code{Boolean}.
  
  @code{P'Valid_Scalars} yields @code{True} if and only if the evaluation of
  @code{C'Valid} yields @code{True} for every scalar subcomponent @code{C} of @code{P}, or if
--- 12768,12775 ----
  The @code{'Valid_Scalars} attribute is intended to make it easier to check the
  validity of scalar subcomponents of composite objects. The attribute is defined
  for any prefix @code{P} which denotes an object. Prefix @code{P} can be any type
! except for @code{Unchecked_Union} types. The value of the attribute is of type
! @code{Boolean}.
  
  @code{P'Valid_Scalars} yields @code{True} if and only if the evaluation of
  @code{C'Valid} yields @code{True} for every scalar subcomponent @code{C} of @code{P}, or if
*************** write a function with a single use of th
*** 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
  
  
--- 12793,12799 ----
  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{1cf}
  @section Attribute VADS_Size
  
  
*************** gives the result that would be obtained
*** 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
  
  
--- 12813,12819 ----
  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{1d0}
  @section Attribute Value_Size
  
  
*************** a value of the given subtype.  It is the
*** 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
  
  
--- 12827,12833 ----
  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{1d1}
  @section Attribute Wchar_T_Size
  
  
*************** primarily for constructing the definitio
*** 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
  
  
--- 12839,12845 ----
  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{1d2}
  @section Attribute Word_Size
  
  
*************** prefix) provides the value @code{System.
*** 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
  
  
--- 12850,12856 ----
  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{1d3}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1d4}@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
*** 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
  
  
--- 12879,12885 ----
  @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{1d5}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1d6}
  @section Partition-Wide Restrictions
  
  
*************** then all compilation units in the partit
*** 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
  
  
--- 12972,12978 ----
  @end menu
  
  @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1d7}
  @subsection Immediate_Reclamation
  
  
*************** deallocation, any storage reserved at ru
*** 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
  
  
--- 12984,12990 ----
  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{1d8}
  @subsection Max_Asynchronous_Select_Nesting
  
  
*************** detected at compile time. Violations of
*** 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
  
  
--- 12996,13002 ----
  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{1d9}
  @subsection Max_Entry_Queue_Length
  
  
*************** compatibility purposes (and a warning wi
*** 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
  
  
--- 13017,13023 ----
  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{1da}
  @subsection Max_Protected_Entries
  
  
*************** bounds of every entry family of a protec
*** 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
  
  
--- 13028,13034 ----
  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{1db}
  @subsection Max_Select_Alternatives
  
  
*************** defined by a discriminant of a subtype w
*** 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
  
  
--- 13037,13043 ----
  [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{1dc}
  @subsection Max_Storage_At_Blocking
  
  
*************** Storage_Size that can be retained by a b
*** 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
  
  
--- 13048,13054 ----
  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{1dd}
  @subsection Max_Task_Entries
  
  
*************** defined by a discriminant of a subtype w
*** 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
  
  
--- 13061,13067 ----
  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{1de}
  @subsection Max_Tasks
  
  
*************** zero are detected for library-level task
*** 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
  
  
--- 13075,13081 ----
  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{1df}
  @subsection No_Abort_Statements
  
  
*************** not detected for local tasks at all.
*** 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
  
  
--- 13085,13091 ----
  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{1e0}
  @subsection No_Access_Parameter_Allocators
  
  
*************** occurrences of an allocator as the actua
*** 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
  
  
--- 13096,13102 ----
  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{1e1}
  @subsection No_Access_Subprograms
  
  
*************** parameter.
*** 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
  
  
--- 13106,13112 ----
  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{1e2}
  @subsection No_Allocators
  
  
*************** declarations of access-to-subprogram typ
*** 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
  
  
--- 13116,13122 ----
  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{1e3}
  @subsection No_Anonymous_Allocators
  
  
*************** occurrences of an allocator.
*** 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
  
  
--- 13126,13132 ----
  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{1e4}
  @subsection No_Asynchronous_Control
  
  
*************** occurrences of an allocator of anonymous
*** 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
  
  
--- 13136,13142 ----
  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{1e5}
  @subsection No_Calendar
  
  
*************** dependences on the predefined package As
*** 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
  
  
--- 13146,13152 ----
  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{1e6}
  @subsection No_Coextensions
  
  
*************** dependences on package Calendar.
*** 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
  
  
--- 13156,13162 ----
  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{1e7}
  @subsection No_Default_Initialization
  
  
*************** is to prohibit all cases of variables de
*** 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
  
  
--- 13173,13179 ----
  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{1e8}
  @subsection No_Delay
  
  
*************** initializer (including the case of OUT s
*** 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
  
  
--- 13183,13189 ----
  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{1e9}
  @subsection No_Dependence
  
  
*************** to support specific constructs of the la
*** 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
  
  
--- 13226,13232 ----
  @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{1ea}
  @subsection No_Direct_Boolean_Operators
  
  
*************** protocol requires the use of short-circu
*** 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
  
  
--- 13239,13245 ----
  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{1eb}
  @subsection No_Dispatch
  
  
*************** composite boolean operations.
*** 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
  
  
--- 13249,13255 ----
  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{1ec}
  @subsection No_Dispatching_Calls
  
  
*************** end Example;
*** 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
  
  
--- 13310,13316 ----
  @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{1ed}
  @subsection No_Dynamic_Attachment
  
  
*************** compatibility purposes (and a warning wi
*** 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
  
  
--- 13329,13335 ----
  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{1ee}
  @subsection No_Dynamic_Priorities
  
  
*************** warnings on obsolescent features are act
*** 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
  
  
--- 13338,13344 ----
  [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{1ef}
  @subsection No_Entry_Calls_In_Elaboration_Code
  
  
*************** restriction, the compiler can assume tha
*** 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
  
  
--- 13350,13356 ----
  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{1f0}
  @subsection No_Enumeration_Maps
  
  
*************** enumeration maps are used (that is Image
*** 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
  
  
--- 13361,13367 ----
  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{1f1}
  @subsection No_Exception_Handlers
  
  
*************** the raise statement generated by the com
*** 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
  
  
--- 13386,13392 ----
  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{1f2}
  @subsection No_Exception_Propagation
  
  
*************** the package GNAT.Current_Exception is no
*** 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
  
  
--- 13403,13409 ----
  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{1f3}
  @subsection No_Exception_Registration
  
  
*************** code is simplified by omitting the other
*** 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
  
  
--- 13417,13423 ----
  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{1f4}
  @subsection No_Exceptions
  
  
*************** raise statements and no exception handle
*** 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
  
  
--- 13428,13434 ----
  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{1f5}
  @subsection No_Finalization
  
  
*************** object or a nested component, either dec
*** 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
  
  
--- 13469,13475 ----
  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{1f6}
  @subsection No_Fixed_Point
  
  
*************** deallocation of a controlled object no l
*** 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
  
  
--- 13479,13485 ----
  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{1f7}
  @subsection No_Floating_Point
  
  
*************** occurrences of fixed point types and ope
*** 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
  
  
--- 13489,13495 ----
  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{1f8}
  @subsection No_Implicit_Conditionals
  
  
*************** normal manner. Constructs generating imp
*** 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
  
  
--- 13505,13511 ----
  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{1f9}
  @subsection No_Implicit_Dynamic_Code
  
  
*************** foreign-language convention; primitive o
*** 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
  
  
--- 13535,13541 ----
  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{1fa}
  @subsection No_Implicit_Heap_Allocations
  
  
*************** types.
*** 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
  
  
--- 13544,13550 ----
  [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{1fb}
  @subsection No_Implicit_Protected_Object_Allocations
  
  
*************** types.
*** 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
  
  
--- 13554,13560 ----
  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{1fc}
  @subsection No_Implicit_Task_Allocations
  
  
*************** protected object.
*** 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
  
  
--- 13563,13569 ----
  [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{1fd}
  @subsection No_Initialize_Scalars
  
  
*************** code, and in particular eliminates dummy
*** 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
  
  
--- 13575,13581 ----
  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{1fe}
  @subsection No_IO
  
  
*************** dependences on any of the library units
*** 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
  
  
--- 13586,13592 ----
  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{1ff}
  @subsection No_Local_Allocators
  
  
*************** occurrences of an allocator in subprogra
*** 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
  
  
--- 13597,13603 ----
  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{200}
  @subsection No_Local_Protected_Objects
  
  
*************** and entry bodies.
*** 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
  
  
--- 13607,13613 ----
  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{201}
  @subsection No_Local_Tagged_Types
  
  
*************** only declared at the library level.
*** 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
  
  
--- 13617,13623 ----
  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{202}
  @subsection No_Local_Timing_Events
  
  
*************** declared at the library level.
*** 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
  
  
--- 13627,13633 ----
  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{203}
  @subsection No_Long_Long_Integers
  
  
*************** implicit base type is Long_Long_Integer,
*** 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
  
  
--- 13639,13645 ----
  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{204}
  @subsection No_Multiple_Elaboration
  
  
*************** possible, including non-Ada main program
*** 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
  
  
--- 13655,13661 ----
  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{205}
  @subsection No_Nested_Finalization
  
  
*************** permitted and will be diagnosed by the b
*** 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
  
  
--- 13664,13670 ----
  [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{206}
  @subsection No_Protected_Type_Allocators
  
  
*************** permitted and will be diagnosed by the b
*** 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
  
  
--- 13674,13680 ----
  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{207}
  @subsection No_Protected_Types
  
  
*************** expressions that attempt to allocate pro
*** 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
  
  
--- 13684,13690 ----
  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{208}
  @subsection No_Recursion
  
  
*************** declarations of protected types or prote
*** 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
  
  
--- 13694,13700 ----
  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{209}
  @subsection No_Reentrancy
  
  
*************** part of its execution.
*** 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
  
  
--- 13704,13710 ----
  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{20a}
  @subsection No_Relative_Delay
  
  
*************** relative statements and prevents express
*** 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
  
  
--- 13715,13721 ----
  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{20b}
  @subsection No_Requeue_Statements
  
  
*************** compatibility purposes (and a warning wi
*** 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
  
  
--- 13733,13739 ----
  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{20c}
  @subsection No_Secondary_Stack
  
  
*************** stack is used to implement functions ret
*** 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
  
  
--- 13746,13752 ----
  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{20d}
  @subsection No_Select_Statements
  
  
*************** secondary stacks for tasks (excluding th
*** 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
  
  
--- 13756,13762 ----
  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{20e}
  @subsection No_Specific_Termination_Handlers
  
  
*************** kind are permitted, that is the keyword
*** 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
  
  
--- 13766,13772 ----
  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{20f}
  @subsection No_Specification_of_Aspect
  
  
*************** specification, attribute definition clau
*** 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
  
  
--- 13777,13783 ----
  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{210}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
*************** library items of the partition has compl
*** 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
  
  
--- 13789,13795 ----
  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{211}
  @subsection No_Standard_Storage_Pools
  
  
*************** have an explicit Storage_Pool attribute
*** 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
  
  
--- 13801,13807 ----
  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{212}
  @subsection No_Stream_Optimizations
  
  
*************** due to their superior performance. When
*** 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
  
  
--- 13814,13820 ----
  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{213}
  @subsection No_Streams
  
  
*************** configuration pragmas to avoid exposing
*** 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
  
  
--- 13841,13847 ----
  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{214}
  @subsection No_Tagged_Type_Registration
  
  
*************** are declared. This restriction may be ne
*** 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
  
  
--- 13856,13862 ----
  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{215}
  @subsection No_Task_Allocators
  
  
*************** the No_Elaboration_Code restriction.
*** 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
  
  
--- 13866,13872 ----
  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{216}
  @subsection No_Task_At_Interrupt_Priority
  
  
*************** a consequence, the tasks are always crea
*** 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
  
  
--- 13878,13884 ----
  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{217}
  @subsection No_Task_Attributes_Package
  
  
*************** compatibility purposes (and a warning wi
*** 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
  
  
--- 13895,13901 ----
  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{218}
  @subsection No_Task_Hierarchy
  
  
*************** warnings on obsolescent features are act
*** 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
  
  
--- 13905,13911 ----
  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{219}
  @subsection No_Task_Termination
  
  
*************** directly on the environment task of the
*** 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
  
  
--- 13914,13920 ----
  [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{21a}
  @subsection No_Tasking
  
  
*************** and cause an error message to be output
*** 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
  
  
--- 13927,13933 ----
  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{21b}
  @subsection No_Terminate_Alternatives
  
  
*************** binder.
*** 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
  
  
--- 13936,13942 ----
  [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{21c}
  @subsection No_Unchecked_Access
  
  
*************** binder.
*** 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
  
  
--- 13946,13952 ----
  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{21d}
  @subsection No_Unchecked_Conversion
  
  
*************** occurrences of the Unchecked_Access attr
*** 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
  
  
--- 13956,13962 ----
  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{21e}
  @subsection No_Unchecked_Deallocation
  
  
*************** dependences on the predefined generic fu
*** 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
  
  
--- 13966,13972 ----
  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{21f}
  @subsection No_Use_Of_Attribute
  
  
*************** dependences on the predefined generic pr
*** 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
  
  
--- 13976,13982 ----
  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{220}
  @subsection No_Use_Of_Entity
  
  
*************** No_Use_Of_Entity => Ada.Text_IO.Put_Line
*** 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
  
  
--- 13996,14002 ----
  @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{221}
  @subsection No_Use_Of_Pragma
  
  
*************** No_Use_Of_Entity => Ada.Text_IO.Put_Line
*** 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
  
  
--- 14006,14012 ----
  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{222}
  @subsection Pure_Barriers
  
  
*************** but still ensures absence of side effect
*** 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
  
  
--- 14057,14063 ----
  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{223}
  @subsection Simple_Barriers
  
  
*************** compatibility purposes (and a warning wi
*** 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
  
  
--- 14076,14082 ----
  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{224}
  @subsection Static_Priorities
  
  
*************** are static, and that there are no depend
*** 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
  
  
--- 14087,14093 ----
  @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{225}
  @subsection Static_Storage_Size
  
  
*************** are static, and that there are no depend
*** 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
  
  
--- 14097,14103 ----
  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{226}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{227}
  @section Program Unit Level Restrictions
  
  
*************** other compilation units in the partition
*** 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
  
  
--- 14128,14134 ----
  @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{228}
  @subsection No_Elaboration_Code
  
  
*************** associated with the unit. This counter i
*** 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
  
  
--- 14184,14190 ----
  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{229}
  @subsection No_Dynamic_Accessibility_Checks
  
  
*************** In all other cases, the level of T is as
*** 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
  
  
--- 14233,14239 ----
  @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{22a}
  @subsection No_Dynamic_Sized_Objects
  
  
*************** access discriminants. It is often a good
*** 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
  
  
--- 14251,14257 ----
  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{22b}
  @subsection No_Entry_Queue
  
  
*************** checked at compile time.  A program exec
*** 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
  
  
--- 14264,14270 ----
  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{22c}
  @subsection No_Implementation_Aspect_Specifications
  
  
*************** GNAT-defined aspects are present.  With
*** 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
  
  
--- 14275,14281 ----
  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{22d}
  @subsection No_Implementation_Attributes
  
  
*************** attributes that can be used are those de
*** 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
  
  
--- 14287,14293 ----
  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{22e}
  @subsection No_Implementation_Identifiers
  
  
*************** implementation-defined identifiers (mark
*** 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
  
  
--- 14298,14304 ----
  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{22f}
  @subsection No_Implementation_Pragmas
  
  
*************** GNAT-defined pragmas are present.  With
*** 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
  
  
--- 14309,14315 ----
  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{230}
  @subsection No_Implementation_Restrictions
  
  
*************** are present.  With this restriction, the
*** 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
  
  
--- 14321,14327 ----
  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{231}
  @subsection No_Implementation_Units
  
  
*************** mention in the context clause of any imp
*** 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
  
  
--- 14332,14338 ----
  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{232}
  @subsection No_Implicit_Aliasing
  
  
*************** to be aliased, and in such cases, it can
*** 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
  
  
--- 14347,14353 ----
  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{233}
  @subsection No_Implicit_Loops
  
  
*************** arrays larger than about 5000 scalar com
*** 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
  
  
--- 14364,14370 ----
  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{234}
  @subsection No_Obsolescent_Features
  
  
*************** is set in the spec of a package, it will
*** 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
  
  
--- 14374,14380 ----
  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{235}
  @subsection No_Wide_Characters
  
  
*************** appear in the program (that is literals
*** 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
  
  
--- 14388,14394 ----
  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{236}
  @subsection Static_Dispatch_Tables
  
  
*************** type @code{Character}).
*** 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
  
  
--- 14398,14404 ----
  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{237}
  @subsection SPARK_05
  
  
*************** gnatprove -P project.gpr --mode=check_al
*** 14391,14397 ****
  @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
  
  
--- 14421,14427 ----
  @end example
  
  @node Implementation Advice,GNAT Implementation Mode the -gnatg switch,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{238}@anchor{gnat_rm/implementation_advice id1}@anchor{239}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}
  @chapter Implementation Advice
  
  
*************** case the text describes what GNAT does a
*** 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
  
  
--- 14519,14525 ----
  @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{23a}
  @section RM 1.1.3(20): Error Detection
  
  
*************** or diagnosed at compile time.
*** 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
  
  
--- 14536,14542 ----
  @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{23b}
  @section RM 1.1.3(31): Child Units
  
  
*************** Followed.
*** 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
  
  
--- 14552,14558 ----
  @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{23c}
  @section RM 1.1.5(12): Bounded Errors
  
  
*************** runtime.
*** 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
  
  
--- 14569,14575 ----
  @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{23d}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{23e}
  @section RM 2.8(16): Pragmas
  
  
*************** that this advice not be followed.  For d
*** 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
  
  
--- 14682,14688 ----
  @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{23f}
  @section RM 2.8(17-19): Pragmas
  
  
*************** replacing @code{library_items}.”
*** 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
  
  
--- 14703,14716 ----
  @end itemize
  @end quotation
  
! See @ref{23e,,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{240}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
*************** there is no such restriction.
*** 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
  
  
--- 14738,14744 ----
  @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{241}
  @section RM 3.5.4(28): Integer Types
  
  
*************** are supported for convenient interface t
*** 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
  
  
--- 14757,14763 ----
  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{242}
  @section RM 3.5.4(29): Integer Types
  
  
*************** Followed.
*** 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
  
  
--- 14773,14779 ----
  @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{243}
  @section RM 3.5.5(8): Enumeration Values
  
  
*************** Followed.
*** 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
  
  
--- 14793,14799 ----
  @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{244}
  @section RM 3.5.7(17): Float Types
  
  
*************** is a software rather than a hardware for
*** 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
  
  
--- 14823,14829 ----
  @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{245}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
*************** Followed.
*** 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
  
  
--- 14841,14847 ----
  @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{246}
  @section RM 9.6(30-31): Duration’Small
  
  
*************** it need not be the same time base as use
*** 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
  
  
--- 14862,14868 ----
  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{247}
  @section RM 10.2.1(12): Consistent Representation
  
  
*************** advice without severely impacting effici
*** 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
  
  
--- 14884,14890 ----
  @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{248}
  @section RM 11.4.1(19): Exception Information
  
  
*************** Pragma @code{Discard_Names}.
*** 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
  
  
--- 14915,14921 ----
  @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{249}
  @section RM 11.5(28): Suppression of Checks
  
  
*************** Followed.
*** 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
  
  
--- 14930,14936 ----
  @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{24a}
  @section RM 13.1 (21-24): Representation Clauses
  
  
*************** Followed.
*** 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
  
  
--- 14982,14988 ----
  @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{24b}
  @section RM 13.2(6-8): Packed Types
  
  
*************** subcomponent of the packed type.
*** 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
  
  
--- 15013,15019 ----
  @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{24c}
  @section RM 13.3(14-19): Address Clauses
  
  
*************** Followed.
*** 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
  
  
--- 15066,15072 ----
  @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{24d}
  @section RM 13.3(29-35): Alignment Clauses
  
  
*************** Followed.
*** 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
  
  
--- 15123,15129 ----
  @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{24e}
  @section RM 13.3(42-43): Size Clauses
  
  
*************** object’s @code{Alignment} (if the @cod
*** 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
  
  
--- 15141,15147 ----
  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{24f}
  @section RM 13.3(50-56): Size Clauses
  
  
*************** Followed.
*** 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
  
  
--- 15192,15198 ----
  @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{250}
  @section RM 13.3(71-73): Component Size Clauses
  
  
*************** Followed.
*** 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
  
  
--- 15226,15232 ----
  @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{251}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
*************** Followed.
*** 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
  
  
--- 15248,15254 ----
  @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{252}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
*************** and all mentioned features are implement
*** 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
  
  
--- 15308,15314 ----
  @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{253}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
*************** Followed.  There are no such components
*** 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
  
  
--- 15328,15334 ----
  @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{254}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
*************** Followed.
*** 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
  
  
--- 15346,15352 ----
  @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{255}
  @section RM 13.7(37): Address as Private
  
  
*************** Followed.
*** 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
  
  
--- 15364,15370 ----
  @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{256}
  @section RM 13.7.1(16): Address Operations
  
  
*************** operation raises @code{Program_Error}, s
*** 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
  
  
--- 15382,15388 ----
  @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{257}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
*************** Followed.
*** 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
  
  
--- 15426,15432 ----
  @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{258}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
*************** Followed.
*** 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
  
  
--- 15477,15483 ----
  @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{259}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
*************** Followed.
*** 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
  
  
--- 15492,15498 ----
  @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{25a}
  @section RM 13.13.2(1.6): Stream Oriented Attributes
  
  
*************** scalar types. This XDR alternative can b
*** 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
  
  
--- 15523,15529 ----
  @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{25b}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
*************** Followed.
*** 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}
  
  
--- 15541,15547 ----
  @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{25c}
  @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
*************** Followed.  GNAT provides no such localiz
*** 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
  
  
--- 15558,15564 ----
  @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{25d}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
*************** Followed.  No implicit pointers or dynam
*** 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
  
  
--- 15573,15579 ----
  @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{25e}
  @section RM A.5.2(46-47): Random Number Generation
  
  
*************** condition here to hold true.
*** 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}
  
  
--- 15602,15608 ----
  @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{25f}
  @section RM A.10.7(23): @code{Get_Immediate}
  
  
*************** this functionality.
*** 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}
  
  
--- 15626,15632 ----
  @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{260}
  @section RM A.18: @code{Containers}
  
  
*************** follow the implementation advice.
*** 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}
  
  
--- 15647,15653 ----
  @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{261}
  @section RM B.1(39-41): Pragma @code{Export}
  
  
*************** Followed.
*** 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}
  
  
--- 15695,15701 ----
  @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{262}
  @section RM B.2(12-13): Package @code{Interfaces}
  
  
*************** Followed.  GNAT provides all the package
*** 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
  
  
--- 15725,15731 ----
  @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{263}
  @section RM B.3(63-71): Interfacing with C
  
  
*************** Followed.
*** 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
  
  
--- 15813,15819 ----
  @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{264}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
*************** Followed.
*** 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
  
  
--- 15854,15860 ----
  @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{265}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
*************** Followed.
*** 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
  
  
--- 15905,15911 ----
  @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{266}
  @section RM C.1(3-5): Access to Machine Operations
  
  
*************** object that is specified as exported.”
*** 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
  
  
--- 15940,15946 ----
  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{267}
  @section RM C.1(10-16): Access to Machine Operations
  
  
*************** Followed on any target supporting such o
*** 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
  
  
--- 16001,16007 ----
  @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{268}
  @section RM C.3(28): Interrupt Support
  
  
*************** of interrupt blocking.
*** 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
  
  
--- 16019,16025 ----
  @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{269}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
*************** Followed.  Compile time warnings are giv
*** 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}
  
  
--- 16045,16051 ----
  @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{26a}
  @section RM C.3.2(25): Package @code{Interrupts}
  
  
*************** Followed.
*** 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
  
  
--- 16063,16069 ----
  @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{26b}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
*************** Followed.  Executable code is generated
*** 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}
  
  
--- 16079,16085 ----
  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{26c}
  @section RM C.5(8): Pragma @code{Discard_Names}
  
  
*************** Followed.
*** 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
  
  
--- 16097,16103 ----
  @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{26d}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
*************** Not followed.  This implementation is no
*** 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
  
  
--- 16118,16124 ----
  @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{26e}
  @section RM D.3(17): Locking Policies
  
  
*************** whose names (@code{Inheritance_Locking}
*** 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
  
  
--- 16135,16141 ----
  @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{26f}
  @section RM D.4(16): Entry Queuing Policies
  
  
*************** Followed.  No such implementation-define
*** 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
  
  
--- 16150,16156 ----
  @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{270}
  @section RM D.6(9-10): Preemptive Abort
  
  
*************** Followed.
*** 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
  
  
--- 16176,16182 ----
  @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{271}
  @section RM D.7(21): Tasking Restrictions
  
  
*************** pragma @code{Profile (Restricted)} for m
*** 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
  
  
--- 16195,16201 ----
  @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{272}
  @section RM D.8(47-49): Monotonic Time
  
  
*************** Followed.
*** 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
  
  
--- 16230,16236 ----
  @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{273}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
*************** should allow them to block until the cor
*** 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
--- 16242,16248 ----
  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{274,,PolyORB} regarding the lifetime
  of this product).
  
  @quotation
*************** write the @code{Item} into the stream.�
*** 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
  
  
--- 16255,16261 ----
  @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{275}
  @section RM F(7): COBOL Support
  
  
*************** Followed.
*** 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
  
  
--- 16275,16281 ----
  @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{276}
  @section RM F.1(2): Decimal Radix Support
  
  
*************** representations.
*** 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
  
  
--- 16291,16297 ----
  @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{277}
  @section RM G: Numerics
  
  
*************** Followed.
*** 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
  
  
--- 16311,16317 ----
  @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{278}
  @section RM G.1.1(56-58): Complex Types
  
  
*************** Followed.
*** 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
  
  
--- 16373,16379 ----
  @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{279}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
*************** Followed.
*** 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
  
  
--- 16395,16401 ----
  @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{27a}
  @section RM G.2.4(19): Accuracy Requirements
  
  
*************** Followed.
*** 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
  
  
--- 16419,16425 ----
  @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{27b}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
*************** Followed.
*** 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
  
  
--- 16437,16443 ----
  @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{27c}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
*************** immediately terminated.”
*** 16422,16428 ****
  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)
  
  
--- 16452,16458 ----
  Not followed.
  
  @node GNAT Implementation Mode the -gnatg switch,Implementation Defined Characteristics,Implementation Advice,Top
! @anchor{gnat_rm/gnat_implementation_mode doc}@anchor{27d}@anchor{gnat_rm/gnat_implementation_mode gnat-implementation-mode}@anchor{b}@anchor{gnat_rm/gnat_implementation_mode gnat-implementation-mode-the-gnatg-switch}@anchor{27e}
  @chapter GNAT Implementation Mode (the @code{-gnatg} switch)
  
  
*************** It implies @code{-gnatw.ge} (extended wa
*** 16439,16445 ****
  @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
  
  
--- 16469,16475 ----
  @end menu
  
  @node Language & Semantic Changes,,,GNAT Implementation Mode the -gnatg switch
! @anchor{gnat_rm/gnat_implementation_mode language-semantic-changes}@anchor{27f}
  @section Language & Semantic Changes
  
  
*************** It implies @code{-gnatw.ge} (extended wa
*** 16454,16460 ****
  @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
  
  
--- 16484,16490 ----
  @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{280}
  @subsection Ada Version and Identifier Rules
  
  
*************** between global symbols in the runtime an
*** 16474,16480 ****
  @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
  
  
--- 16504,16510 ----
  @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{281}
  @subsection Limited Types
  
  
*************** Returning objects of limited types is `p
*** 16492,16498 ****
  @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
  
  
--- 16522,16528 ----
  @end itemize
  
  @node Preelaboration and Categorization,Overflow,Limited Types,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode preelaboration-and-categorization}@anchor{282}
  @subsection Preelaboration and Categorization
  
  
*************** predefined runtime manages its own elabo
*** 16522,16528 ****
  @end itemize
  
  @node Overflow,Miscellaneous,Preelaboration and Categorization,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode overflow}@anchor{282}
  @subsection Overflow
  
  
--- 16552,16558 ----
  @end itemize
  
  @node Overflow,Miscellaneous,Preelaboration and Categorization,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode overflow}@anchor{283}
  @subsection Overflow
  
  
*************** Overflow checks are `suppressed' but the
*** 16530,16536 ****
  `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
  
  
--- 16560,16566 ----
  `Strict' (for assertion purposes).
  
  @node Miscellaneous,ALI Files and Recompilation,Overflow,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode miscellaneous}@anchor{284}
  @subsection Miscellaneous
  
  
*************** rule set rather than the default @code{-
*** 16568,16574 ****
  @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
  
  
--- 16598,16604 ----
  @end itemize
  
  @node ALI Files and Recompilation,,Miscellaneous,Language & Semantic Changes
! @anchor{gnat_rm/gnat_implementation_mode ali-files-and-recompilation}@anchor{285}
  @subsection ALI Files and Recompilation
  
  
*************** to let GNAT compile its own predefined l
*** 16587,16593 ****
  @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
  
  
--- 16617,16623 ----
  @end itemize
  
  @node Implementation Defined Characteristics,Intrinsic Subprograms,GNAT Implementation Mode the -gnatg switch,Top
! @anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{286}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{287}@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
*** 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.
  
  
--- 17258,17264 ----
  “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{274,,PolyORB} regarding the lifetime
  of this product.
  
  
*************** implementation.  See 10.2(28).”
*** 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 *
--- 17280,17286 ----
  @end itemize
  
  Passive partitions are supported on targets where shared memory is
! provided by the operating system. `NB!' See the note in @ref{274,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** When the @code{Pattern} parameter is not
*** 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 *
--- 17907,17913 ----
  according to the syntax of regular expressions as defined in the
  @code{GNAT.Regexp} package.
  
! See @ref{288,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
*************** programs.  See E(5).”
*** 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 *
--- 18666,18672 ----
  @end itemize
  
  The PolyORB product provides means creating and executing
! distributed programs. `NB!' See the note in @ref{274,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** inaccessible.  See E.1(7).”
*** 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.
  
  
--- 18677,18683 ----
  @end itemize
  
  See the PolyORB user guide for full details on such events.
! `NB!' Consider the note in @ref{274,,PolyORB} regarding the lifetime
  of this product.
  
  
*************** shared resources between partitions in c
*** 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 *
--- 18689,18695 ----
  @end itemize
  
  See the PolyORB user guide for full details on these aspects of
! multi-partition execution. `NB!' Consider the note in @ref{274,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** immediately aborted as a result of cance
*** 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 *
--- 18700,18706 ----
  @end itemize
  
  See the PolyORB user guide for details on the effect of abort in
! a distributed application.  `NB!' Consider the note in @ref{274,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** System.RPC.Partition_ID’Last is Intege
*** 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 *
--- 18719,18725 ----
  @end itemize
  
  See the PolyORB user guide for a full description of all
! implementation defined interfaces.  `NB!' See the note in @ref{274,,PolyORB} regarding the lifetime of this product.
  
  
  @itemize *
*************** Information on those subjects is not yet
*** 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
  
  
--- 19007,19013 ----
  Execution is erroneous in that case.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{289}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{28a}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{d}
  @chapter Intrinsic Subprograms
  
  
*************** Ada standard does not require Ada compil
*** 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
  
  
--- 19045,19051 ----
  @end menu
  
  @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{28b}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{28c}
  @section Intrinsic Operators
  
  
*************** It is also possible to specify such oper
*** 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
  
  
--- 19076,19082 ----
  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{28d}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{28e}
  @section Compilation_ISO_Date
  
  
*************** application program should simply call t
*** 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
  
  
--- 19090,19096 ----
  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{28f}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{290}
  @section Compilation_Date
  
  
*************** Same as Compilation_ISO_Date, except the
*** 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
  
  
--- 19100,19106 ----
  MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{291}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{292}
  @section Compilation_Time
  
  
*************** application program should simply call t
*** 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
  
  
--- 19114,19120 ----
  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{293}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{294}
  @section Enclosing_Entity
  
  
*************** application program should simply call t
*** 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
  
  
--- 19128,19134 ----
  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{295}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{296}
  @section Exception_Information
  
  
*************** so an application program should simply
*** 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
  
  
--- 19142,19148 ----
  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{297}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{298}
  @section Exception_Message
  
  
*************** so an application program should simply
*** 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
  
  
--- 19156,19162 ----
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{299}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{29a}
  @section Exception_Name
  
  
*************** so an application program should simply
*** 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
  
  
--- 19170,19176 ----
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms file}@anchor{29b}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{29c}
  @section File
  
  
*************** application program should simply call t
*** 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
  
  
--- 19184,19190 ----
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{29d}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{29e}
  @section Line
  
  
*************** application program should simply call t
*** 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
  
  
--- 19198,19204 ----
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id12}@anchor{29f}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{2a0}
  @section Shifts and Rotates
  
  
*************** corresponding operator for modular type.
*** 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
  
  
--- 19241,19247 ----
  number may change its sign bit to positive.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id13}@anchor{2a1}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{2a2}
  @section Source_Location
  
  
*************** application program should simply call t
*** 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
  
  
--- 19255,19261 ----
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{2a3}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{2a4}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{e}
  @chapter Representation Clauses and Pragmas
  
  
*************** and this section describes the additiona
*** 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
  
  
--- 19301,19307 ----
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{2a5}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{2a6}
  @section Alignment Clauses
  
  
*************** assumption is non-portable, and other co
*** 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
  
  
--- 19431,19437 ----
  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{2a7}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{2a8}
  @section Size Clauses
  
  
*************** if it is known that a Size value can be
*** 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
  
  
--- 19508,19514 ----
  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{2a9}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{2aa}
  @section Storage_Size Clauses
  
  
*************** Of course in practice, there will not be
*** 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
  
  
--- 19581,19587 ----
  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{2ab}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{2ac}
  @section Size of Variant Record Objects
  
  
*************** the maximum size, regardless of the curr
*** 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
  
  
--- 19691,19697 ----
  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{2ad}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{2ae}
  @section Biased Representation
  
  
*************** biased representation can be used for al
*** 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
  
  
--- 19729,19735 ----
  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{2af}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{2b0}
  @section Value_Size and Object_Size Clauses
  
  
*************** definition clause forces biased represen
*** 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
  
  
--- 20045,20051 ----
  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{2b1}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{2b2}
  @section Component_Size Clauses
  
  
*************** and a pragma Pack for the same array typ
*** 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
  
  
--- 20093,20099 ----
  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{2b3}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{2b4}
  @section Bit_Order Clauses
  
  
*************** if desired.  The following section conta
*** 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
  
  
--- 20199,20205 ----
  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{2b5}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{2b6}
  @section Effect of Bit_Order on Byte Ordering
  
  
*************** to set the boolean constant @code{Master
*** 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
  
  
--- 20456,20462 ----
  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{2b7}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{2b8}
  @section Pragma Pack for Arrays
  
  
*************** Here 31-bit packing is achieved as requi
*** 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
  
  
--- 20576,20582 ----
  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{2b9}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{2ba}
  @section Pragma Pack for Records
  
  
*************** array that is longer than 64 bits, so it
*** 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
  
  
--- 20660,20666 ----
  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{2bb}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2bc}
  @section Record Representation Clauses
  
  
*************** end record;
*** 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
  
  
--- 20739,20745 ----
  @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{2bd}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2be}
  @section Handling of Records with Holes
  
  
*************** for Hrec'Size use 64;
*** 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
  
  
--- 20815,20821 ----
  @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{2bf}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2c0}
  @section Enumeration Clauses
  
  
*************** the overhead of converting representatio
*** 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
  
  
--- 20858,20864 ----
  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{2c1}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2c2}
  @section Address Clauses
  
  
*************** then the program compiles without the wa
*** 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
  
  
--- 21197,21203 ----
  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{2c3}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2c4}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
*************** provides the pragma @code{Volatile_Full_
*** 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
  
  
--- 21255,21261 ----
  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{2c5}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2c6}
  @section Effect of Convention on Representation
  
  
*************** when one of these values is read, any no
*** 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
  
  
--- 21333,21339 ----
  @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{2c7}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2c8}
  @section Conventions and Anonymous Access Types
  
  
*************** package ConvComp is
*** 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
  
  
--- 21409,21415 ----
  @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{2c9}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2ca}
  @section Determining the Representations chosen by GNAT
  
  
*************** generated by the compiler into the origi
*** 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
  
  
--- 21561,21567 ----
  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{2cb}@anchor{gnat_rm/standard_library_routines id1}@anchor{2cc}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{f}
  @chapter Standard Library Routines
  
  
*************** For packages in Interfaces and System, a
*** 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
  
  
--- 22388,22394 ----
  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{2cd}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2ce}@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
*** 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
  
  
--- 22440,22446 ----
  @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{2cf}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2d0}
  @section Standard I/O Packages
  
  
*************** flush the common I/O streams and in part
*** 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
  
  
--- 22511,22517 ----
  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{2d1}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2d2}
  @section FORM Strings
  
  
*************** unrecognized keyword appears in a form s
*** 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
  
  
--- 22537,22543 ----
  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{2d3}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2d4}
  @section Direct_IO
  
  
*************** There is no limit on the size of Direct_
*** 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
  
  
--- 22556,22562 ----
  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{2d5}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2d6}
  @section Sequential_IO
  
  
*************** using Stream_IO, and this is the preferr
*** 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
  
  
--- 22603,22609 ----
  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{2d7}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2d8}
  @section Text_IO
  
  
*************** the file.
*** 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
  
  
--- 22686,22692 ----
  @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{2d9}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2da}
  @subsection Stream Pointer Positioning
  
  
*************** between two Ada files, then the differen
*** 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
  
  
--- 22722,22728 ----
  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{2db}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2dc}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** to read data past that end of
*** 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
  
  
--- 22773,22779 ----
  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{2dd}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2de}
  @subsection Get_Immediate
  
  
*************** possible), it is undefined whether the F
*** 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
  
  
--- 22791,22797 ----
  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{2df}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2e0}
  @subsection Treating Text_IO Files as Streams
  
  
*************** skipped and the effect is similar to tha
*** 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
  
  
--- 22807,22813 ----
  @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{2e1}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2e2}
  @subsection Text_IO Extensions
  
  
*************** the string is to be read.
*** 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
  
  
--- 22835,22841 ----
  @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{2e3}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2e4}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
*************** files @code{a-szuzti.ads} and @code{a-sz
*** 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
  
  
--- 22883,22889 ----
  @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{2e5}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2e6}
  @section Wide_Text_IO
  
  
*************** input also causes Constraint_Error to be
*** 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
--- 23130,23141 ----
  @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{2e7}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2e8}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2d8,,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
*** 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
  
  
--- 23154,23160 ----
  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{2e9}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2ea}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 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
  
  
--- 23165,23171 ----
  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{2eb}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2ec}
  @section Wide_Wide_Text_IO
  
  
*************** input also causes Constraint_Error to be
*** 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
--- 23334,23345 ----
  @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{2ed}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2ee}
  @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{2d8,,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
*** 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
  
  
--- 23358,23364 ----
  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{2ef}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2f0}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 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
  
  
--- 23369,23375 ----
  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{2f1}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2f2}
  @section Stream_IO
  
  
*************** manner described for stream attributes.
*** 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
  
  
--- 23391,23397 ----
  @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{2f3}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2f4}
  @section Text Translation
  
  
*************** mode. (corresponds to_O_U16TEXT).
*** 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
  
  
--- 23425,23431 ----
  @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{2f5}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2f6}
  @section Shared Files
  
  
*************** heterogeneous input-output.  Although th
*** 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
  
  
--- 23488,23494 ----
  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{2f7}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2f8}
  @section Filenames encoding
  
  
*************** platform. On the other Operating Systems
*** 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
  
  
--- 23528,23534 ----
  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{2f9}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2fa}
  @section File content encoding
  
  
*************** Unicode 8-bit encoding
*** 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
  
  
--- 23561,23567 ----
  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{2fb}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2fc}
  @section Open Modes
  
  
*************** subsequently requires switching from rea
*** 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
  
  
--- 23664,23670 ----
  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{2fd}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2fe}
  @section Operations on C Streams
  
  
*************** end Interfaces.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
  
  
--- 23824,23830 ----
  @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{2ff}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{300}
  @section Interfacing to C Streams
  
  
*************** imported from a C program, allowing an A
*** 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
  
  
--- 23917,23923 ----
  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{301}@anchor{gnat_rm/the_gnat_library id1}@anchor{302}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{11}
  @chapter The GNAT Library
  
  
*************** of GNAT, and will generate a warning mes
*** 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})
  
  
--- 24103,24109 ----
  @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{303}@anchor{gnat_rm/the_gnat_library id2}@anchor{304}
  @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 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})
  
  
--- 24120,24126 ----
  (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{305}@anchor{gnat_rm/the_gnat_library id3}@anchor{306}
  @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 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})
  
  
--- 24137,24143 ----
  (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{307}@anchor{gnat_rm/the_gnat_library id4}@anchor{308}
  @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 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})
  
  
--- 24154,24160 ----
  (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{309}@anchor{gnat_rm/the_gnat_library id5}@anchor{30a}
  @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 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})
  
  
--- 24171,24177 ----
  (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{30b}@anchor{gnat_rm/the_gnat_library id6}@anchor{30c}
  @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 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})
  
  
--- 24188,24194 ----
  (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{30d}@anchor{gnat_rm/the_gnat_library id7}@anchor{30e}
  @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
*************** This child of @code{Ada.Containers} defi
*** 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})
  
  
--- 24200,24206 ----
  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{30f}@anchor{gnat_rm/the_gnat_library id8}@anchor{310}
  @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
*************** provides a mechanism for obtaining envir
*** 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})
  
  
--- 24213,24219 ----
  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{311}@anchor{gnat_rm/the_gnat_library id9}@anchor{312}
  @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
*************** to further calls to the subprograms in @
*** 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})
  
  
--- 24231,24237 ----
  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{313}@anchor{gnat_rm/the_gnat_library id10}@anchor{314}
  @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
*************** Using a response file allow passing a se
*** 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})
  
  
--- 24251,24257 ----
  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{315}@anchor{gnat_rm/the_gnat_library id11}@anchor{316}
  @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 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})
  
  
--- 24266,24272 ----
  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{317}@anchor{gnat_rm/the_gnat_library id12}@anchor{318}
  @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
*************** exception occurrence (@code{Null_Occurre
*** 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})
  
  
--- 24280,24286 ----
  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{319}@anchor{gnat_rm/the_gnat_library id13}@anchor{31a}
  @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
*************** exceptions (hence the name last chance),
*** 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})
  
  
--- 24294,24300 ----
  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{31b}@anchor{gnat_rm/the_gnat_library id14}@anchor{31c}
  @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
*************** give a traceback array of addresses base
*** 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})
  
  
--- 24307,24313 ----
  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{31d}@anchor{gnat_rm/the_gnat_library id15}@anchor{31e}
  @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 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})
  
  
--- 24322,24328 ----
  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{31f}@anchor{gnat_rm/the_gnat_library id16}@anchor{320}
  @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 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})
  
  
--- 24337,24343 ----
  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{321}@anchor{gnat_rm/the_gnat_library id17}@anchor{322}
  @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
*************** strings, avoiding the necessity for an i
*** 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})
  
  
--- 24354,24360 ----
  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{323}@anchor{gnat_rm/the_gnat_library id18}@anchor{324}
  @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
*************** wide strings, avoiding the necessity for
*** 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})
  
  
--- 24371,24377 ----
  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{325}@anchor{gnat_rm/the_gnat_library id19}@anchor{326}
  @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
*************** wide wide strings, avoiding the necessit
*** 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})
  
  
--- 24388,24394 ----
  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{327}@anchor{gnat_rm/the_gnat_library id20}@anchor{328}
  @section @code{Ada.Task_Initialization} (@code{a-tasini.ads})
  
  
*************** parameterless procedures. Note that such
*** 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})
  
  
--- 24400,24406 ----
  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{329}@anchor{gnat_rm/the_gnat_library id21}@anchor{32a}
  @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 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})
  
  
--- 24415,24421 ----
  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{32b}@anchor{gnat_rm/the_gnat_library id22}@anchor{32c}
  @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
*************** execution (for example a standard input
*** 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})
  
  
--- 24430,24436 ----
  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{32d}@anchor{gnat_rm/the_gnat_library id23}@anchor{32e}
  @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
*************** This package provides subprograms that a
*** 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})
  
  
--- 24443,24449 ----
  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{32f}@anchor{gnat_rm/the_gnat_library id24}@anchor{330}
  @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 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})
  
  
--- 24458,24464 ----
  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{331}@anchor{gnat_rm/the_gnat_library id25}@anchor{332}
  @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
*************** execution (for example a standard input
*** 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})
  
  
--- 24473,24479 ----
  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{333}@anchor{gnat_rm/the_gnat_library id26}@anchor{334}
  @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
*************** This package provides subprograms that a
*** 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})
  
  
--- 24486,24492 ----
  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{335}@anchor{gnat_rm/the_gnat_library id27}@anchor{336}
  @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 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})
  
  
--- 24501,24507 ----
  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{337}@anchor{gnat_rm/the_gnat_library id28}@anchor{338}
  @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
*************** change during execution (for example a s
*** 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})
  
  
--- 24516,24522 ----
  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{339}@anchor{gnat_rm/the_gnat_library id29}@anchor{33a}
  @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
*************** definitions of constants and types commo
*** 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})
  
  
--- 24529,24535 ----
  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{33b}@anchor{gnat_rm/the_gnat_library id30}@anchor{33c}
  @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
*************** binding.
*** 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})
  
  
--- 24540,24546 ----
  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{33d}@anchor{gnat_rm/the_gnat_library id31}@anchor{33e}
  @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
*************** library. The hard binding is provided as
*** 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})
  
  
--- 24554,24560 ----
  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{33f}@anchor{gnat_rm/the_gnat_library id32}@anchor{340}
  @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
*************** This package exposes the various vector
*** 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})
  
  
--- 24566,24572 ----
  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{341}@anchor{gnat_rm/the_gnat_library id33}@anchor{342}
  @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
*************** vector elements and provides a simple wa
*** 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})
  
  
--- 24581,24587 ----
  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{343}@anchor{gnat_rm/the_gnat_library id34}@anchor{344}
  @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
*************** an array wherever the separators appear,
*** 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})
  
  
--- 24594,24600 ----
  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{345}@anchor{gnat_rm/the_gnat_library id35}@anchor{346}
  @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
*************** or more files containing formatted data.
*** 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})
  
  
--- 24609,24615 ----
  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{347}@anchor{gnat_rm/the_gnat_library id36}@anchor{348}
  @section @code{GNAT.Binary_Search} (@code{g-binsea.ads})
  
  
*************** Allow binary search of a sorted array (o
*** 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})
  
  
--- 24621,24627 ----
  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{349}@anchor{gnat_rm/the_gnat_library id37}@anchor{34a}
  @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
*************** These associations can be specified usin
*** 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})
  
  
--- 24634,24640 ----
  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{34b}@anchor{gnat_rm/the_gnat_library id38}@anchor{34c}
  @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
  
  
*************** line switch.
*** 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})
  
  
--- 24645,24651 ----
  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{34d}@anchor{gnat_rm/the_gnat_library id39}@anchor{34e}
  @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
*************** useful directly or as parts of the imple
*** 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})
  
  
--- 24660,24666 ----
  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{34f}@anchor{gnat_rm/the_gnat_library id40}@anchor{350}
  @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
*************** such as mailboxes.
*** 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})
  
  
--- 24673,24679 ----
  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{351}@anchor{gnat_rm/the_gnat_library id41}@anchor{352}
  @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
*************** data items.  Exchange and comparison pro
*** 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})
  
  
--- 24688,24694 ----
  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{353}@anchor{gnat_rm/the_gnat_library id42}@anchor{354}
  @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
*************** access-to-procedure values. This is an o
*** 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})
  
  
--- 24704,24710 ----
  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{355}@anchor{gnat_rm/the_gnat_library id43}@anchor{356}
  @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 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})
  
  
--- 24720,24726 ----
  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{357}@anchor{gnat_rm/the_gnat_library id44}@anchor{358}
  @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
*************** the encoding of the string. The routine
*** 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})
  
  
--- 24736,24742 ----
  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{359}@anchor{gnat_rm/the_gnat_library id45}@anchor{35a}
  @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
*************** General routines for swapping the bytes
*** 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})
  
  
--- 24750,24756 ----
  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{35b}@anchor{gnat_rm/the_gnat_library id46}@anchor{35c}
  @section @code{GNAT.C_Time} (@code{g-c_time.ads})
  
  
*************** Provides the time_t, timeval and timespe
*** 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})
  
  
--- 24762,24768 ----
  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{35d}@anchor{gnat_rm/the_gnat_library id47}@anchor{35e}
  @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
*************** Extends the facilities provided by @code
*** 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})
  
  
--- 24774,24780 ----
  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{35f}@anchor{gnat_rm/the_gnat_library id48}@anchor{360}
  @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
*************** of days of the week, an extended @code{S
*** 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})
  
  
--- 24785,24791 ----
  @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{361}@anchor{gnat_rm/the_gnat_library id49}@anchor{362}
  @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
*************** of this algorithm see
*** 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})
  
  
--- 24802,24808 ----
  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{363}@anchor{gnat_rm/the_gnat_library id50}@anchor{364}
  @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
*************** without the overhead of the full casing
*** 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})
  
  
--- 24817,24823 ----
  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{365}@anchor{gnat_rm/the_gnat_library id51}@anchor{366}
  @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
*************** builds a table whose index is the key an
*** 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})
  
  
--- 24832,24838 ----
  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{367}@anchor{gnat_rm/the_gnat_library id52}@anchor{368}
  @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
*************** Common Gateway Interface (CGI).  It expo
*** 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})
  
  
--- 24847,24853 ----
  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{369}@anchor{gnat_rm/the_gnat_library id53}@anchor{36a}
  @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
*************** This is a package to help debugging CGI
*** 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})
  
  
--- 24859,24865 ----
  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{36b}@anchor{gnat_rm/the_gnat_library id54}@anchor{36c}
  @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
*************** including the ability to scan for named
*** 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})
  
  
--- 24872,24878 ----
  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{36d}@anchor{gnat_rm/the_gnat_library id55}@anchor{36e}
  @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
*************** of the compiler if a consistent tool set
*** 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})
  
  
--- 24890,24896 ----
  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{36f}@anchor{gnat_rm/the_gnat_library id56}@anchor{370}
  @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
*************** of a partition).
*** 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})
  
  
--- 24901,24907 ----
  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{371}@anchor{gnat_rm/the_gnat_library id57}@anchor{372}
  @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
*************** This is particularly useful in simulatin
*** 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})
  
  
--- 24918,24924 ----
  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{373}@anchor{gnat_rm/the_gnat_library id58}@anchor{374}
  @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
*************** problems.
*** 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})
  
  
--- 24935,24941 ----
  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{375}@anchor{gnat_rm/the_gnat_library id59}@anchor{376}
  @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
*************** to and from string images of address val
*** 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})
  
  
--- 24948,24954 ----
  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{377}@anchor{gnat_rm/the_gnat_library id60}@anchor{378}
  @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
*************** Useful in conjunction with Unicode chara
*** 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})
  
  
--- 24972,24978 ----
  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{379}@anchor{gnat_rm/the_gnat_library id61}@anchor{37a}
  @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
*************** preinstantiation for UTF-8. See next ent
*** 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})
  
  
--- 24993,24999 ----
  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{37b}@anchor{gnat_rm/the_gnat_library id62}@anchor{37c}
  @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
*************** the current directory, making new direct
*** 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})
  
  
--- 25006,25012 ----
  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{37d}@anchor{gnat_rm/the_gnat_library id63}@anchor{37e}
  @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
*************** A child unit of GNAT.Directory_Operation
*** 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})
  
  
--- 25018,25024 ----
  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{37f}@anchor{gnat_rm/the_gnat_library id64}@anchor{380}
  @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
*************** dynamic instances of the hash table, whi
*** 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})
  
  
--- 25036,25042 ----
  @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{381}@anchor{gnat_rm/the_gnat_library id65}@anchor{382}
  @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
*************** dynamic instances of the table, while an
*** 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})
  
  
--- 25056,25062 ----
  @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{383}@anchor{gnat_rm/the_gnat_library id66}@anchor{384}
  @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
*************** encoding method. Useful in conjunction w
*** 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})
  
  
--- 25078,25084 ----
  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{385}@anchor{gnat_rm/the_gnat_library id67}@anchor{386}
  @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
*************** Note there is a preinstantiation for UTF
*** 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})
  
  
--- 25099,25105 ----
  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{387}@anchor{gnat_rm/the_gnat_library id68}@anchor{388}
  @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
*************** for specific exceptions, or when any exc
*** 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})
  
  
--- 25112,25118 ----
  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{389}@anchor{gnat_rm/the_gnat_library id69}@anchor{38a}
  @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
*************** Provides an interface allowing to contro
*** 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})
  
  
--- 25126,25132 ----
  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{38b}@anchor{gnat_rm/the_gnat_library id70}@anchor{38c}
  @section @code{GNAT.Exceptions} (@code{g-except.ads})
  
  
*************** predefined exceptions, and for example a
*** 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})
  
  
--- 25147,25153 ----
  @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{38d}@anchor{gnat_rm/the_gnat_library id71}@anchor{38e}
  @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
*************** It is not implemented for cross ports, a
*** 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})
  
  
--- 25163,25169 ----
  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{38f}@anchor{gnat_rm/the_gnat_library id72}@anchor{390}
  @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
*************** ports. It is not implemented for cross p
*** 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})
  
  
--- 25175,25181 ----
  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{391}@anchor{gnat_rm/the_gnat_library id73}@anchor{392}
  @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
*************** library calls may cause this mode to be
*** 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})
  
  
--- 25189,25195 ----
  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{393}@anchor{gnat_rm/the_gnat_library id74}@anchor{394}
  @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
*************** derived from Integer, Float or enumerati
*** 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})
  
  
--- 25204,25210 ----
  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{395}@anchor{gnat_rm/the_gnat_library id75}@anchor{396}
  @section @code{GNAT.Generic_Fast_Math_Functions} (@code{g-gfmafu.ads})
  
  
*************** have a vector implementation that can be
*** 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})
  
  
--- 25222,25228 ----
  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{397}@anchor{gnat_rm/the_gnat_library id76}@anchor{398}
  @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
*************** access-to-procedure values.  The algorit
*** 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})
  
  
--- 25236,25242 ----
  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{399}@anchor{gnat_rm/the_gnat_library id77}@anchor{39a}
  @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
*************** This differs from @code{GNAT.Heap_Sort}
*** 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})
  
  
--- 25252,25258 ----
  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{39b}@anchor{gnat_rm/the_gnat_library id78}@anchor{39c}
  @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 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})
  
  
--- 25266,25272 ----
  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{39d}@anchor{gnat_rm/the_gnat_library id79}@anchor{39e}
  @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
*************** data.  Provides two approaches, one a si
*** 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})
  
  
--- 25279,25285 ----
  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{39f}@anchor{gnat_rm/the_gnat_library id80}@anchor{3a0}
  @section @code{GNAT.IO} (@code{g-io.ads})
  
  
*************** Standard_Input, and writing characters,
*** 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})
  
  
--- 25295,25301 ----
  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{3a1}@anchor{gnat_rm/the_gnat_library id81}@anchor{3a2}
  @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
*************** Provides some auxiliary functions for us
*** 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})
  
  
--- 25309,25315 ----
  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{3a3}@anchor{gnat_rm/the_gnat_library id82}@anchor{3a4}
  @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
*************** Provides a general interface for using f
*** 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})
  
  
--- 25323,25329 ----
  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{3a5}@anchor{gnat_rm/the_gnat_library id83}@anchor{3a6}
  @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
*************** The original implementation of @code{Ada
*** 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})
  
  
--- 25335,25341 ----
  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{3a7}@anchor{gnat_rm/the_gnat_library id84}@anchor{3a8}
  @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
*************** The original implementation of @code{Ada
*** 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})
  
  
--- 25347,25353 ----
  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{3a9}@anchor{gnat_rm/the_gnat_library id85}@anchor{3aa}
  @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
*************** the HMAC-MD5 message authentication func
*** 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})
  
  
--- 25360,25366 ----
  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{3ab}@anchor{gnat_rm/the_gnat_library id86}@anchor{3ac}
  @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
*************** standard output or standard error files.
*** 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})
  
  
--- 25373,25379 ----
  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{3ad}@anchor{gnat_rm/the_gnat_library id87}@anchor{3ae}
  @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
*************** various logging purposes, including dupl
*** 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})
  
  
--- 25387,25393 ----
  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{3af}@anchor{gnat_rm/the_gnat_library id88}@anchor{3b0}
  @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
*************** including a portable spawn procedure, an
*** 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})
  
  
--- 25403,25409 ----
  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{3b1}@anchor{gnat_rm/the_gnat_library id89}@anchor{3b2}
  @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
*************** hashcode are in the same order. These ha
*** 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})
  
  
--- 25421,25427 ----
  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{3b3}@anchor{gnat_rm/the_gnat_library id90}@anchor{3b4}
  @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
*************** however NOT suitable for situations requ
*** 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})
  
  
--- 25435,25441 ----
  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{288}@anchor{gnat_rm/the_gnat_library id91}@anchor{3b5}
  @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
*************** simplest of the three pattern matching p
*** 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})
  
  
--- 25451,25457 ----
  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{3b6}@anchor{gnat_rm/the_gnat_library id92}@anchor{3b7}
  @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
*************** registry API, but at a lower level of ab
*** 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})
  
  
--- 25465,25471 ----
  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{3b8}@anchor{gnat_rm/the_gnat_library id93}@anchor{3b9}
  @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
*************** from the original V7 style regular expre
*** 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})
  
  
--- 25480,25486 ----
  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{3ba}@anchor{gnat_rm/the_gnat_library id94}@anchor{3bb}
  @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
*************** full content to be processed is not load
*** 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})
  
  
--- 25494,25500 ----
  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{3bc}@anchor{gnat_rm/the_gnat_library id95}@anchor{3bd}
  @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
*************** Provides the capability to query the hig
*** 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})
  
  
--- 25506,25512 ----
  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{3be}@anchor{gnat_rm/the_gnat_library id96}@anchor{3bf}
  @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
*************** secondary stack.
*** 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})
  
  
--- 25517,25523 ----
  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{3c0}@anchor{gnat_rm/the_gnat_library id97}@anchor{3c1}
  @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
*************** Provides a simple interface to send and
*** 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})
  
  
--- 25529,25535 ----
  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{3c2}@anchor{gnat_rm/the_gnat_library id98}@anchor{3c3}
  @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
*************** and RFC 3174, and the HMAC-SHA1 message
*** 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})
  
  
--- 25542,25548 ----
  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{3c4}@anchor{gnat_rm/the_gnat_library id99}@anchor{3c5}
  @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
*************** and the HMAC-SHA224 message authenticati
*** 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})
  
  
--- 25555,25561 ----
  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{3c6}@anchor{gnat_rm/the_gnat_library id100}@anchor{3c7}
  @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
*************** and the HMAC-SHA256 message authenticati
*** 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})
  
  
--- 25568,25574 ----
  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{3c8}@anchor{gnat_rm/the_gnat_library id101}@anchor{3c9}
  @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
*************** and the HMAC-SHA384 message authenticati
*** 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})
  
  
--- 25581,25587 ----
  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{3ca}@anchor{gnat_rm/the_gnat_library id102}@anchor{3cb}
  @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
*************** and the HMAC-SHA512 message authenticati
*** 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})
  
  
--- 25594,25600 ----
  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{3cc}@anchor{gnat_rm/the_gnat_library id103}@anchor{3cd}
  @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
*************** Provides the ability to manipulate the b
*** 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})
  
  
--- 25606,25612 ----
  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{3ce}@anchor{gnat_rm/the_gnat_library id104}@anchor{3cf}
  @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
*************** on all native GNAT ports and on VxWorks
*** 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})
  
  
--- 25621,25627 ----
  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{3d0}@anchor{gnat_rm/the_gnat_library id105}@anchor{3d1}
  @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
*************** subprograms yielding the date and time o
*** 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})
  
  
--- 25635,25641 ----
  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{3d2}@anchor{gnat_rm/the_gnat_library id106}@anchor{3d3}
  @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
*************** Provides a function for determining whet
*** 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})
  
  
--- 25647,25653 ----
  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{3d4}@anchor{gnat_rm/the_gnat_library id107}@anchor{3d5}
  @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
*************** determining whether one string is a plau
*** 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})
  
  
--- 25660,25666 ----
  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{3d6}@anchor{gnat_rm/the_gnat_library id108}@anchor{3d7}
  @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
*************** the SNOBOL4 dynamic pattern construction
*** 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})
  
  
--- 25676,25682 ----
  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{3d8}@anchor{gnat_rm/the_gnat_library id109}@anchor{3d9}
  @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
*************** useful for constructing arbitrary mappin
*** 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})
  
  
--- 25691,25697 ----
  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{3da}@anchor{gnat_rm/the_gnat_library id110}@anchor{3db}
  @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
*************** for type @code{Standard.Boolean}, giving
*** 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})
  
  
--- 25706,25712 ----
  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{3dc}@anchor{gnat_rm/the_gnat_library id111}@anchor{3dd}
  @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
*************** for type @code{Standard.Integer}, giving
*** 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})
  
  
--- 25723,25729 ----
  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{3de}@anchor{gnat_rm/the_gnat_library id112}@anchor{3df}
  @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
*************** a variable length string type, giving an
*** 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})
  
  
--- 25740,25746 ----
  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{3e0}@anchor{gnat_rm/the_gnat_library id113}@anchor{3e1}
  @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
*************** targets.  It exposes vector component ty
*** 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})
  
  
--- 25752,25758 ----
  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{3e2}@anchor{gnat_rm/the_gnat_library id114}@anchor{3e3}
  @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
*************** introduction to the binding contents and
*** 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})
  
  
--- 25761,25767 ----
  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{3e4}@anchor{gnat_rm/the_gnat_library id115}@anchor{3e5}
  @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
*************** Provides a generic hash function working
*** 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})
  
  
--- 25773,25779 ----
  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{3e6}@anchor{gnat_rm/the_gnat_library id116}@anchor{3e7}
  @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
*************** Common String access types and related s
*** 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})
  
  
--- 25783,25789 ----
  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{3e8}@anchor{gnat_rm/the_gnat_library id117}@anchor{3e9}
  @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
*************** to the resulting slices. This package is
*** 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})
  
  
--- 25797,25803 ----
  @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{3ea}@anchor{gnat_rm/the_gnat_library id118}@anchor{3eb}
  @section @code{GNAT.Table} (@code{g-table.ads})
  
  
*************** while an instantiation of @code{GNAT.Dyn
*** 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})
  
  
--- 25817,25823 ----
  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{3ec}@anchor{gnat_rm/the_gnat_library id119}@anchor{3ed}
  @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
*************** single global task lock.  Appropriate fo
*** 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})
  
  
--- 25834,25840 ----
  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{3ee}@anchor{gnat_rm/the_gnat_library id120}@anchor{3ef}
  @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
*************** represents the current date and time in
*** 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})
  
  
--- 25849,25855 ----
  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{3f0}@anchor{gnat_rm/the_gnat_library id121}@anchor{3f1}
  @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
*************** further details if your program has thre
*** 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})
  
  
--- 25866,25872 ----
  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{3f2}@anchor{gnat_rm/the_gnat_library id122}@anchor{3f3}
  @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
*************** Provides a facility for obtaining non-sy
*** 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})
  
  
--- 25878,25884 ----
  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{3f4}@anchor{gnat_rm/the_gnat_library id123}@anchor{3f5}
  @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
*************** in various debugging situations.
*** 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})
  
  
--- 25887,25893 ----
  @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{3f6}@anchor{gnat_rm/the_gnat_library id124}@anchor{3f7}
  @section @code{GNAT.UTF_32} (@code{g-utf_32.ads})
  
  
*************** lower case to upper case fold routine co
*** 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})
  
  
--- 25906,25912 ----
  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{3f8}@anchor{gnat_rm/the_gnat_library id125}@anchor{3f9}
  @section @code{GNAT.UTF_32_Spelling_Checker} (@code{g-u3spch.ads})
  
  
*************** near misspelling of another wide wide st
*** 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})
  
  
--- 25919,25925 ----
  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{3fa}@anchor{gnat_rm/the_gnat_library id126}@anchor{3fb}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
*************** Provides a function for determining whet
*** 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})
  
  
--- 25931,25937 ----
  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{3fc}@anchor{gnat_rm/the_gnat_library id127}@anchor{3fd}
  @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 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})
  
  
--- 25945,25951 ----
  @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{3fe}@anchor{gnat_rm/the_gnat_library id128}@anchor{3ff}
  @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
*************** Provides a function for determining whet
*** 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})
  
  
--- 25957,25963 ----
  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{400}@anchor{gnat_rm/the_gnat_library id129}@anchor{401}
  @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 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})
  
  
--- 25971,25977 ----
  @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{402}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{403}
  @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
*************** for use with either manually or automati
*** 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})
  
  
--- 25982,25988 ----
  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{404}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{405}
  @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
*************** This package is a binding for the most c
*** 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})
  
  
--- 25995,26001 ----
  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{406}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{407}
  @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
*************** from a packed decimal format compatible
*** 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})
  
  
--- 26010,26016 ----
  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{408}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{409}
  @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
*************** mainframes.
*** 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})
  
  
--- 26024,26030 ----
  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{40a}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{40b}
  @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
*************** function codes. A particular use of this
*** 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})
  
  
--- 26047,26053 ----
  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{40c}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{40d}
  @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
*************** function that gives an (implementation d
*** 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})
  
  
--- 26063,26069 ----
  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{40e}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{40f}
  @section @code{System.Assertions} (@code{s-assert.ads})
  
  
*************** by an run-time assertion failure, as wel
*** 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})
  
  
--- 26079,26085 ----
  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{410}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{411}
  @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
*************** on most targets, including all Alpha, AA
*** 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})
  
  
--- 26093,26099 ----
  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{412}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{413}
  @section @code{System.Memory} (@code{s-memory.ads})
  
  
*************** calls to this unit may be made for low l
*** 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})
  
  
--- 26111,26117 ----
  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{414}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{415}
  @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 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})
  
  
--- 26124,26130 ----
  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{416}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{417}
  @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 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})
  
  
--- 26137,26143 ----
  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{418}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{419}
  @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
*************** technically an implementation-defined ad
*** 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})
  
  
--- 26147,26157 ----
  
  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{274,,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{41a}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{41b}
  @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
*************** declared. It uses malloc/free to allocat
*** 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})
  
  
--- 26168,26174 ----
  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{41c}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{41d}
  @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
*************** a list of allocated blocks, so that all
*** 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})
  
  
--- 26185,26191 ----
  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{41e}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{41f}
  @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
*************** compiler determined information on which
*** 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})
  
  
--- 26201,26207 ----
  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{420}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{421}
  @section @code{System.Rident} (@code{s-rident.ads})
  
  
*************** since the necessary instantiation is inc
*** 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})
  
  
--- 26217,26223 ----
  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{422}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{423}
  @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
*************** stream attributes are applied to string
*** 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})
  
  
--- 26233,26239 ----
  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{424}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{425}
  @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
*************** also contains some related definitions f
*** 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})
  
  
--- 26246,26252 ----
  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{426}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{427}
  @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
*************** encoding method.  It uses definitions in
*** 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})
  
  
--- 26267,26273 ----
  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{428}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{429}
  @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
*************** in ordinary strings.  These definitions
*** 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
  
  
--- 26279,26285 ----
  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{42a}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{42b}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{12}
  @chapter Interfacing to Other Languages
  
  
*************** provided.
*** 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
  
  
--- 26297,26303 ----
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{42c}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{42d}
  @section Interfacing to C
  
  
*************** of the length corresponding to the @code
*** 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++
  
  
--- 26437,26443 ----
  @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{42e}
  @section Interfacing to C++
  
  
*************** builds an opaque @code{Type_Info_Ptr} to
*** 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
  
  
--- 26654,26660 ----
  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{42f}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{430}
  @section Interfacing to COBOL
  
  
*************** Interfacing to COBOL is achieved as desc
*** 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
  
  
--- 26662,26668 ----
  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{431}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{432}
  @section Interfacing to Fortran
  
  
*************** multi-dimensional array causes the array
*** 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
  
  
--- 26672,26678 ----
  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{433}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{434}
  @section Interfacing to non-GNAT Ada code
  
  
*************** values or simple record types without va
*** 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
  
  
--- 26696,26702 ----
  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{435}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{436}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{13}
  @chapter Specialized Needs Annexes
  
  
*************** The Real-Time Systems Annex is fully imp
*** 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)'
  
--- 26717,26723 ----
  
  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{274,,PolyORB} regarding the lifetime of this product.
  
  @item `Information Systems (Annex F)'
  
*************** in Ada 2005) is fully implemented.
*** 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
  
  
--- 26734,26740 ----
  @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{437}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{438}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{14}
  @chapter Implementation of Specific Ada Features
  
  
*************** facilities.
*** 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
  
  
--- 26753,26759 ----
  @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{439}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{184}
  @section Machine Code Insertions
  
  
*************** according to normal visibility rules. In
*** 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
  
  
--- 26921,26927 ----
  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{43a}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{43b}
  @section GNAT Implementation of Tasking
  
  
*************** to compliance with the Real-Time Systems
*** 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
  
  
--- 26937,26943 ----
  @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{43c}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{43d}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
*************** support this functionality when the pare
*** 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
  
  
--- 27006,27012 ----
  @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{43e}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{43f}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
*************** placed at the end.
*** 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
  
  
--- 27057,27063 ----
  @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{440}
  @subsection Support for Locking Policies
  
  
*************** then ceiling locking is used.
*** 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
  
  
--- 27091,27097 ----
  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{441}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{442}
  @section GNAT Implementation of Shared Passive Packages
  
  
*************** This is used to provide the required loc
*** 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
  
  
--- 27189,27195 ----
  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{443}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{444}
  @section Code Generation for Array Aggregates
  
  
*************** component values and static subtypes als
*** 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
  
  
--- 27220,27226 ----
  @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{445}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{446}
  @subsection Static constant aggregates with static bounds
  
  
*************** Zero2: constant two_dim := (others => (o
*** 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
  
  
--- 27267,27273 ----
  @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{447}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{448}
  @subsection Constant aggregates with unconstrained nominal types
  
  
*************** Cr_Unc : constant One_Unc := (12,24,36);
*** 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
  
  
--- 27282,27288 ----
  @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{449}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{44a}
  @subsection Aggregates with static bounds
  
  
*************** end loop;
*** 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
  
  
--- 27310,27316 ----
  @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{44b}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{44c}
  @subsection Aggregates with nonstatic bounds
  
  
*************** have to be applied to sub-arrays individ
*** 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
  
  
--- 27321,27327 ----
  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{44d}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{44e}
  @subsection Aggregates in assignment statements
  
  
*************** a temporary (created either by the front
*** 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
  
  
--- 27363,27369 ----
  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{44f}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{450}
  @section The Size of Discriminated Records with Default Discriminants
  
  
*************** say) must be consistent, so it is impera
*** 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
  
  
--- 27443,27449 ----
  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{451}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{452}
  @section Image Values For Nonscalar Types
  
  
*************** control of image text is required for so
*** 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
  
  
--- 27463,27469 ----
  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{453}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{454}
  @section Strict Conformance to the Ada Reference Manual
  
  
*************** behavior (although at the cost of a sign
*** 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
  
  
--- 27490,27496 ----
  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{455}@anchor{gnat_rm/implementation_of_ada_2022_features id1}@anchor{456}@anchor{gnat_rm/implementation_of_ada_2022_features implementation-of-ada-2022-features}@anchor{15}
  @chapter Implementation of Ada 2022 Features
  
  
*************** RM references: 3.02.04 (31/5) 4.06 (51.1
*** 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
  
  
--- 30937,30943 ----
  @end itemize
  
  @node GNAT language extensions,Security Hardening Features,Implementation of Ada 2022 Features,Top
! @anchor{gnat_rm/gnat_language_extensions doc}@anchor{457}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{458}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{459}
  @chapter GNAT language extensions
  
  
*************** These features might be removed or heavi
*** 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
  
  
--- 30969,30975 ----
  @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{45a}
  @section How to activate the extended GNAT Ada superset
  
  
*************** for use in playground experiments.
*** 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
  
  
--- 31010,31016 ----
  @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{45b}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{6c}
  @section Curated Extensions
  
  
*************** Features activated via @code{-gnatX} or
*** 31003,31009 ****
  @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
  
  
--- 31033,31039 ----
  @end menu
  
  @node Local Declarations Without Block,Deep delta Aggregates,,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{45c}
  @subsection Local Declarations Without Block
  
  
*************** And as such the second `@w{`}A`@w{`} dec
*** 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
  
  
--- 31126,31132 ----
  @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{45d}
  @subsection Deep delta Aggregates
  
  
*************** The syntax of delta aggregates in the ex
*** 31118,31124 ****
  @end menu
  
  @node Syntax,Legality Rules,,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions syntax}@anchor{45d}
  @subsubsection Syntax
  
  
--- 31148,31154 ----
  @end menu
  
  @node Syntax,Legality Rules,,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions syntax}@anchor{45e}
  @subsubsection Syntax
  
  
*************** array_subcomponent_choice ::=
*** 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
  
  
--- 31194,31200 ----
  @end example
  
  @node Legality Rules,Dynamic Semantics,Syntax,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions legality-rules}@anchor{45f}
  @subsubsection Legality Rules
  
  
*************** the object denoted by the base_expressio
*** 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
  
  
--- 31231,31237 ----
  @end enumerate
  
  @node Dynamic Semantics,Examples,Legality Rules,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions dynamic-semantics}@anchor{460}
  @subsubsection Dynamic Semantics
  
  
*************** and assigned to the corresponding subcom
*** 31258,31264 ****
  @end itemize
  
  @node Examples,,Dynamic Semantics,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions examples}@anchor{460}
  @subsubsection Examples
  
  
--- 31288,31294 ----
  @end itemize
  
  @node Examples,,Dynamic Semantics,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions examples}@anchor{461}
  @subsubsection Examples
  
  
*************** end;
*** 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
  
  
--- 31316,31322 ----
  @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{462}
  @subsection Fixed lower bounds for array types and subtypes
  
  
*************** lower bound of unconstrained array forma
*** 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
  
  
--- 31367,31373 ----
  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{463}
  @subsection Prefixed-view notation for calls to primitive subprograms of untagged types
  
  
*************** pragma Assert (V.Nth_Element(1) = 42);
*** 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
  
  
--- 31417,31423 ----
  @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{464}
  @subsection Expression defaults for generic formal functions
  
  
*************** If the default is used (i.e. there is no
*** 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
  
  
--- 31448,31454 ----
  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{465}
  @subsection String interpolation
  
  
*************** a double quote is " and an open brace is
*** 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
  
  
--- 31615,31621 ----
  @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{466}
  @subsection Constrained attribute for generic objects
  
  
*************** The @code{Constrained} attribute is perm
*** 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
  
  
--- 31623,31629 ----
  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{467}
  @subsection @code{Static} aspect on intrinsic functions
  
  
*************** and the compiler will evaluate some of t
*** 31602,31608 ****
  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
  
  
--- 31632,31638 ----
  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{468}
  @subsection First Controlling Parameter
  
  
*************** The result of a function is never a cont
*** 31702,31708 ****
  @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
  
  
--- 31732,31738 ----
  @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{469}
  @subsection @code{Unsigned_Base_Range} aspect
  
  
*************** It ensures that arithmetic operations of
*** 31728,31734 ****
  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
  
  
--- 31758,31764 ----
  out using 64 bits.
  
  @node Generalized Finalization,,Unsigned_Base_Range aspect,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions generalized-finalization}@anchor{46a}
  @subsection Generalized Finalization
  
  
*************** in this case.
*** 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
--- 31830,31836 ----
  
  @item 
  The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{46b,,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;
*** 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
  
  
--- 31891,31897 ----
  @end menu
  
  @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{46c}
  @subsubsection Finalizable tagged types
  
  
*************** dispatching whenever it makes sense, i.e
*** 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
  
  
--- 31901,31907 ----
  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{46d}
  @subsubsection Composite types
  
  
*************** in order to call the primitives of their
*** 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
  
  
--- 31911,31917 ----
  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{46e}
  @subsubsection Interoperability with controlled types
  
  
*************** versa, but the stricter dynamic semantic
*** 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
  
  
--- 31921,31927 ----
  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{46f}
  @section Experimental Language Extensions
  
  
*************** Features activated via @code{-gnatX0} or
*** 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
  
  
--- 31947,31953 ----
  @end menu
  
  @node Conditional when constructs,Implicit With,,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{470}
  @subsection Conditional when constructs
  
  
*************** end;
*** 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
  
  
--- 32016,32022 ----
  @end example
  
  @node Implicit With,Storage Model,Conditional when constructs,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions implicit-with}@anchor{471}
  @subsection Implicit With
  
  
*************** end;
*** 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
  
  
--- 32033,32039 ----
  @end example
  
  @node Storage Model,Attribute Super,Implicit With,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{472}
  @subsection Storage Model
  
  
*************** memory models, in particular to support
*** 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
  
  
--- 32050,32056 ----
  @end menu
  
  @node Aspect Storage_Model_Type,Aspect Designated_Storage_Model,,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-storage-model-type}@anchor{473}
  @subsubsection Aspect Storage_Model_Type
  
  
*************** end CUDA_Memory;
*** 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
  
  
--- 32184,32190 ----
  @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{474}
  @subsubsection Aspect Designated_Storage_Model
  
  
*************** begin
*** 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
  
  
--- 32262,32268 ----
  @end example
  
  @node Legacy Storage Pools,,Aspect Designated_Storage_Model,Storage Model
! @anchor{gnat_rm/gnat_language_extensions legacy-storage-pools}@anchor{475}
  @subsubsection Legacy Storage Pools
  
  
*************** type Acc is access Integer_Array with St
*** 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
  
  
--- 32313,32319 ----
  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{476}
  @subsection Attribute Super
  
  
*************** end;
*** 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
  
  
--- 32348,32354 ----
  @end example
  
  @node Simpler Accessibility Model,Case pattern matching,Attribute Super,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{477}
  @subsection Simpler Accessibility Model
  
  
*************** All of the refined rules are compatible
*** 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
  
  
--- 32379,32385 ----
  @end menu
  
  @node Stand-alone objects,Subprogram parameters,,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions stand-alone-objects}@anchor{478}
  @subsubsection Stand-alone objects
  
  
*************** of the RM 4.6 rule “The accessibility
*** 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
  
  
--- 32427,32433 ----
  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{479}
  @subsubsection Subprogram parameters
  
  
*************** end;
*** 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
  
  
--- 32520,32526 ----
  @end example
  
  @node Function results,,Subprogram parameters,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions function-results}@anchor{47a}
  @subsubsection Function results
  
  
*************** end;
*** 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
  
  
--- 32648,32654 ----
  @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{47b}
  @subsection Case pattern matching
  
  
*************** message generated in such cases is usual
*** 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
  
  
--- 32778,32784 ----
  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{47c}
  @subsection Mutably Tagged Types with Size’Class Aspect
  
  
*************** parameter exists (that is, before leavin
*** 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
  
  
--- 32949,32955 ----
  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{47d}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{46b}
  @subsection No_Raise aspect
  
  
*************** be raised during the execution of the su
*** 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
  
  
--- 32959,32965 ----
  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{47e}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
*************** package Int_Array_Operations is new Arra
*** 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
  
  
--- 33036,33042 ----
  @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{47f}
  @subsection External_Initialization Aspect
  
  
*************** The maximum size of loaded files is limi
*** 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
  
  
--- 33077,33083 ----
  @end cartouche
  
  @node Finally construct,Continue statement,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{480}
  @subsection Finally construct
  
  
*************** configuration that does not exist in sta
*** 33067,33073 ****
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{480}
  @subsubsection Syntax
  
  
--- 33097,33103 ----
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{481}
  @subsubsection Syntax
  
  
*************** handled_sequence_of_statements ::=
*** 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
  
  
--- 33112,33118 ----
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{482}
  @subsubsection Legality Rules
  
  
*************** to be transferred outside the finally pa
*** 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
  
  
--- 33122,33128 ----
  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{483}
  @subsubsection Dynamic Semantics
  
  
*************** execution, that is the finally block mus
*** 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
  
  
--- 33137,33143 ----
  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{484}
  @subsection Continue statement
  
  
*************** Note that @code{continue} is a keyword b
*** 33125,33131 ****
  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
  
  
--- 33155,33161 ----
  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{485}
  @subsection Destructors
  
  
*************** When an object of type @code{T2} is fina
*** 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
  
  
--- 33210,33216 ----
  @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{486}
  @subsection Structural Generic Instantiation
  
  
*************** where a name is accepted by the language
*** 33206,33212 ****
  @end menu
  
  @node Syntax<3>,Legality Rules<3>,,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id7}@anchor{486}
  @subsubsection Syntax
  
  
--- 33236,33242 ----
  @end menu
  
  @node Syntax<3>,Legality Rules<3>,,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id7}@anchor{487}
  @subsubsection Syntax
  
  
*************** structural_generic_instance_name ::= nam
*** 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
  
  
--- 33248,33254 ----
  @end example
  
  @node Legality Rules<3>,Static Semantics,Syntax<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id8}@anchor{488}
  @subsubsection Legality Rules
  
  
*************** generic subprogram may be present in a s
*** 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
  
  
--- 33274,33280 ----
  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{489}
  @subsubsection Static Semantics
  
  
*************** end;
*** 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
  
  
--- 33418,33424 ----
  @end example
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{48a}@anchor{gnat_rm/security_hardening_features id1}@anchor{48b}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{16}
  @chapter Security Hardening Features
  
  
*************** These features are supported only by the
*** 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
  
  
--- 33442,33448 ----
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{48c}
  @section Register Scrubbing
  
  
*************** programming languages, see @cite{Using t
*** 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
  
  
--- 33478,33484 ----
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{48d}
  @section Stack Scrubbing
  
  
*************** Bar_Callable_Ptr.
*** 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
  
  
--- 33622,33628 ----
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{48e}
  @section Hardened Conditionals
  
  
*************** be used with other programming languages
*** 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
  
  
--- 33712,33718 ----
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{48f}
  @section Hardened Booleans
  
  
*************** and more details on that attribute, see
*** 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
  
  
--- 33773,33779 ----
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{490}
  @section Control Flow Redundancy
  
  
*************** see @cite{Using the GNU Compiler Collect
*** 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
  
  
--- 33941,33947 ----
  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{491}@anchor{gnat_rm/obsolescent_features id1}@anchor{492}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{17}
  @chapter Obsolescent Features
  
  
*************** historical compatibility purposes.
*** 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
  
  
--- 33961,33967 ----
  @end menu
  
  @node PolyORB,pragma No_Run_Time,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{493}@anchor{gnat_rm/obsolescent_features polyorb}@anchor{274}
  @section PolyORB
  
  
*************** release 28. After this release, there wi
*** 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
  
  
--- 33970,33976 ----
  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{494}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{495}
  @section pragma No_Run_Time
  
  
*************** preferred usage is to use an appropriate
*** 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
  
  
--- 33983,33989 ----
  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{496}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{497}
  @section pragma Ravenscar
  
  
*************** The pragma @code{Ravenscar} has exactly
*** 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
  
  
--- 33992,33998 ----
  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{498}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{499}
  @section pragma Restricted_Run_Time
  
  
*************** preferred since the Ada 2005 pragma @cod
*** 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
  
  
--- 34002,34008 ----
  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{49a}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{49b}
  @section pragma Task_Info
  
  
*************** in the spec of package System.Task_Info
*** 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})
  
  
--- 34028,34034 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{49c}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{49d}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
*************** to support the @code{Task_Info} pragma.
*** 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
  
  
--- 34038,34044 ----
  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{49e}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{18}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{49f}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 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
  
  
--- 34060,34066 ----
  @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{4a0}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{4a1}
  @section Writing Portable Fixed-Point Declarations
  
  
*************** If you follow this scheme you will be gu
*** 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
  
  
--- 34182,34188 ----
  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{4a2}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{4a3}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 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
  
  
--- 34210,34216 ----
  @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{4a4}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{4a5}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** the fix is usually simply to add the @co
*** 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
  
  
--- 34310,34316 ----
  @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{4a6}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{4a7}
  @subsection More deterministic semantics
  
  
*************** which open select branches are executed.
*** 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
  
  
--- 34338,34344 ----
  @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{4a8}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{4a9}
  @subsection Changed semantics
  
  
*************** covers only the restricted range.
*** 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
  
  
--- 34380,34386 ----
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{4aa}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{4ab}
  @subsection Other language compatibility issues
  
  
*************** include @code{pragma Interface} and the
*** 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
  
  
--- 34413,34419 ----
  @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{4ac}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{4ad}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** can declare a function returning a value
*** 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
  
  
--- 34485,34491 ----
  @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{4ae}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{4af}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 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
  
  
--- 34508,34514 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{4b0}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{4b1}
  @subsection Implementation-defined pragmas
  
  
*************** avoiding compiler rejection of units tha
*** 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
  
  
--- 34530,34536 ----
  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{4b2}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{4b3}
  @subsection Implementation-defined attributes
  
  
*************** Ada 83, GNAT supplies the attributes @co
*** 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
  
  
--- 34544,34550 ----
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{4b4}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{4b5}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 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
  
  
--- 34573,34579 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{4b6}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{4b7}
  @subsection Elaboration order
  
  
*************** pragmas either globally (as an effect of
*** 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
  
  
--- 34609,34615 ----
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{4b8}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4b9}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 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
  
  
--- 34622,34631 ----
  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{4ba,,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{4bb}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4bc}
  @section Compatibility with Other Ada Systems
  
  
*************** far beyond this minimal set, as describe
*** 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
  
  
--- 34668,34674 ----
  @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{4bd}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4ba}
  @section Representation Clauses
  
  
*************** with thin pointers.
*** 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
  
  
--- 34761,34767 ----
  @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{4be}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4bf}
  @section Compatibility with HP Ada 83
  
  
*************** extension of package System.
*** 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
  
  
--- 34791,34797 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4c0}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4c1}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-17-20260531/gcc/ada/gnat_ugn.texi gcc-17-20260607/gcc/ada/gnat_ugn.texi
*** gcc-17-20260531/gcc/ada/gnat_ugn.texi	Sun May 31 22:32:04 2026
--- gcc-17-20260607/gcc/ada/gnat_ugn.texi	Sun Jun  7 22:32:06 2026
*************** passed between C and Ada as simple as pr
*** 17569,17590 ****
  
  GNAT LLVM currently provides limited support for debugging data. It
  provides full line number information for declarations and statements,
! but not sufficient debugging data to display all Ada data
! structures. GNAT LLVM outputs complete debugging data only for a
! subset of types: scalar types; records whose field offsets are known
! at compile time, including discriminated records fitting this
! description; and arrays. Records that have a field whose size or
! offset is only known at run time do not yet have correct debugging
! data. You will not be able to use @code{gdb} print commands to look at
! objects not of those types or to display components of those
! types. You can use low-level @code{gdb} commands that display memory to
! view such data provided you know how they’re laid out.
  
! In some situations, a name in the source may not be available.
! Renamings are not currently emitted into the debugging data. When
! debugging a nested function, variables from enclosing scopes will not
! be available. You will have to examine those variables in their
! hosting frame.
  
  In addition, debugging information may be confusing if you have
  @code{out} parameters to subprograms. If you have a procedure with only
--- 17569,17578 ----
  
  GNAT LLVM currently provides limited support for debugging data. It
  provides full line number information for declarations and statements,
! and complete debugging data for all types.
  
! In some situations, a name in the source may not be available.  For
! example, renamings are not currently emitted into the debugging data.
  
  In addition, debugging information may be confusing if you have
  @code{out} parameters to subprograms. If you have a procedure with only
*************** is either an @code{out} parameter or the
*** 17596,17602 ****
  The debug information reflects these transformations and not the original
  Ada source code.
  
! GNAT LLVM doesn’t fully implement the @code{-fcheck-stack} switch.
  When you specify it, the code generated by GNAT LLVM tests for allocating
  overly-large items on the stack, but not all cases of stack overflow.  For
  example, if you have a very deep recursion where each call only uses a
--- 17584,17590 ----
  The debug information reflects these transformations and not the original
  Ada source code.
  
! GNAT LLVM doesn’t fully implement the @code{-fstack-check} switch.
  When you specify it, the code generated by GNAT LLVM tests for allocating
  overly-large items on the stack, but not all cases of stack overflow.  For
  example, if you have a very deep recursion where each call only uses a
*************** small amount of stack and the total stac
*** 17604,17610 ****
  available stack, the program will be terminated by a signal instead of
  raising an Ada exception.
  
! GNAT LLVM doesn’t support the @code{Scalar_Storage_Order} pragma except when
  it’s used to confirm the chosen storage order. This is because this facility
  is provided by GCC but not by LLVM.
  
--- 17592,17598 ----
  available stack, the program will be terminated by a signal instead of
  raising an Ada exception.
  
! GNAT LLVM doesn’t support the @code{Scalar_Storage_Order} attribute except when
  it’s used to confirm the chosen storage order. This is because this facility
  is provided by GCC but not by LLVM.
  
*************** GNAT LLVM doesn’t support Convention C
*** 17612,17617 ****
--- 17600,17609 ----
  ‘name mangling’ by encoding parameter and return datatypes into a
  function name.
  
+ The inline assembler in GNAT LLVM is not yet feature complete. For example, it
+ can’t handle more than one output variable, and it doesn’t support all
+ constraints.
+ 
  
  We provide two options that you can use to build code with GNAT LLVM:
  
diff -Nrcpad gcc-17-20260531/gcc/ada/inline.adb gcc-17-20260607/gcc/ada/inline.adb
*** gcc-17-20260531/gcc/ada/inline.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/inline.adb	Sun Jun  7 22:32:06 2026
*************** package body Inline is
*** 2161,2167 ****
        Suppress_Info : Boolean := False)
     is
        Inline_Prefix : constant String := "cannot inline";
- 
        function Starts_With (S, Prefix : String) return Boolean is
          (S (S'First .. S'First + Prefix'Length - 1) = Prefix);
  
--- 2161,2166 ----
*************** package body Inline is
*** 2207,2213 ****
           elsif GNATprove_Mode then
              Set_Is_Inlined_Always (Subp, False);
  
!             if Debug_Flag_Underscore_F and not Suppress_Info then
                 Error_Msg_NE (Msg, N, Subp);
              end if;
  
--- 2206,2213 ----
           elsif GNATprove_Mode then
              Set_Is_Inlined_Always (Subp, False);
  
!             if GNATprove_Inline_Failure_Msg and not Suppress_Info
!             then
                 Error_Msg_NE (Msg, N, Subp);
              end if;
  
*************** package body Inline is
*** 3326,3352 ****
                     Expression          => New_A);
  
              else
-                --  In GNATprove mode, make an explicit copy of input
-                --  parameters when formal and actual types differ, to make
-                --  sure any check on the type conversion will be issued.
-                --  The legality of the copy is ensured by calling first
-                --  Call_Can_Be_Inlined_In_GNATprove_Mode.
- 
-                if GNATprove_Mode
-                  and then Ekind (F) /= E_Out_Parameter
-                  and then not Same_Type (Etype (F), Etype (A))
-                then
-                   pragma Assert (not Is_By_Reference_Type (Etype (A)));
-                   pragma Assert (not Is_Limited_Type (Etype (A)));
- 
-                   Append_To (Decls,
-                     Make_Object_Declaration (Loc,
-                       Defining_Identifier => Make_Temporary (Loc, 'C'),
-                       Constant_Present    => True,
-                       Object_Definition   => New_Occurrence_Of (Temp_Typ, Loc),
-                       Expression          => New_Copy_Tree (New_A)));
-                end if;
- 
                 Decl :=
                   Make_Object_Renaming_Declaration (Loc,
                     Defining_Identifier => Temp,
--- 3326,3331 ----
diff -Nrcpad gcc-17-20260531/gcc/ada/inline.ads gcc-17-20260607/gcc/ada/inline.ads
*** gcc-17-20260531/gcc/ada/inline.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/inline.ads	Sun Jun  7 22:32:06 2026
*************** with Warnsw;   use Warnsw;
*** 50,55 ****
--- 50,62 ----
  
  package Inline is
  
+    GNATprove_Inline_Success_Msg : Boolean := False;
+    --  Emit info messages for successful contextual analysis in GNATprove mode
+ 
+    GNATprove_Inline_Failure_Msg : Boolean := False;
+    --  Emit info messages when contextual analysis cannot be performed in
+    --  GNATprove mode.
+ 
     --------------------------------
     -- Generic Body Instantiation --
     --------------------------------
diff -Nrcpad gcc-17-20260531/gcc/ada/krunch.ads gcc-17-20260607/gcc/ada/krunch.ads
*** gcc-17-20260531/gcc/ada/krunch.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/krunch.ads	Sun Jun  7 22:32:06 2026
***************
*** 23,35 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This procedure implements file name crunching
  
  --    First, the name is divided into segments separated by minus signs and
  --    underscores, then all minus signs and underscores are eliminated. If
  --    this leaves the name short enough, we are done.
  
! --    If not, then the longest segment is located (left-most if there are
  --    two of equal length), and shortened by dropping its last character.
  --    This is repeated until the name is short enough.
  
--- 23,35 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This procedure implements file name crunching:
  
  --    First, the name is divided into segments separated by minus signs and
  --    underscores, then all minus signs and underscores are eliminated. If
  --    this leaves the name short enough, we are done.
  
! --    If not, then the longest segment is located (leftmost if there are
  --    two of equal length), and shortened by dropping its last character.
  --    This is repeated until the name is short enough.
  
***************
*** 50,56 ****
  --      ou  st      wi   fix         9
  --      ou  st      wi   fi          8
  
! --      Final file name: OUSTWIFX.ADB
  
  --    A special rule applies for children of System, Ada, Gnat, and Interfaces.
  --    In these cases, the following special prefix replacements occur:
--- 50,56 ----
  --      ou  st      wi   fix         9
  --      ou  st      wi   fi          8
  
! --      Final file name: OUSTWIFI.ADB
  
  --    A special rule applies for children of System, Ada, Gnat, and Interfaces.
  --    In these cases, the following special prefix replacements occur:
***************
*** 81,87 ****
  --      a-  st      wi   fix         9
  --      a-  st      wi   fi          8
  
! --      Final file name: A-STWIFX.ADB
  
  --  Since children of units named A, G, I or S might conflict with the names
  --  of predefined units, the naming rule in that case is that the first hyphen
--- 81,87 ----
  --      a-  st      wi   fix         9
  --      a-  st      wi   fi          8
  
! --      Final file name: A-STWIFI.ADB
  
  --  Since children of units named A, G, I or S might conflict with the names
  --  of predefined units, the naming rule in that case is that the first hyphen
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/a-calend.adb gcc-17-20260607/gcc/ada/libgnat/a-calend.adb
*** gcc-17-20260531/gcc/ada/libgnat/a-calend.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/a-calend.adb	Sun Jun  7 22:32:06 2026
*************** is
*** 692,706 ****
  
        Nanos_In_56_Years : constant := (14 * 366 + 42 * 365) * Nanos_In_Day;
  
-       type int_Pointer  is access all Interfaces.C.int;
-       type long_Pointer is access all Interfaces.C.long;
- 
-       type OS_Time_Pointer is access all System.OS_Lib.OS_Time;
- 
        procedure localtime_tzoff
!         (timer       : OS_Time_Pointer;
!          is_historic : int_Pointer;
!          off         : long_Pointer);
        pragma Import (C, localtime_tzoff, "__gnat_localtime_tzoff");
        --  This routine is a interfacing wrapper around the library function
        --  __gnat_localtime_tzoff. Parameter 'timer' represents a Unix-based
--- 692,701 ----
  
        Nanos_In_56_Years : constant := (14 * 366 + 42 * 365) * Nanos_In_Day;
  
        procedure localtime_tzoff
!         (timer       : System.OS_Lib.OS_Time;
!          is_historic : Interfaces.C.int;
!          off         : out Interfaces.C.long);
        pragma Import (C, localtime_tzoff, "__gnat_localtime_tzoff");
        --  This routine is a interfacing wrapper around the library function
        --  __gnat_localtime_tzoff. Parameter 'timer' represents a Unix-based
*************** is
*** 713,721 ****
  
        Adj_Cent : Integer;
        Date_N   : Time_Rep;
!       Flag     : aliased Interfaces.C.int;
!       Offset   : aliased Interfaces.C.long;
!       Secs_T   : aliased System.OS_Lib.OS_Time;
  
     --  Start of processing for UTC_Time_Offset
  
--- 708,716 ----
  
        Adj_Cent : Integer;
        Date_N   : Time_Rep;
!       Flag     : Interfaces.C.int;
!       Offset   : Interfaces.C.long;
!       Secs_T   : System.OS_Lib.OS_Time;
  
     --  Start of processing for UTC_Time_Offset
  
*************** is
*** 759,769 ****
  
        Flag := (if Is_Historic then 1 else 0);
  
!       localtime_tzoff
!         (Secs_T'Unchecked_Access,
!          Flag'Unchecked_Access,
!          Offset'Unchecked_Access);
!       pragma Annotate (CodePeer, Modified, Offset);
  
        return Long_Integer (Offset);
     end UTC_Time_Offset;
--- 754,760 ----
  
        Flag := (if Is_Historic then 1 else 0);
  
!       localtime_tzoff (Secs_T, Flag, Offset);
  
        return Long_Integer (Offset);
     end UTC_Time_Offset;
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/a-cbinho.adb gcc-17-20260607/gcc/ada/libgnat/a-cbinho.adb
*** gcc-17-20260531/gcc/ada/libgnat/a-cbinho.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/a-cbinho.adb	Sun Jun  7 22:32:06 2026
*************** package body Ada.Containers.Bounded_Inde
*** 48,55 ****
     overriding procedure Adjust (Container : in out Holder) is
     begin
        Container.Handle := Create_Subpool (The_Storage_Pool, Container);
!       Container.Element :=
!         new (Container.Handle) Element_Type'(Container.Element.all);
     end Adjust;
  
     ------------
--- 48,57 ----
     overriding procedure Adjust (Container : in out Holder) is
     begin
        Container.Handle := Create_Subpool (The_Storage_Pool, Container);
!       if Container.Element /= null then
!          Container.Element :=
!            new (Container.Handle) Element_Type'(Container.Element.all);
!       end if;
     end Adjust;
  
     ------------
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/a-tags.ads gcc-17-20260607/gcc/ada/libgnat/a-tags.ads
*** gcc-17-20260531/gcc/ada/libgnat/a-tags.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/a-tags.ads	Sun Jun  7 22:32:06 2026
*************** private
*** 289,298 ****
       access function (A : System.Address) return Long_Long_Integer;
  
     type Type_Specific_Data (Idepth : Natural) is record
!    --  The discriminant Idepth is the Inheritance Depth Level: Used to
!    --  implement the membership test associated with single inheritance of
!    --  tagged types in constant-time. It also indicates the size of the
!    --  Tags_Table component.
  
        Access_Level : Natural;
        --  Accessibility level required to give support to Ada 2005 nested type
--- 289,297 ----
       access function (A : System.Address) return Long_Long_Integer;
  
     type Type_Specific_Data (Idepth : Natural) is record
!       --  Inheritance Depth Level: Used to implement the membership test
!       --  associated with single inheritance of tagged types in constant-time.
!       --  It also indicates the size of the Tags_Table component.
  
        Access_Level : Natural;
        --  Accessibility level required to give support to Ada 2005 nested type
*************** private
*** 303,330 ****
        --  function return, and class-wide stream I/O, the danger of objects
        --  outliving their type declaration can be eliminated (Ada 2005: AI-344)
  
!       Alignment     : Natural;
!       Expanded_Name : Cstring_Ptr;
!       External_Tag  : Cstring_Ptr;
!       HT_Link       : Tag_Ptr;
!       --  Components used to support to the Ada.Tags subprograms in RM 3.9
! 
!       --  Note: Expanded_Name is referenced by GDB to determine the actual name
!       --  of the tagged type. Its requirements are: 1) it must have this exact
!       --  name, and 2) its contents must point to a C-style Nul terminated
!       --  string containing its expanded name. GDB has no requirement on a
!       --  given position inside the record.
  
        Transportable : Boolean;
        --  Used to check RM E.4(18), set for types that satisfy the requirements
        --  for being used in remote calls as actuals for classwide formals or as
        --  return values for classwide functions.
  
        Is_Abstract : Boolean;
        --  True if the type is abstract (Ada 2012: AI05-0173)
  
!       Needs_Finalization : Boolean;
!       --  Used to dynamically check whether an object is controlled or not
  
        Size_Func : Size_Ptr;
        --  Pointer to the subprogram computing the _size of the object. Used by
--- 302,331 ----
        --  function return, and class-wide stream I/O, the danger of objects
        --  outliving their type declaration can be eliminated (Ada 2005: AI-344)
  
!       Alignment : Natural;
!       --  Alignment of the type
  
        Transportable : Boolean;
        --  Used to check RM E.4(18), set for types that satisfy the requirements
        --  for being used in remote calls as actuals for classwide formals or as
        --  return values for classwide functions.
  
+       Needs_Finalization : Boolean;
+       --  Used to dynamically check whether an object is controlled or not
+ 
        Is_Abstract : Boolean;
        --  True if the type is abstract (Ada 2012: AI05-0173)
  
!       Expanded_Name : Cstring_Ptr;
!       External_Tag  : Cstring_Ptr;
!       HT_Link       : Tag_Ptr;
!       --  Components used to support the Ada.Tags subprograms in RM 3.9
! 
!       --  Note: Expanded_Name is referenced by GDB to determine the actual name
!       --  of the tagged type. Its requirements are: 1) it must have this exact
!       --  name, and 2) its contents must point to a C-style Nul terminated
!       --  string containing its expanded name. GDB has no requirement on a
!       --  given position inside the record.
  
        Size_Func : Size_Ptr;
        --  Pointer to the subprogram computing the _size of the object. Used by
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/a-textio.adb gcc-17-20260607/gcc/ada/libgnat/a-textio.adb
*** gcc-17-20260531/gcc/ada/libgnat/a-textio.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/a-textio.adb	Sun Jun  7 22:32:06 2026
*************** is
*** 100,106 ****
     --  upper half character value from the given File. The first byte has
     --  already been read and is passed in C. The character value is returned as
     --  the result, and the file pointer is bumped past the character.
!    --  Constraint_Error is raised if the encoded value is outside the bounds of
     --  type Character.
  
     function Get_Upper_Half_Char_Immed
--- 100,106 ----
     --  upper half character value from the given File. The first byte has
     --  already been read and is passed in C. The character value is returned as
     --  the result, and the file pointer is bumped past the character.
!    --  Data_Error is raised if the encoded value is outside the bounds of
     --  type Character.
  
     function Get_Upper_Half_Char_Immed
*************** is
*** 806,812 ****
        Result := WC_In (C, File.WC_Method);
  
        if Wide_Character'Pos (Result) > 16#FF# then
!          raise Constraint_Error with
             "invalid wide character in Text_'I'O input";
        else
           return Character'Val (Wide_Character'Pos (Result));
--- 806,812 ----
        Result := WC_In (C, File.WC_Method);
  
        if Wide_Character'Pos (Result) > 16#FF# then
!          raise Data_Error with
             "invalid wide character in Text_'I'O input";
        else
           return Character'Val (Wide_Character'Pos (Result));
*************** is
*** 849,855 ****
        Result := WC_In (C, File.WC_Method);
  
        if Wide_Character'Pos (Result) > 16#FF# then
!          raise Constraint_Error with
             "invalid wide character in Text_'I'O input";
        else
           return Character'Val (Wide_Character'Pos (Result));
--- 849,855 ----
        Result := WC_In (C, File.WC_Method);
  
        if Wide_Character'Pos (Result) > 16#FF# then
!          raise Data_Error with
             "invalid wide character in Text_'I'O input";
        else
           return Character'Val (Wide_Character'Pos (Result));
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/g-comlin.adb gcc-17-20260607/gcc/ada/libgnat/g-comlin.adb
*** gcc-17-20260531/gcc/ada/libgnat/g-comlin.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/g-comlin.adb	Sun Jun  7 22:32:06 2026
*************** package body GNAT.Command_Line is
*** 666,672 ****
                 --  isn't the parameter to a previous switch, since that has
                 --  already been handled.
  
!                if Switches (Switches'First) = '*' then
                    Set_Parameter
                      (Parser.The_Switch,
                       Arg_Num => Parser.Current_Argument,
--- 666,672 ----
                 --  isn't the parameter to a previous switch, since that has
                 --  already been handled.
  
!                if Switches /= "" and then Switches (Switches'First) = '*' then
                    Set_Parameter
                      (Parser.The_Switch,
                       Arg_Num => Parser.Current_Argument,
*************** package body GNAT.Command_Line is
*** 901,907 ****
                    --  If Concatenate is False and the full argument is not
                    --  recognized as a switch, this is an invalid switch.
  
!                   if Switches (Switches'First) = '*' then
                       Set_Parameter
                         (Parser.The_Switch,
                          Arg_Num => Parser.Current_Argument,
--- 901,908 ----
                    --  If Concatenate is False and the full argument is not
                    --  recognized as a switch, this is an invalid switch.
  
!                   if Switches /= "" and then Switches (Switches'First) = '*'
!                   then
                       Set_Parameter
                         (Parser.The_Switch,
                          Arg_Num => Parser.Current_Argument,
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/g-cppexc.adb gcc-17-20260607/gcc/ada/libgnat/g-cppexc.adb
*** gcc-17-20260531/gcc/ada/libgnat/g-cppexc.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/g-cppexc.adb	Sun Jun  7 22:32:06 2026
*************** package body GNAT.CPP_Exceptions is
*** 176,190 ****
        Object_Addr : constant System.Address := Get_Object_Address (X);
        --  Address of the raised object
  
-       type T_Acc is access T;
- 
-       function To_T_Acc is
-          new Ada.Unchecked_Conversion (System.Address, T_Acc);
- 
        --  Import the object from the occurrence
!       Result : constant T_Acc := To_T_Acc (Object_Addr);
     begin
!       return Result;
     end Get_Access_To_Object;
  
     ---------------------------------
--- 176,187 ----
        Object_Addr : constant System.Address := Get_Object_Address (X);
        --  Address of the raised object
  
        --  Import the object from the occurrence
!       Result : aliased T;
!       pragma Import (Ada, Result);
!       for Result'Address use Object_Addr;
     begin
!       return Result'Unchecked_Access;
     end Get_Access_To_Object;
  
     ---------------------------------
*************** package body GNAT.CPP_Exceptions is
*** 197,211 ****
        Object_Addr : constant System.Address := Get_Object_Address (X);
        --  Address of the raised object
  
-       type T_Acc is access T'Class;
- 
-       function To_T_Acc is
-          new Ada.Unchecked_Conversion (System.Address, T_Acc);
- 
        --  Import the object from the occurrence
!       Result : constant T_Acc := To_T_Acc (Object_Addr);
     begin
!       return Result;
     end Get_Access_To_Tagged_Object;
  
     -------------------
--- 194,205 ----
        Object_Addr : constant System.Address := Get_Object_Address (X);
        --  Address of the raised object
  
        --  Import the object from the occurrence
!       Result : aliased T;
!       pragma Import (Ada, Result);
!       for Result'Address use Object_Addr;
     begin
!       return Result'Unchecked_Access;
     end Get_Access_To_Tagged_Object;
  
     -------------------
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/g-cppexc.ads gcc-17-20260607/gcc/ada/libgnat/g-cppexc.ads
*** gcc-17-20260531/gcc/ada/libgnat/g-cppexc.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/g-cppexc.ads	Sun Jun  7 22:32:06 2026
*************** package GNAT.CPP_Exceptions is
*** 69,75 ****
     --  explicitly expected by the handler.
  
     generic
!       type T is abstract tagged limited private;
     function Get_Access_To_Tagged_Object (X : Exception_Occurrence)
                                          return access T'Class;
     --  Extract the object associated with X. The exception of the
--- 69,75 ----
     --  explicitly expected by the handler.
  
     generic
!       type T is tagged limited private;
     function Get_Access_To_Tagged_Object (X : Exception_Occurrence)
                                          return access T'Class;
     --  Extract the object associated with X. The exception of the
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/s-os_lib.adb gcc-17-20260607/gcc/ada/libgnat/s-os_lib.adb
*** gcc-17-20260531/gcc/ada/libgnat/s-os_lib.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/s-os_lib.adb	Sun Jun  7 22:32:06 2026
*************** with System.Case_Util;
*** 35,40 ****
--- 35,41 ----
  with System.CRTL;
  with System.Soft_Links;
  with Interfaces.C;
+ with Interfaces.C.Strings;
  
  package body System.OS_Lib is
  
*************** package body System.OS_Lib is
*** 1034,1055 ****
     ---------------------------
  
     function Get_Debuggable_Suffix return String_Access is
!       procedure Get_Suffix_Ptr (Length, Ptr : Address);
!       pragma Import (C, Get_Suffix_Ptr, "__gnat_get_debuggable_suffix_ptr");
! 
!       Result        : String_Access;
!       Suffix_Length : Integer;
!       Suffix_Ptr    : Address;
  
     begin
!       Get_Suffix_Ptr (Suffix_Length'Address, Suffix_Ptr'Address);
!       Result := new String (1 .. Suffix_Length);
! 
!       if Suffix_Length > 0 then
!          Strncpy (Result.all'Address, Suffix_Ptr, size_t (Suffix_Length));
!       end if;
! 
!       return Result;
     end Get_Debuggable_Suffix;
  
     ---------------------------
--- 1035,1045 ----
     ---------------------------
  
     function Get_Debuggable_Suffix return String_Access is
!       Suffix : constant Interfaces.C.Strings.chars_ptr;
!       pragma Import (C, Suffix, "__gnat_debuggable_suffix");
  
     begin
!       return new String'(Interfaces.C.Strings.Value (Suffix));
     end Get_Debuggable_Suffix;
  
     ---------------------------
*************** package body System.OS_Lib is
*** 1057,1078 ****
     ---------------------------
  
     function Get_Executable_Suffix return String_Access is
!       procedure Get_Suffix_Ptr (Length, Ptr : Address);
!       pragma Import (C, Get_Suffix_Ptr, "__gnat_get_executable_suffix_ptr");
! 
!       Result        : String_Access;
!       Suffix_Length : Integer;
!       Suffix_Ptr    : Address;
  
     begin
!       Get_Suffix_Ptr (Suffix_Length'Address, Suffix_Ptr'Address);
!       Result := new String (1 .. Suffix_Length);
! 
!       if Suffix_Length > 0 then
!          Strncpy (Result.all'Address, Suffix_Ptr, size_t (Suffix_Length));
!       end if;
! 
!       return Result;
     end Get_Executable_Suffix;
  
     -----------------------
--- 1047,1057 ----
     ---------------------------
  
     function Get_Executable_Suffix return String_Access is
!       Suffix : constant Interfaces.C.Strings.chars_ptr;
!       pragma Import (C, Suffix, "__gnat_executable_suffix");
  
     begin
!       return new String'(Interfaces.C.Strings.Value (Suffix));
     end Get_Executable_Suffix;
  
     -----------------------
*************** package body System.OS_Lib is
*** 1080,1101 ****
     -----------------------
  
     function Get_Object_Suffix return String_Access is
!       procedure Get_Suffix_Ptr (Length, Ptr : Address);
!       pragma Import (C, Get_Suffix_Ptr, "__gnat_get_object_suffix_ptr");
! 
!       Result        : String_Access;
!       Suffix_Length : Integer;
!       Suffix_Ptr    : Address;
  
     begin
!       Get_Suffix_Ptr (Suffix_Length'Address, Suffix_Ptr'Address);
!       Result := new String (1 .. Suffix_Length);
! 
!       if Suffix_Length > 0 then
!          Strncpy (Result.all'Address, Suffix_Ptr, size_t (Suffix_Length));
!       end if;
! 
!       return Result;
     end Get_Object_Suffix;
  
     ----------------------------------
--- 1059,1069 ----
     -----------------------
  
     function Get_Object_Suffix return String_Access is
!       Suffix : constant Interfaces.C.Strings.chars_ptr;
!       pragma Import (C, Suffix, "__gnat_object_suffix");
  
     begin
!       return new String'(Interfaces.C.Strings.Value (Suffix));
     end Get_Object_Suffix;
  
     ----------------------------------
*************** package body System.OS_Lib is
*** 1103,1125 ****
     ----------------------------------
  
     function Get_Target_Debuggable_Suffix return String_Access is
!       Target_Exec_Ext_Ptr : Address;
!       pragma Import
!         (C, Target_Exec_Ext_Ptr, "__gnat_target_debuggable_extension");
! 
!       Result        : String_Access;
!       Suffix_Length : Integer;
  
     begin
!       Suffix_Length := Integer (CRTL.strlen (Target_Exec_Ext_Ptr));
!       Result := new String (1 .. Suffix_Length);
! 
!       if Suffix_Length > 0 then
!          Strncpy
!            (Result.all'Address, Target_Exec_Ext_Ptr, size_t (Suffix_Length));
!       end if;
! 
!       return Result;
     end Get_Target_Debuggable_Suffix;
  
     ----------------------------------
--- 1071,1081 ----
     ----------------------------------
  
     function Get_Target_Debuggable_Suffix return String_Access is
!       Suffix : constant Interfaces.C.Strings.chars_ptr;
!       pragma Import (C, Suffix, "__gnat_target_debuggable_extension");
  
     begin
!       return new String'(Interfaces.C.Strings.Value (Suffix));
     end Get_Target_Debuggable_Suffix;
  
     ----------------------------------
*************** package body System.OS_Lib is
*** 1127,1149 ****
     ----------------------------------
  
     function Get_Target_Executable_Suffix return String_Access is
!       Target_Exec_Ext_Ptr : Address;
!       pragma Import
!         (C, Target_Exec_Ext_Ptr, "__gnat_target_executable_extension");
! 
!       Result        : String_Access;
!       Suffix_Length : Integer;
  
     begin
!       Suffix_Length := Integer (CRTL.strlen (Target_Exec_Ext_Ptr));
!       Result := new String (1 .. Suffix_Length);
! 
!       if Suffix_Length > 0 then
!          Strncpy
!            (Result.all'Address, Target_Exec_Ext_Ptr, size_t (Suffix_Length));
!       end if;
! 
!       return Result;
     end Get_Target_Executable_Suffix;
  
     ------------------------------
--- 1083,1093 ----
     ----------------------------------
  
     function Get_Target_Executable_Suffix return String_Access is
!       Suffix : constant Interfaces.C.Strings.chars_ptr;
!       pragma Import (C, Suffix, "__gnat_target_executable_extension");
  
     begin
!       return new String'(Interfaces.C.Strings.Value (Suffix));
     end Get_Target_Executable_Suffix;
  
     ------------------------------
*************** package body System.OS_Lib is
*** 1151,1173 ****
     ------------------------------
  
     function Get_Target_Object_Suffix return String_Access is
!       Target_Object_Ext_Ptr : Address;
!       pragma Import
!         (C, Target_Object_Ext_Ptr, "__gnat_target_object_extension");
! 
!       Result        : String_Access;
!       Suffix_Length : Integer;
  
     begin
!       Suffix_Length := Integer (CRTL.strlen (Target_Object_Ext_Ptr));
!       Result := new String (1 .. Suffix_Length);
! 
!       if Suffix_Length > 0 then
!          Strncpy
!            (Result.all'Address, Target_Object_Ext_Ptr, size_t (Suffix_Length));
!       end if;
! 
!       return Result;
     end Get_Target_Object_Suffix;
  
     ------------
--- 1095,1105 ----
     ------------------------------
  
     function Get_Target_Object_Suffix return String_Access is
!       Suffix : constant Interfaces.C.Strings.chars_ptr;
!       pragma Import (C, Suffix, "__gnat_target_object_extension");
  
     begin
!       return new String'(Interfaces.C.Strings.Value (Suffix));
     end Get_Target_Object_Suffix;
  
     ------------
*************** package body System.OS_Lib is
*** 1304,1319 ****
        Second : out Second_Type)
     is
        procedure To_GM_Time
!         (P_OS_Time : Address;
!          P_Year    : Address;
!          P_Month   : Address;
!          P_Day     : Address;
!          P_Hours   : Address;
!          P_Mins    : Address;
!          P_Secs    : Address);
        pragma Import (C, To_GM_Time, "__gnat_to_gm_time");
  
-       T  : OS_Time := Date;
        Y  : Integer;
        Mo : Integer;
        D  : Integer;
--- 1236,1250 ----
        Second : out Second_Type)
     is
        procedure To_GM_Time
!         (Date    : OS_Time;
!          P_Year  : out Integer;
!          P_Month : out Integer;
!          P_Day   : out Integer;
!          P_Hours : out Integer;
!          P_Mins  : out Integer;
!          P_Secs  : out Integer);
        pragma Import (C, To_GM_Time, "__gnat_to_gm_time");
  
        Y  : Integer;
        Mo : Integer;
        D  : Integer;
*************** package body System.OS_Lib is
*** 1342,1354 ****
        Locked_Processing : begin
           SSL.Lock_Task.all;
           To_GM_Time
!            (P_OS_Time => T'Address,
!             P_Year    => Y'Address,
!             P_Month   => Mo'Address,
!             P_Day     => D'Address,
!             P_Hours   => H'Address,
!             P_Mins    => Mn'Address,
!             P_Secs    => S'Address);
           SSL.Unlock_Task.all;
  
        exception
--- 1273,1285 ----
        Locked_Processing : begin
           SSL.Lock_Task.all;
           To_GM_Time
!            (Date    => Date,
!             P_Year  => Y,
!             P_Month => Mo,
!             P_Day   => D,
!             P_Hours => H,
!             P_Mins  => Mn,
!             P_Secs  => S);
           SSL.Unlock_Task.all;
  
        exception
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/s-spsufi.adb gcc-17-20260607/gcc/ada/libgnat/s-spsufi.adb
*** gcc-17-20260531/gcc/ada/libgnat/s-spsufi.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/s-spsufi.adb	Sun Jun  7 22:32:06 2026
***************
*** 29,36 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Ada.Unchecked_Deallocation;
- 
  with System.Finalization_Primitives; use System.Finalization_Primitives;
  
  package body System.Storage_Pools.Subpools.Finalization is
--- 29,34 ----
*************** package body System.Storage_Pools.Subpoo
*** 40,89 ****
     -----------------------------
  
     procedure Finalize_And_Deallocate (Subpool : in out Subpool_Handle) is
-       procedure Free is new Ada.Unchecked_Deallocation (SP_Node, SP_Node_Ptr);
- 
     begin
        --  Do nothing if the subpool was never created or never used. The latter
        --  case may arise with an array of subpool implementations.
  
!       if Subpool = null
!         or else Subpool.Owner = null
!         or else Subpool.Node = null
!       then
           return;
        end if;
  
!       --  Clean up all controlled objects chained on the subpool's collection
  
        Finalize (Subpool.Collection);
  
        --  Remove the subpool from its owner's list of subpools
  
!       Detach (Subpool.Node);
  
!       --  Destroy the associated doubly linked list node which was created in
!       --  Set_Pool_Of_Subpools.
  
!       Free (Subpool.Node);
  
!       --  Dispatch to the user-defined implementation of Deallocate_Subpool. It
!       --  is important to first set Subpool.Owner to null, because RM-13.11.5
!       --  requires that "The subpool no longer belongs to any pool" BEFORE
!       --  calling Deallocate_Subpool. The actual dispatching call required is:
!       --
!       --     Deallocate_Subpool(Pool_Of_Subpool(Subpool).all, Subpool);
!       --
!       --  but that can't be taken literally, because Pool_Of_Subpool will
!       --  return null.
  
!       declare
!          Owner : constant Any_Storage_Pool_With_Subpools_Ptr := Subpool.Owner;
!       begin
           Subpool.Owner := null;
!          Deallocate_Subpool (Owner.all, Subpool);
!       end;
! 
!       Subpool := null;
     end Finalize_And_Deallocate;
  
  end System.Storage_Pools.Subpools.Finalization;
--- 38,72 ----
     -----------------------------
  
     procedure Finalize_And_Deallocate (Subpool : in out Subpool_Handle) is
     begin
        --  Do nothing if the subpool was never created or never used. The latter
        --  case may arise with an array of subpool implementations.
  
!       if Subpool = null or else Subpool.Owner = null then
           return;
        end if;
  
!       --  Finalize all the objects chained on the subpool's collection
  
        Finalize (Subpool.Collection);
  
        --  Remove the subpool from its owner's list of subpools
  
!       Detach (Subpool, Subpool.Owner.all);
  
!       --  Dispatch to the user-defined implementation of Deallocate_Subpool
  
!       Deallocate_Subpool (Subpool.Owner.all, Subpool);
  
!       --  The subpool ceases to belong to any pool. Note that ACATS cdb4001
!       --  sets Subpool to null on exit from Deallocate_Subpool, but it is also
!       --  possible for the designated subpool object to be reused and, then,
!       --  the next call to Set_Pool_Of_Subpool must succeed.
  
!       if Subpool /= null then
           Subpool.Owner := null;
!          Subpool := null;
!       end if;
     end Finalize_And_Deallocate;
  
  end System.Storage_Pools.Subpools.Finalization;
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/s-spsufi.ads gcc-17-20260607/gcc/ada/libgnat/s-spsufi.ads
*** gcc-17-20260531/gcc/ada/libgnat/s-spsufi.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/s-spsufi.ads	Sun Jun  7 22:32:06 2026
*************** package System.Storage_Pools.Subpools.Fi
*** 38,46 ****
  
     procedure Finalize_And_Deallocate (Subpool : in out Subpool_Handle);
     --  This routine performs the following actions:
!    --    1) Finalize all objects chained on the subpool's collection
     --    2) Remove the subpool from the owner's list of subpools
!    --    3) Deallocate the doubly linked list node associated with the subpool
!    --    4) Call Deallocate_Subpool
  
  end System.Storage_Pools.Subpools.Finalization;
--- 38,46 ----
  
     procedure Finalize_And_Deallocate (Subpool : in out Subpool_Handle);
     --  This routine performs the following actions:
!    --    1) Finalize all the objects chained on the subpool's collection
     --    2) Remove the subpool from the owner's list of subpools
!    --    3) Dispatch to the user-defined implementation of Deallocate_Subpool
!    --    4) Set Pool_Of_Subpool (Subpool) and then Subpool to null
  
  end System.Storage_Pools.Subpools.Finalization;
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/s-stposu.adb gcc-17-20260607/gcc/ada/libgnat/s-stposu.adb
*** gcc-17-20260531/gcc/ada/libgnat/s-stposu.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/s-stposu.adb	Sun Jun  7 22:32:06 2026
*************** use  System.Storage_Pools.Subpools.Final
*** 41,48 ****
  
  package body System.Storage_Pools.Subpools is
  
!    procedure Attach (N : not null SP_Node_Ptr; L : not null SP_Node_Ptr);
!    --  Attach a subpool node to a pool
  
     -----------------------------------
     -- Adjust_Controlled_Dereference --
--- 41,50 ----
  
  package body System.Storage_Pools.Subpools is
  
!    procedure Attach
!      (Subpool : not null Subpool_Handle;
!       Pool    : in out Root_Storage_Pool_With_Subpools'Class);
!    --  Attach a subpool to a pool
  
     -----------------------------------
     -- Adjust_Controlled_Dereference --
*************** package body System.Storage_Pools.Subpoo
*** 140,152 ****
              Subpool := Named_Subpool;
           end if;
  
!          --  Ensure proper ownership and chaining of the subpool
  
           if Subpool.Owner /=
                Root_Storage_Pool_With_Subpools'Class (Pool)'Unchecked_Access
-            or else Subpool.Node = null
-            or else Subpool.Node.Prev = null
-            or else Subpool.Node.Next = null
           then
              raise Program_Error with "incorrect owner of subpool";
           end if;
--- 142,151 ----
              Subpool := Named_Subpool;
           end if;
  
!          --  Ensure proper ownership
  
           if Subpool.Owner /=
                Root_Storage_Pool_With_Subpools'Class (Pool)'Unchecked_Access
           then
              raise Program_Error with "incorrect owner of subpool";
           end if;
*************** package body System.Storage_Pools.Subpoo
*** 258,275 ****
     -- Attach --
     ------------
  
!    procedure Attach (N : not null SP_Node_Ptr; L : not null SP_Node_Ptr) is
     begin
!       --  Ensure that the node has not been attached already
  
!       pragma Assert (N.Prev = null and then N.Next = null);
  
        Lock_Task.all;
  
!       L.Next.Prev := N;
!       N.Next := L.Next;
!       L.Next := N;
!       N.Prev := L;
  
        Unlock_Task.all;
  
--- 257,279 ----
     -- Attach --
     ------------
  
!    procedure Attach
!      (Subpool : not null Subpool_Handle;
!       Pool    : in out Root_Storage_Pool_With_Subpools'Class)
!    is
     begin
!       --  Ensure that the subpool has not been attached already
  
!       pragma Assert (Subpool.Prev = null and then Subpool.Next = null);
  
        Lock_Task.all;
  
!       if Pool.Subpools /= null then
!          Pool.Subpools.Prev := Subpool;
!          Subpool.Next := Pool.Subpools;
!       end if;
! 
!       Pool.Subpools := Subpool;
  
        Unlock_Task.all;
  
*************** package body System.Storage_Pools.Subpoo
*** 363,380 ****
     -- Detach --
     ------------
  
!    procedure Detach (N : not null SP_Node_Ptr) is
     begin
!       --  Ensure that the node is attached to some list
  
!       pragma Assert (N.Next /= null and then N.Prev /= null);
  
!       Lock_Task.all;
  
!       N.Prev.Next := N.Next;
!       N.Next.Prev := N.Prev;
!       N.Prev := null;
!       N.Next := null;
  
        Unlock_Task.all;
  
--- 367,391 ----
     -- Detach --
     ------------
  
!    procedure Detach
!      (Subpool : not null Subpool_Handle;
!       Pool    : in out Root_Storage_Pool_With_Subpools'Class)
!    is
     begin
!       Lock_Task.all;
  
!       if Subpool.Prev /= null then
!          Subpool.Prev.Next := Subpool.Next;
!       else
!          Pool.Subpools := Subpool.Next;
!       end if;
  
!       if Subpool.Next /= null then
!          Subpool.Next.Prev := Subpool.Prev;
!       end if;
  
!       Subpool.Prev := null;
!       Subpool.Next := null;
  
        Unlock_Task.all;
  
*************** package body System.Storage_Pools.Subpoo
*** 396,417 ****
     -------------------
  
     procedure Finalize_Pool (Pool : in out Root_Storage_Pool_With_Subpools) is
-       Curr_Ptr : SP_Node_Ptr;
        Ex_Occur : Exception_Occurrence;
-       Handle   : Subpool_Handle;
        Raised   : Boolean := False;
! 
!       function Is_Empty_List (L : not null SP_Node_Ptr) return Boolean;
!       --  Determine whether a list contains only one element, the dummy head
! 
!       -------------------
!       -- Is_Empty_List --
!       -------------------
! 
!       function Is_Empty_List (L : not null SP_Node_Ptr) return Boolean is
!       begin
!          return L.Next = L and then L.Prev = L;
!       end Is_Empty_List;
  
     --  Start of processing for Finalize_Pool
  
--- 407,415 ----
     -------------------
  
     procedure Finalize_Pool (Pool : in out Root_Storage_Pool_With_Subpools) is
        Ex_Occur : Exception_Occurrence;
        Raised   : Boolean := False;
!       Subpool  : Subpool_Handle;
  
     --  Start of processing for Finalize_Pool
  
*************** package body System.Storage_Pools.Subpoo
*** 430,445 ****
  
        Pool.Finalization_Started := True;
  
!       while not Is_Empty_List (Pool.Subpools'Unchecked_Access) loop
!          Curr_Ptr := Pool.Subpools.Next;
! 
!          --  Finalize and deallocate the subpool. Beware that the node pointed
!          --  to by Curr_Ptr will be deallocated so may not be passed as actual
!          --  in the call, since the formal parameter is In Out.
  
           begin
!             Handle := Curr_Ptr.Subpool;
!             Finalize_And_Deallocate (Handle);
  
           exception
              when Fin_Occur : others =>
--- 428,439 ----
  
        Pool.Finalization_Started := True;
  
!       while Pool.Subpools /= null loop
!          --  Finalize and deallocate the subpool
  
           begin
!             Subpool := Pool.Subpools;
!             Finalize_And_Deallocate (Subpool);
  
           exception
              when Fin_Occur : others =>
*************** package body System.Storage_Pools.Subpoo
*** 481,507 ****
        end if;
     end Header_Size_With_Padding;
  
-    ----------------
-    -- Initialize --
-    ----------------
- 
-    overriding procedure Initialize (Controller : in out Pool_Controller) is
-    begin
-       Initialize_Pool (Controller.Enclosing_Pool.all);
-    end Initialize;
- 
-    ---------------------
-    -- Initialize_Pool --
-    ---------------------
- 
-    procedure Initialize_Pool (Pool : in out Root_Storage_Pool_With_Subpools) is
-    begin
-       --  The dummy head must point to itself in both directions
- 
-       Pool.Subpools.Next := Pool.Subpools'Unchecked_Access;
-       Pool.Subpools.Prev := Pool.Subpools'Unchecked_Access;
-    end Initialize_Pool;
- 
     ---------------------
     -- Pool_Of_Subpool --
     ---------------------
--- 475,480 ----
*************** package body System.Storage_Pools.Subpoo
*** 519,618 ****
     ----------------
  
     procedure Print_Pool (Pool : Root_Storage_Pool_With_Subpools) is
-       Head      : constant SP_Node_Ptr := Pool.Subpools'Unrestricted_Access;
-       Head_Seen : Boolean := False;
-       SP_Ptr    : SP_Node_Ptr;
- 
     begin
        --  Output the contents of the pool
  
        --    Pool      : 0x123456789
        --    Subpools  : 0x123456789
        --    Fin_Start : TRUE <or> FALSE
!       --    Controller: OK <or> NOK
  
        Put ("Pool      : ");
        Put_Line (Address_Image (Pool'Address));
  
        Put ("Subpools  : ");
!       Put_Line (Address_Image (Pool.Subpools'Address));
  
        Put ("Fin_Start : ");
        Put_Line (Pool.Finalization_Started'Img);
  
!       Put ("Controlled: ");
        if Pool.Controller.Enclosing_Pool = Pool'Unrestricted_Access then
           Put_Line ("OK");
        else
!          Put_Line ("NOK (ERROR)");
        end if;
- 
-       SP_Ptr := Head;
-       while SP_Ptr /= null loop  --  Should never be null
-          Put_Line ("V");
- 
-          --  We see the head initially; we want to exit when we see the head a
-          --  second time.
- 
-          if SP_Ptr = Head then
-             exit when Head_Seen;
- 
-             Head_Seen := True;
-          end if;
- 
-          --  The current element is null. This should never happend since the
-          --  list is circular.
- 
-          if SP_Ptr.Prev = null then
-             Put_Line ("null (ERROR)");
- 
-          --  The current element points back to the correct element
- 
-          elsif SP_Ptr.Prev.Next = SP_Ptr then
-             Put_Line ("^");
- 
-          --  The current element points to an erroneous element
- 
-          else
-             Put_Line ("? (ERROR)");
-          end if;
- 
-          --  Output the contents of the node
- 
-          Put ("|Header: ");
-          Put (Address_Image (SP_Ptr.all'Address));
-          if SP_Ptr = Head then
-             Put_Line (" (dummy head)");
-          else
-             Put_Line ("");
-          end if;
- 
-          Put ("|  Prev: ");
- 
-          if SP_Ptr.Prev = null then
-             Put_Line ("null");
-          else
-             Put_Line (Address_Image (SP_Ptr.Prev.all'Address));
-          end if;
- 
-          Put ("|  Next: ");
- 
-          if SP_Ptr.Next = null then
-             Put_Line ("null");
-          else
-             Put_Line (Address_Image (SP_Ptr.Next.all'Address));
-          end if;
- 
-          Put ("|  Subp: ");
- 
-          if SP_Ptr.Subpool = null then
-             Put_Line ("null");
-          else
-             Put_Line (Address_Image (SP_Ptr.Subpool.all'Address));
-          end if;
- 
-          SP_Ptr := SP_Ptr.Next;
-       end loop;
     end Print_Pool;
  
     -------------------
--- 492,520 ----
     ----------------
  
     procedure Print_Pool (Pool : Root_Storage_Pool_With_Subpools) is
     begin
        --  Output the contents of the pool
  
        --    Pool      : 0x123456789
        --    Subpools  : 0x123456789
        --    Fin_Start : TRUE <or> FALSE
!       --    Controller: OK <or> ERROR
  
        Put ("Pool      : ");
        Put_Line (Address_Image (Pool'Address));
  
        Put ("Subpools  : ");
!       Put_Line (Pool.Subpools'Img);
  
        Put ("Fin_Start : ");
        Put_Line (Pool.Finalization_Started'Img);
  
!       Put ("Controller: ");
        if Pool.Controller.Enclosing_Pool = Pool'Unrestricted_Access then
           Put_Line ("OK");
        else
!          Put_Line ("ERROR");
        end if;
     end Print_Pool;
  
     -------------------
*************** package body System.Storage_Pools.Subpoo
*** 630,659 ****
  
        --    Owner     : 0x123456789
        --    Collection: 0x123456789
!       --    Node      : 0x123456789
  
!       Put ("Owner : ");
!       if Subpool.Owner = null then
!          Put_Line ("null");
!       else
!          Put_Line (Address_Image (Subpool.Owner'Address));
!       end if;
  
        Put ("Collection: ");
        Put_Line (Address_Image (Subpool.Collection'Address));
  
!       Put ("Node  : ");
!       if Subpool.Node = null then
!          Put ("null");
  
!          if Subpool.Owner = null then
!             Put_Line (" OK");
!          else
!             Put_Line (" (ERROR)");
!          end if;
!       else
!          Put_Line (Address_Image (Subpool.Node'Address));
!       end if;
     end Print_Subpool;
  
     -------------------------
--- 532,551 ----
  
        --    Owner     : 0x123456789
        --    Collection: 0x123456789
!       --    Prev      : 0x123456789
!       --    Next      : 0x123456789
  
!       Put ("Owner     : ");
!       Put_Line (Subpool.Owner'Img);
  
        Put ("Collection: ");
        Put_Line (Address_Image (Subpool.Collection'Address));
  
!       Put ("Prev      : ");
!       Put_Line (Subpool.Prev'Img);
  
!       Put ("Next      : ");
!       Put_Line (Subpool.Next'Img);
     end Print_Subpool;
  
     -------------------------
*************** package body System.Storage_Pools.Subpoo
*** 664,671 ****
       (Subpool : not null Subpool_Handle;
        To      : in out Root_Storage_Pool_With_Subpools'Class)
     is
-       N_Ptr : SP_Node_Ptr;
- 
     begin
        --  If the subpool is already owned, raise Program_Error. This is a
        --  direct violation of the RM rules.
--- 556,561 ----
*************** package body System.Storage_Pools.Subpoo
*** 684,698 ****
  
        Subpool.Owner := To'Unchecked_Access;
  
!       --  Create a subpool node and decorate it. Since this node is not
!       --  allocated on the owner's pool, it must be explicitly destroyed by
!       --  Finalize_And_Detach.
! 
!       N_Ptr := new SP_Node;
!       N_Ptr.Subpool := Subpool;
!       Subpool.Node := N_Ptr;
! 
!       Attach (N_Ptr, To.Subpools'Unchecked_Access);
     end Set_Pool_Of_Subpool;
  
     -------------------
--- 574,580 ----
  
        Subpool.Owner := To'Unchecked_Access;
  
!       Attach (Subpool, To);
     end Set_Pool_Of_Subpool;
  
     -------------------
diff -Nrcpad gcc-17-20260531/gcc/ada/libgnat/s-stposu.ads gcc-17-20260607/gcc/ada/libgnat/s-stposu.ads
*** gcc-17-20260531/gcc/ada/libgnat/s-stposu.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/libgnat/s-stposu.ads	Sun Jun  7 22:32:06 2026
*************** package System.Storage_Pools.Subpools is
*** 75,84 ****
        Size_In_Storage_Elements : System.Storage_Elements.Storage_Count;
        Alignment                : System.Storage_Elements.Storage_Count;
        Subpool                  : not null Subpool_Handle) is abstract;
  
-    --  ??? This precondition causes errors in simple tests, disabled for now
- 
-    --      with Pre'Class => Pool_Of_Subpool (Subpool) = Pool'Access;
     --  This routine requires implementation. Allocate an object described by
     --  Size_In_Storage_Elements and Alignment on a subpool.
  
--- 75,83 ----
        Size_In_Storage_Elements : System.Storage_Elements.Storage_Count;
        Alignment                : System.Storage_Elements.Storage_Count;
        Subpool                  : not null Subpool_Handle) is abstract;
+    --  The precondition specified in the RM is illegal:
+    --  with Pre'Class => Pool_Of_Subpool (Subpool) = Pool'Access;
  
     --  This routine requires implementation. Allocate an object described by
     --  Size_In_Storage_Elements and Alignment on a subpool.
  
*************** package System.Storage_Pools.Subpools is
*** 99,105 ****
       (Pool    : in out Root_Storage_Pool_With_Subpools;
        Subpool : in out Subpool_Handle)
     is abstract;
!    --  This precondition causes errors in simple tests, disabled for now???
     --  with Pre'Class => Pool_Of_Subpool (Subpool) = Pool'Access;
  
     --  This routine requires implementation. Reclaim the storage a particular
--- 98,104 ----
       (Pool    : in out Root_Storage_Pool_With_Subpools;
        Subpool : in out Subpool_Handle)
     is abstract;
!    --  The precondition specified in the RM is illegal:
     --  with Pre'Class => Pool_Of_Subpool (Subpool) = Pool'Access;
  
     --  This routine requires implementation. Reclaim the storage a particular
*************** package System.Storage_Pools.Subpools is
*** 144,152 ****
     --  of Ada.Containers.Bounded_Indefinite_Holders.
  
  private
-    --  SP_Nodes are created on the heap, while collection nodes and associated
-    --  objects are created on the pool_with_subpools.
- 
     type Any_Storage_Pool_With_Subpools_Ptr
       is access all Root_Storage_Pool_With_Subpools'Class;
     for Any_Storage_Pool_With_Subpools_Ptr'Storage_Size use 0;
--- 143,148 ----
*************** private
*** 157,196 ****
     type Pool_Controller (Enclosing_Pool : Any_Storage_Pool_With_Subpools_Ptr)
       is new Ada.Finalization.Limited_Controlled with null record;
  
!    --  Subpool list types. Each pool_with_subpools contains a list of subpools.
!    --  This is an indirect doubly linked list since subpools are not supposed
!    --  to be allocatable by language design.
! 
!    type SP_Node;
!    type SP_Node_Ptr is access all SP_Node;
! 
!    type SP_Node is record
!       Prev    : SP_Node_Ptr := null;
!       Next    : SP_Node_Ptr := null;
!       Subpool : Subpool_Handle := null;
!    end record;
! 
!    --  Root_Storage_Pool_With_Subpools internal structure. The type uses a
!    --  special controller to perform initialization and finalization actions
!    --  on itself. This is necessary because the end user of this package may
!    --  decide to override Initialize and Finalize, thus disabling the desired
!    --  behavior.
! 
!    --          Pool_With_Subpools     SP_Node    SP_Node    SP_Node
!    --    +-->+--------------------+   +-----+    +-----+    +-----+
!    --    |   |      Subpools -------->|  ------->|  ------->|  ------->
!    --    |   +--------------------+   +-----+    +-----+    +-----+
!    --    |   |Finalization_Started|   :     :    :     :    :     :
!    --    |   +--------------------+
!    --    +--- Controller.Encl_Pool|
!    --        +--------------------+
!    --        :       End-user     :
!    --        :      components    :
  
     type Root_Storage_Pool_With_Subpools is abstract
       new Root_Storage_Pool with
     record
!       Subpools : aliased SP_Node;
        --  A doubly linked list of subpools
  
        Finalization_Started : Boolean := False;
--- 153,164 ----
     type Pool_Controller (Enclosing_Pool : Any_Storage_Pool_With_Subpools_Ptr)
       is new Ada.Finalization.Limited_Controlled with null record;
  
!    --  Root_Storage_Pool_With_Subpools internal structure
  
     type Root_Storage_Pool_With_Subpools is abstract
       new Root_Storage_Pool with
     record
!       Subpools : Subpool_Handle := null;
        --  A doubly linked list of subpools
  
        Finalization_Started : Boolean := False;
*************** private
*** 205,236 ****
        --  finalized at the appropriate places.
     end record;
  
!    --  A subpool is an abstraction layer which sits on top of a pool. It
!    --  contains links to all controlled objects allocated on a particular
!    --  subpool.
! 
!    --             Pool_With_Subpools     SP_Node    SP_Node    SP_Node
!    --       +-->+--------------------+   +-----+    +-----+    +-----+
!    --       |   |      Subpools -------->|  ------->|  ------->|  ------->
!    --       |   +--------------------+   +-----+    +-----+    +-----+
!    --       |   |Finalization_Started|<------  |<-------  |<-------  |<---
!    --       |   +--------------------+   +-----+    +-----+    +-----+
!    --       +--- Controller.Encl_Pool|   | nul |    |  +  |    |  +  |
!    --       |   +--------------------+   +-----+    +--|--+    +--:--+
!    --       |   :                    :    Dummy        |  ^       :
!    --       |   :                    :                 |  |       :
!    --       |                            Root_Subpool  V  |
!    --       |                            +-------------+  |
!    --       +-------------------------------- Owner    |  |
!    --                Collection nodes    +-------------+  |
!    --               +-----+   +-----+<-- | Collection  |
!    --            <------  |<------  |    +-------------+  |
!    --               +-----+   +-----+    |    Node -------+
!    --               |  ------>|  ----->  +-------------+
!    --               +-----+   +-----+    :             :
!    --               |ctrl |    Dummy     :             :
!    --               | obj |
!    --               +-----+
  
     type Root_Subpool is abstract tagged limited record
        Owner : Any_Storage_Pool_With_Subpools_Ptr := null;
--- 173,179 ----
        --  finalized at the appropriate places.
     end record;
  
!    --  Root_Subpool internal structure
  
     type Root_Subpool is abstract tagged limited record
        Owner : Any_Storage_Pool_With_Subpools_Ptr := null;
*************** private
*** 239,249 ****
        Collection : aliased Finalization_Primitives.Finalization_Collection;
        --  A collection of controlled objects
  
!       Node : SP_Node_Ptr := null;
!       --  A link to the doubly linked list node which contains the subpool.
!       --  This back pointer is used in subpool deallocation.
     end record;
  
     procedure Adjust_Controlled_Dereference
       (Addr         : in out System.Address;
        Storage_Size : in out System.Storage_Elements.Storage_Count;
--- 182,222 ----
        Collection : aliased Finalization_Primitives.Finalization_Collection;
        --  A collection of controlled objects
  
!       Prev : Subpool_Handle := null;
!       Next : Subpool_Handle := null;
!       --  Links for the doubly linked list which contains the subpool
     end record;
  
+    --  The subpool is an abstraction layer that sits on top of a pool and
+    --  contains links to all controlled objects allocated on this subpool.
+    --
+    --             Pool_With_Subpools
+    --       +-->+--------------------+
+    --       |   |      Subpools ---------------+
+    --       |   +--------------------+         |
+    --       |   |Finalization_Started|         |
+    --       |   +--------------------+         |
+    --       +--- Controller.Encl_Pool|         |
+    --       |   +--------------------+         V
+    --       |   :                    :       Subpool           Subpool
+    --       |                            +-------------+   +-------------+
+    --       +--------------------------<----- Owner    | <----- Owner    |
+    --                                    +-------------+   +-------------+
+    --                  +---------------- | Collection  |   | Collection  |
+    --                  |                 +-------------+   +-------------+
+    --                  |                 |    Prev     | <----  Prev     |
+    --                  |                 |    Next ------> |    Next ------>
+    --                  V                 +-------------+   +-------------+
+    --                Node      Node      :             :   :             :
+    --               +-----+   +-----+
+    --            <------  |<------  |
+    --               +-----+   +-----+
+    --               |  ------>|  ----->
+    --               +-----+   +-----+
+    --                Dummy    |ctrl |
+    --                         | obj |
+    --                         +-----+
+ 
     procedure Adjust_Controlled_Dereference
       (Addr         : in out System.Address;
        Storage_Size : in out System.Storage_Elements.Storage_Count;
*************** private
*** 316,323 ****
     --    * Is_Controlled - A flag which determines whether the allocated object
     --    is controlled. When set to True, the address must be displaced.
  
!    procedure Detach (N : not null SP_Node_Ptr);
!    --  Unhook a subpool node from an arbitrary subpool list
  
     overriding procedure Finalize (Controller : in out Pool_Controller);
     --  Buffer routine, calls Finalize_Pool
--- 289,298 ----
     --    * Is_Controlled - A flag which determines whether the allocated object
     --    is controlled. When set to True, the address must be displaced.
  
!    procedure Detach
!      (Subpool : not null Subpool_Handle;
!       Pool    : in out Root_Storage_Pool_With_Subpools'Class);
!    --  Detach a subpool from a pool
  
     overriding procedure Finalize (Controller : in out Pool_Controller);
     --  Buffer routine, calls Finalize_Pool
*************** private
*** 334,345 ****
     --  precedes a controlled object as the nearest multiple rounded up of the
     --  alignment.
  
-    overriding procedure Initialize (Controller : in out Pool_Controller);
-    --  Buffer routine, calls Initialize_Pool
- 
-    procedure Initialize_Pool (Pool : in out Root_Storage_Pool_With_Subpools);
-    --  Setup the doubly linked list of subpools
- 
     procedure Print_Pool (Pool : Root_Storage_Pool_With_Subpools);
     --  Debug routine, output the contents of a pool_with_subpools
  
--- 309,314 ----
diff -Nrcpad gcc-17-20260531/gcc/ada/make.adb gcc-17-20260607/gcc/ada/make.adb
*** gcc-17-20260531/gcc/ada/make.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/make.adb	Sun Jun  7 22:32:06 2026
*************** package body Make is
*** 1433,1444 ****
        --  on the name specified with the -l linker option, using the
        --  Ada object path. Return No_File if no such file can be found.
  
-       type Char_Array is array (Natural) of Character;
-       type Char_Array_Access is access constant Char_Array;
- 
-       Template : Char_Array_Access;
-       pragma Import (C, Template, "__gnat_library_template");
- 
        ----------------
        -- Check_File --
        ----------------
--- 1433,1438 ----
*************** package body Make is
*** 1512,1552 ****
        -- Get_Library_Name --
        ----------------------
  
-       --  See comments in a-adaint.c about template syntax
- 
        function Get_Library_File (Name : String) return File_Name_Type is
!          File : File_Name_Type := No_File;
! 
        begin
!          Name_Len := 0;
! 
!          for Ptr in Template'Range loop
!             case Template (Ptr) is
!                when '*' =>
!                   Add_Str_To_Name_Buffer (Name);
! 
!                when ';' =>
!                   File := Full_Lib_File_Name (Name_Find);
!                   exit when File /= No_File;
!                   Name_Len := 0;
! 
!                when NUL =>
!                   exit;
! 
!                when others =>
!                   Add_Char_To_Name_Buffer (Template (Ptr));
!             end case;
!          end loop;
! 
!          --  The for loop exited because the end of the template
!          --  was reached. File contains the last possible file name
!          --  for the library.
! 
!          if File = No_File and then Name_Len > 0 then
!             File := Full_Lib_File_Name (Name_Find);
!          end if;
! 
!          return File;
        end Get_Library_File;
  
     --  Start of processing for Check_Linker_Options
--- 1506,1515 ----
        -- Get_Library_Name --
        ----------------------
  
        function Get_Library_File (Name : String) return File_Name_Type is
!          Library_Name : constant String := "lib" & Name & ".a";
        begin
!          return Full_Lib_File_Name (Name_Find (Library_Name));
        end Get_Library_File;
  
     --  Start of processing for Check_Linker_Options
diff -Nrcpad gcc-17-20260531/gcc/ada/opt.ads gcc-17-20260607/gcc/ada/opt.ads
*** gcc-17-20260531/gcc/ada/opt.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/opt.ads	Sun Jun  7 22:32:06 2026
*************** package Opt is
*** 67,77 ****
     --  case of some binder variables, Gnatbind.Scan_Bind_Arg may modify
     --  the default values.
  
-    Latest_Ada_Only : Boolean := False;
-    --  If True, the only value valid for Ada_Version is Ada_2012 or later.
-    --  Trying to specify other values will be ignored (in case of pragma
-    --  Ada_xxx) or generate an error (in case of -gnat83/95/xx switches).
- 
     type Ada_Version_Type is
       (Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2022,
        Ada_With_Core_Extensions, Ada_With_All_Extensions);
--- 67,72 ----
diff -Nrcpad gcc-17-20260531/gcc/ada/par-ch3.adb gcc-17-20260607/gcc/ada/par-ch3.adb
*** gcc-17-20260531/gcc/ada/par-ch3.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/par-ch3.adb	Sun Jun  7 22:32:06 2026
*************** package body Ch3 is
*** 4613,4619 ****
              Append (P_Generic, Decls);
  
           when Tok_Identifier =>
!             Check_Bad_Layout;
  
              --  Special check for misuse of overriding not in Ada 2005 mode
  
--- 4613,4619 ----
              Append (P_Generic, Decls);
  
           when Tok_Identifier =>
!             Save_Scan_State (Scan_State);
  
              --  Special check for misuse of overriding not in Ada 2005 mode
  
*************** package body Ch3 is
*** 4632,4637 ****
--- 4632,4641 ----
                 P_Identifier_Declarations (Decls, Done, In_Spec, In_Statements);
              end if;
  
+             if not Done then
+                Check_Bad_Layout_At (Scan_State);
+             end if;
+ 
           when Tok_Package =>
              Check_Bad_Layout;
              Append (P_Package (Pf_Decl_Gins_Pbod_Rnam_Stub_Pexp), Decls);
diff -Nrcpad gcc-17-20260531/gcc/ada/par-ch4.adb gcc-17-20260607/gcc/ada/par-ch4.adb
*** gcc-17-20260531/gcc/ada/par-ch4.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/par-ch4.adb	Sun Jun  7 22:32:06 2026
*************** package body Ch4 is
*** 527,532 ****
--- 527,538 ----
              elsif Token = Tok_Mod and then Ada_Version >= Ada_95 then
                 Attr_Name := Name_Mod;
  
+             elsif Token = Tok_At then
+                Attr_Name := Name_At;
+ 
+                Error_Msg_GNAT_Extension
+                  ("attribute At", Token_Ptr, Is_Core_Extension => False);
+ 
              elsif Apostrophe_Should_Be_Semicolon then
                 Expr_Form := EF_Name;
                 return Name_Node;
diff -Nrcpad gcc-17-20260531/gcc/ada/par-ch5.adb gcc-17-20260607/gcc/ada/par-ch5.adb
*** gcc-17-20260531/gcc/ada/par-ch5.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/par-ch5.adb	Sun Jun  7 22:32:06 2026
*************** package body Ch5 is
*** 497,504 ****
                 --  Cases of statements starting with an identifier
  
                 when Tok_Identifier =>
-                   Check_Bad_Layout;
- 
                    --  Save scan pointers and line number in case block label
  
                    Id_Node := Token_Node;
--- 497,502 ----
*************** package body Ch5 is
*** 802,807 ****
--- 800,807 ----
                       end if;
                    end if;
  
+                   Check_Bad_Layout_At (Scan_State_Label);
+ 
                 --  Statement starting with operator symbol. This could be
                 --  a call, a name starting an assignment, or a qualified
                 --  expression.
diff -Nrcpad gcc-17-20260531/gcc/ada/par-prag.adb gcc-17-20260607/gcc/ada/par-prag.adb
*** gcc-17-20260531/gcc/ada/par-prag.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/par-prag.adb	Sun Jun  7 22:32:06 2026
*************** begin
*** 354,375 ****
        ------------
  
        when Pragma_Ada_83 =>
!          if not Latest_Ada_Only then
!             Ada_Version := Ada_83;
!             Ada_Version_Explicit := Ada_83;
!             Ada_Version_Pragma := Pragma_Node;
!          end if;
  
        ------------
        -- Ada_95 --
        ------------
  
        when Pragma_Ada_95 =>
!          if not Latest_Ada_Only then
!             Ada_Version := Ada_95;
!             Ada_Version_Explicit := Ada_95;
!             Ada_Version_Pragma := Pragma_Node;
!          end if;
  
        ---------------------
        -- Ada_05/Ada_2005 --
--- 354,371 ----
        ------------
  
        when Pragma_Ada_83 =>
!          Ada_Version := Ada_83;
!          Ada_Version_Explicit := Ada_83;
!          Ada_Version_Pragma := Pragma_Node;
  
        ------------
        -- Ada_95 --
        ------------
  
        when Pragma_Ada_95 =>
!          Ada_Version := Ada_95;
!          Ada_Version_Explicit := Ada_95;
!          Ada_Version_Pragma := Pragma_Node;
  
        ---------------------
        -- Ada_05/Ada_2005 --
*************** begin
*** 378,384 ****
        when Pragma_Ada_05
           | Pragma_Ada_2005
        =>
!          if Arg_Count = 0 and not Latest_Ada_Only then
              Ada_Version := Ada_2005;
              Ada_Version_Explicit := Ada_2005;
              Ada_Version_Pragma := Pragma_Node;
--- 374,380 ----
        when Pragma_Ada_05
           | Pragma_Ada_2005
        =>
!          if Arg_Count = 0 then
              Ada_Version := Ada_2005;
              Ada_Version_Explicit := Ada_2005;
              Ada_Version_Pragma := Pragma_Node;
*************** begin
*** 1490,1495 ****
--- 1486,1492 ----
           | Pragma_Interrupt_Handler
           | Pragma_Interrupt_Priority
           | Pragma_Interrupt_State
+          | Pragma_Interrupts_System_By_Default
           | Pragma_Invariant
           | Pragma_Keep_Names
           | Pragma_License
*************** begin
*** 1519,1525 ****
           | Pragma_No_Raise
           | Pragma_No_Return
           | Pragma_No_Run_Time
-          | Pragma_Interrupts_System_By_Default
           | Pragma_No_Strict_Aliasing
           | Pragma_No_Tagged_Streams
           | Pragma_Normalize_Scalars
--- 1516,1521 ----
diff -Nrcpad gcc-17-20260531/gcc/ada/par-util.adb gcc-17-20260607/gcc/ada/par-util.adb
*** gcc-17-20260531/gcc/ada/par-util.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/par-util.adb	Sun Jun  7 22:32:06 2026
*************** package body Util is
*** 197,202 ****
--- 197,215 ----
        end if;
     end Check_Bad_Layout;
  
+    -------------------------
+    -- Check_Bad_Layout_At --
+    -------------------------
+ 
+    procedure Check_Bad_Layout_At (Scan_State : Saved_Scan_State) is
+       S : Saved_Scan_State;
+    begin
+       Save_Scan_State (S);
+       Restore_Scan_State (Scan_State);
+       Check_Bad_Layout;
+       Restore_Scan_State (S);
+    end Check_Bad_Layout_At;
+ 
     --------------------------
     -- Check_Future_Keyword --
     --------------------------
diff -Nrcpad gcc-17-20260531/gcc/ada/par.adb gcc-17-20260607/gcc/ada/par.adb
*** gcc-17-20260531/gcc/ada/par.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/par.adb	Sun Jun  7 22:32:06 2026
*************** function Par (Configuration_Pragmas : Bo
*** 1324,1329 ****
--- 1324,1332 ----
        --  is exdented from the current expected end column, and if so an
        --  error message is generated.
  
+       procedure Check_Bad_Layout_At (Scan_State : Saved_Scan_State);
+       --  Same as Check_Bad_Layout with Scan_State as the current scan state
+ 
        procedure Check_Misspelling_Of (T : Token_Type);
        pragma Inline (Check_Misspelling_Of);
        --  This is similar to the function above, except that it does not
diff -Nrcpad gcc-17-20260531/gcc/ada/rtsfind.adb gcc-17-20260607/gcc/ada/rtsfind.adb
*** gcc-17-20260531/gcc/ada/rtsfind.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/rtsfind.adb	Sun Jun  7 22:32:06 2026
*************** package body Rtsfind is
*** 1284,1293 ****
        --  for this unit to the current compilation unit.
  
        declare
!          LibUnit  : constant Node_Id         := Unit (Cunit (U.Unum));
!          Saved_GM : constant Ghost_Mode_Type := Ghost_Config.Ghost_Mode;
!          Clause   : Node_Id;
!          Withn    : Node_Id;
  
        begin
           Clause := U.First_Implicit_With;
--- 1284,1293 ----
        --  for this unit to the current compilation unit.
  
        declare
!          LibUnit : constant Node_Id := Unit (Cunit (U.Unum));
!          Clause  : Node_Id;
!          Withn   : Node_Id;
!          Orig    : Node_Id;
  
        begin
           Clause := U.First_Implicit_With;
*************** package body Rtsfind is
*** 1296,1316 ****
                 return;
              end if;
  
              Clause := Next_Implicit_With (Clause);
           end loop;
  
-          --  We want to make sure that the "with" we create below isn't
-          --  marked as ignored ghost code because this list may be walked
-          --  later, after ignored ghost code is converted to a null
-          --  statement.
- 
-          Ghost_Config.Ghost_Mode := None;
           Withn :=
             Make_With_Clause (Standard_Location,
               Name =>
                 Make_Unit_Name
                   (U, Defining_Unit_Name (Specification (LibUnit))));
-          Ghost_Config.Ghost_Mode := Saved_GM;
  
           Set_Corresponding_Spec  (Withn, U.Entity);
           Set_First_Name          (Withn);
--- 1296,1324 ----
                 return;
              end if;
  
+             --  RTE can be accessed after ignored ghost code has been removed.
+             --  Use the Orignal_Node to iterate over the implicit with clause
+             --  chain.
+ 
+             while Nkind (Clause) /= N_With_Clause loop
+                Orig := Original_Node (Clause);
+ 
+                --  Break out of an infinite loop if something has gone horribly
+                --  wrong.
+ 
+                exit when Orig = Clause;
+                Clause := Orig;
+             end loop;
+             pragma Assert (Nkind (Clause) = N_With_Clause);
+ 
              Clause := Next_Implicit_With (Clause);
           end loop;
  
           Withn :=
             Make_With_Clause (Standard_Location,
               Name =>
                 Make_Unit_Name
                   (U, Defining_Unit_Name (Specification (LibUnit))));
  
           Set_Corresponding_Spec  (Withn, U.Entity);
           Set_First_Name          (Withn);
*************** package body Rtsfind is
*** 1322,1328 ****
  
           Mark_Rewrite_Insertion (Withn);
           Append (Withn, Context_Items (Cunit (Current_Sem_Unit)));
!          Check_Restriction_No_Dependence (Name (Withn), Current_Error_Node);
        end;
     end Maybe_Add_With;
  
--- 1330,1342 ----
  
           Mark_Rewrite_Insertion (Withn);
           Append (Withn, Context_Items (Cunit (Current_Sem_Unit)));
! 
!          --  We can add the dependency now for analysis but the with clause was
!          --  generated in an ignored context, meaning it will be removed later.
! 
!          if Ghost_Config.Ghost_Mode /= Ignore then
!             Check_Restriction_No_Dependence (Name (Withn), Current_Error_Node);
!          end if;
        end;
     end Maybe_Add_With;
  
diff -Nrcpad gcc-17-20260531/gcc/ada/sem.ads gcc-17-20260607/gcc/ada/sem.ads
*** gcc-17-20260531/gcc/ada/sem.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem.ads	Sun Jun  7 22:32:06 2026
*************** package Sem is
*** 394,402 ****
        Check : Check_Id;
        --  Check which is set (can be All_Checks for the All_Checks case)
  
-       Suppress : Boolean;
-       --  Set True for Suppress, and False for Unsuppress
- 
        Prev : Suppress_Stack_Entry_Ptr;
        --  Pointer to previous entry on stack
  
--- 394,399 ----
*************** package Sem is
*** 406,411 ****
--- 403,411 ----
        --  field is used as a forward pointer (null ends the list). This is
        --  used to free all entries in Sem.Init (which will be important if
        --  we ever setup the compiler to be reused).
+ 
+       Suppress : Boolean;
+       --  Set True for Suppress, and False for Unsuppress
     end record;
  
     Suppress_Stack_Entries : Suppress_Stack_Entry_Ptr := null;
*************** package Sem is
*** 500,509 ****
--- 500,536 ----
        Entity : Scope_Kind_Id;
        --  Entity representing the scope
  
+       First_Use_Clause : Node_Id;
+       --  Head of list of Use_Clauses in this scope. The list is built when
+       --  the declarations in the scope are processed. The list is traversed
+       --  on scope exit to undo the effect of the use clauses.
+ 
        Last_Subprogram_Name : String_Ptr;
        --  Pointer to name of last subprogram body in this scope. Used for
        --  testing proper alpha ordering of subprogram bodies in scope.
  
+       Node_To_Be_Wrapped : Node_Id;
+       --  Only used in transient scopes. Records the node that will be wrapped
+       --  by the transient block.
+ 
+       Actions_To_Be_Wrapped : Scope_Actions;
+       --  Actions that have to be inserted at the start, at the end, or as
+       --  cleanup actions of a transient block. Used to temporarily hold these
+       --  actions until the block is created, at which time the actions are
+       --  moved to the block.
+ 
+       Locked_Shared_Objects : Elist_Id;
+       --  List of shared passive protected objects that have been locked in
+       --  this transient scope (always No_Elist for non-transient scopes).
+ 
+       Pending_Freeze_Actions : List_Id;
+       --  Used to collect freeze entity nodes and associated actions that are
+       --  generated in an inner context but need to be analyzed outside, such
+       --  as records and initialization procedures. On exit from the scope,
+       --  this list of actions is inserted before the scope construct and
+       --  analyzed to generate the corresponding freeze processing and
+       --  elaboration of other associated actions.
+ 
        Save_Scope_Suppress : Suppress_Record;
        --  Save contents of Scope_Suppress on entry
  
*************** package Sem is
*** 521,534 ****
        Save_Default_Storage_Pool : Node_Id;
        --  Save contents of Default_Storage_Pool on entry to restore on exit
  
!       Save_SPARK_Mode : SPARK_Mode_Type;
!       --  Setting of SPARK_Mode on entry to restore on exit
  
        Save_SPARK_Mode_Pragma : Node_Id;
        --  Setting of SPARK_Mode_Pragma on entry to restore on exit
  
!       Save_No_Tagged_Streams : Node_Id;
!       --  Setting of No_Tagged_Streams to restore on exit
  
        Save_Default_SSO : Character;
        --  Setting of Default_SSO on entry to restore on exit
--- 548,566 ----
        Save_Default_Storage_Pool : Node_Id;
        --  Save contents of Default_Storage_Pool on entry to restore on exit
  
!       Save_No_Tagged_Streams : Node_Id;
!       --  Setting of No_Tagged_Streams to restore on exit
  
        Save_SPARK_Mode_Pragma : Node_Id;
        --  Setting of SPARK_Mode_Pragma on entry to restore on exit
  
!       Save_SPARK_Mode : SPARK_Mode_Type;
!       --  Setting of SPARK_Mode on entry to restore on exit
! 
!       Component_Alignment_Default : Component_Alignment_Kind;
!       --  Component alignment to be applied to any record or array types that
!       --  are declared for which a specific component alignment pragma does not
!       --  set the alignment.
  
        Save_Default_SSO : Character;
        --  Setting of Default_SSO on entry to restore on exit
*************** package Sem is
*** 536,541 ****
--- 568,580 ----
        Save_Uneval_Old : Character;
        --  Setting of Uneval_Old on entry to restore on exit
  
+       Is_Active_Stack_Base : Boolean;
+       --  Set to true only when entering the scope for Standard_Standard from
+       --  from within procedure Semantics. Indicates the base of the current
+       --  active set of scopes. Needed by In_Open_Scopes to handle cases where
+       --  Standard_Standard can be pushed anew on the scope stack to start a
+       --  new active section (see comment above).
+ 
        Is_Transient : Boolean;
        --  Marks transient scopes (see Exp_Ch7 body for details)
  
*************** package Sem is
*** 546,590 ****
        --  typically needed when the context of a child unit requires
        --  compilation of a sibling. In other cases the flag is set to False.
        --  See Sem_Ch10 (Install_Parents, Remove_Parents).
- 
-       Node_To_Be_Wrapped : Node_Id;
-       --  Only used in transient scopes. Records the node that will be wrapped
-       --  by the transient block.
- 
-       Actions_To_Be_Wrapped : Scope_Actions;
-       --  Actions that have to be inserted at the start, at the end, or as
-       --  cleanup actions of a transient block. Used to temporarily hold these
-       --  actions until the block is created, at which time the actions are
-       --  moved to the block.
- 
-       Pending_Freeze_Actions : List_Id;
-       --  Used to collect freeze entity nodes and associated actions that are
-       --  generated in an inner context but need to be analyzed outside, such
-       --  as records and initialization procedures. On exit from the scope,
-       --  this list of actions is inserted before the scope construct and
-       --  analyzed to generate the corresponding freeze processing and
-       --  elaboration of other associated actions.
- 
-       First_Use_Clause : Node_Id;
-       --  Head of list of Use_Clauses in current scope. The list is built when
-       --  the declarations in the scope are processed. The list is traversed
-       --  on scope exit to undo the effect of the use clauses.
- 
-       Component_Alignment_Default : Component_Alignment_Kind;
-       --  Component alignment to be applied to any record or array types that
-       --  are declared for which a specific component alignment pragma does not
-       --  set the alignment.
- 
-       Is_Active_Stack_Base : Boolean;
-       --  Set to true only when entering the scope for Standard_Standard from
-       --  from within procedure Semantics. Indicates the base of the current
-       --  active set of scopes. Needed by In_Open_Scopes to handle cases where
-       --  Standard_Standard can be pushed anew on the scope stack to start a
-       --  new active section (see comment above).
- 
-       Locked_Shared_Objects : Elist_Id;
-       --  List of shared passive protected objects that have been locked in
-       --  this transient scope (always No_Elist for non-transient scopes).
     end record;
  
     package Scope_Stack is new Table.Table (
--- 585,590 ----
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_aggr.adb gcc-17-20260607/gcc/ada/sem_aggr.adb
*** gcc-17-20260531/gcc/ada/sem_aggr.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_aggr.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Aggr is
*** 735,748 ****
  
        Itype := Create_Itype (E_Array_Subtype, N);
  
!       Set_First_Rep_Item         (Itype, First_Rep_Item        (Typ));
!       Set_Convention             (Itype, Convention            (Typ));
!       Set_Depends_On_Private     (Itype, Has_Private_Component (Typ));
!       Set_Etype                  (Itype, Base_Type             (Typ));
!       Set_Has_Alignment_Clause   (Itype, Has_Alignment_Clause  (Typ));
!       Set_Is_Aliased             (Itype, Is_Aliased            (Typ));
!       Set_Is_Independent         (Itype, Is_Independent        (Typ));
!       Set_Depends_On_Private     (Itype, Depends_On_Private    (Typ));
  
        Copy_Suppress_Status (Index_Check,  Typ, Itype);
        Copy_Suppress_Status (Length_Check, Typ, Itype);
--- 735,748 ----
  
        Itype := Create_Itype (E_Array_Subtype, N);
  
!       Set_First_Rep_Item         (Itype, First_Rep_Item          (Typ));
!       Set_Convention             (Itype, Convention              (Typ));
!       Set_Depends_On_Private     (Itype, Is_Incompletely_Defined (Typ));
!       Set_Etype                  (Itype, Base_Type               (Typ));
!       Set_Has_Alignment_Clause   (Itype, Has_Alignment_Clause    (Typ));
!       Set_Is_Aliased             (Itype, Is_Aliased              (Typ));
!       Set_Is_Independent         (Itype, Is_Independent          (Typ));
!       Set_Depends_On_Private     (Itype, Depends_On_Private      (Typ));
  
        Copy_Suppress_Status (Index_Check,  Typ, Itype);
        Copy_Suppress_Status (Length_Check, Typ, Itype);
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_attr.adb gcc-17-20260607/gcc/ada/sem_attr.adb
*** gcc-17-20260531/gcc/ada/sem_attr.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_attr.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Attr is
*** 3580,3585 ****
--- 3580,3723 ----
  
           Set_Etype (N, RTE (RE_Asm_Output_Operand));
  
+       --------
+       -- At --
+       --------
+ 
+       when Attribute_At =>
+          Check_E1;
+ 
+          --  Set the type of the attribute now to ensure the successful
+          --  continuation of analysis even if the attribute is misplaced.
+ 
+          Set_Etype (N, P_Type);
+ 
+          --  We start with the same checks as for goto statements. The final
+          --  check rejects references to forward labels, which are allowed for
+          --  goto, but not for this attribute.
+ 
+          if not (Nkind (E1) = N_Identifier
+                    and then Ekind (Entity (E1)) = E_Label)
+          then
+             Error_Attr ("label expected", E1);
+          elsif not Reachable (Entity (E1)) then
+             Error_Attr ("label is not reachable", E1);
+          elsif Sloc (E1) < Sloc (Entity (E1)) then
+             Error_Attr ("forward label reference", E1);
+          end if;
+ 
+          declare
+             function Check_Goto (Stmt : Node_Id) return Traverse_Result;
+             --  Detect goto statements that "jump over" the attribute label
+ 
+             function Check_Reference (Ref : Node_Id) return Traverse_Result;
+             --  Check if reference denotes entity visible at the location of
+             --  the referenced label or declared within the prefix itself.
+ 
+             function Declared_Within_Prefix (E : Entity_Id) return Boolean;
+             --  Return True iff E is declared within the attribute prefix
+ 
+             Label_Depth : constant Unat := Scope_Depth (Scope (Entity (E1)));
+             --  Scope depth at the label
+ 
+             -------------
+             -- Check_Goto --
+             -------------
+ 
+             function Check_Goto (Stmt : Node_Id) return Traverse_Result is
+             begin
+                --  Check if the target of a goto statement is located past the
+                --  label appearing in the attribute expression.
+ 
+                if Nkind (Stmt) in N_Goto_Statement | N_Goto_When_Statement
+                  and then Sloc (Entity (Name (Stmt))) > Sloc (Entity (E1))
+                then
+                   Error_Msg_Sloc := Sloc (Stmt);
+                   Error_Msg_N
+                     ("!attribute label is skipped by goto at #", N);
+                   return Skip;
+ 
+                --  Stop once we reached the attribute label
+ 
+                elsif Nkind (Stmt) = N_Label
+                  and then Entity (Identifier (Stmt)) = Entity (E1)
+                then
+                   return Abandon;
+ 
+                --  Skip constructs where a goto jump will not be allowed anyway
+ 
+                elsif Nkind (Stmt) in N_Package_Declaration
+                                    | N_Package_Body
+                                    | N_Subprogram_Body
+                                    | N_Generic_Declaration
+                                    | N_Single_Task_Declaration
+                                    | N_Task_Type_Declaration
+                                    | N_Single_Protected_Declaration
+                                    | N_Protected_Type_Declaration
+                                    | N_Protected_Body
+                                    | N_Task_Body
+                then
+                   return Skip;
+ 
+                else
+                   return OK;
+                end if;
+             end Check_Goto;
+ 
+             ---------------------
+             -- Check_Reference --
+             ---------------------
+ 
+             function Check_Reference (Ref : Node_Id) return Traverse_Result is
+             begin
+                --  To check if referenced entity is visible at the label we
+                --  simply compare the scope depth.
+ 
+                if Nkind (Ref) = N_Identifier
+                  and then Present (Entity (Ref))
+                  and then Scope_Depth (Scope (Entity (Ref))) > Label_Depth
+                  and then not Declared_Within_Prefix (Entity (Ref))
+                then
+                   Error_Msg_Sloc := Sloc (Entity (E1));
+                   Error_Msg_NE ("!& is not visible at #", N, Entity (Ref));
+                end if;
+ 
+                return OK;
+             end Check_Reference;
+ 
+             ----------------------------
+             -- Declared_Within_Prefix --
+             ----------------------------
+ 
+             function Declared_Within_Prefix (E : Entity_Id) return Boolean is
+                Context : Node_Id;
+ 
+             begin
+                Context := E;
+                while Present (Context) loop
+                   if Context = P then
+                      return True;
+ 
+                   --  Prevent the search from going too far
+ 
+                   elsif Is_Body_Or_Package_Declaration (Context) then
+                      return False;
+                   end if;
+ 
+                   Context := Parent (Context);
+                end loop;
+ 
+                return False;
+             end Declared_Within_Prefix;
+ 
+             procedure Check_Gotos is new Traverse_Proc (Check_Goto);
+             procedure Check_References is new Traverse_Proc (Check_Reference);
+ 
+          begin
+             Check_Gotos (Parent (Label_Construct (Parent (Entity (E1)))));
+             Check_References (P);
+          end;
+ 
        -----------------------------
        -- Atomic_Always_Lock_Free --
        -----------------------------
*************** package body Sem_Attr is
*** 7262,7270 ****
  
           --  Copy all characters in Full_Name
  
!          for J in 1 .. String_Length (Full_Name) loop
!             Store_String_Char (Get_String_Char (Full_Name, Pos (J)));
!          end loop;
  
           --  Compute CRC and convert it to string one character at a time, so
           --  as not to use Image within the compiler.
--- 7400,7406 ----
  
           --  Copy all characters in Full_Name
  
!          Store_String_Chars (Full_Name);
  
           --  Compute CRC and convert it to string one character at a time, so
           --  as not to use Image within the compiler.
*************** package body Sem_Attr is
*** 7363,7376 ****
                 Start_String;
  
                 if Negative then
!                   Store_String_Char (Get_Char_Code ('-'));
                 end if;
  
                 S := Sloc (Expr);
                 Src := Source_Text (Get_Source_File_Index (S));
  
                 while Src (S) /= ';' and then Src (S) /= ' ' loop
!                   Store_String_Char (Get_Char_Code (Src (S)));
                    S := S + 1;
                 end loop;
  
--- 7499,7512 ----
                 Start_String;
  
                 if Negative then
!                   Store_String_Char ('-');
                 end if;
  
                 S := Sloc (Expr);
                 Src := Source_Text (Get_Source_File_Index (S));
  
                 while Src (S) /= ';' and then Src (S) /= ' ' loop
!                   Store_String_Char (Src (S));
                    S := S + 1;
                 end loop;
  
*************** package body Sem_Attr is
*** 7839,7864 ****
              --  Do not emit any diagnostics related to private types to avoid
              --  disclosing the structure of the type.
  
!             elsif Is_Private_Type (P_Type) then
! 
!                --  Attribute 'Valid_Scalars is not supported on private tagged
!                --  types due to a code generation issue. Is_Visible_Component
!                --  does not allow for a component of a private tagged type to
!                --  be successfully retrieved.
!                --  ??? This attribute should simply ignore type privacy
!                --  (see Validated_View). It should examine components of the
!                --  tagged type extensions (if any) and recursively examine
!                --  'Valid_Scalars of the parent's type (if any).
! 
!                --  Do not use Error_Attr_P because this bypasses any subsequent
!                --  processing and leaves the attribute with type Any_Type. This
!                --  in turn prevents the proper expansion of the attribute into
!                --  True.
! 
!                if Is_Tagged_Type (P_Type) then
!                   Error_Msg_Name_1 := Aname;
!                   Error_Msg_N ("??effects of attribute % are ignored", N);
!                end if;
  
              --  Otherwise the type is not private
  
--- 7975,7985 ----
              --  Do not emit any diagnostics related to private types to avoid
              --  disclosing the structure of the type.
  
!             elsif Is_Private_Type (P_Type)
!               or else (Is_Class_Wide_Type (P_Type)
!                         and then Is_Private_Type (Root_Type (P_Type)))
!             then
!                null;
  
              --  Otherwise the type is not private
  
*************** package body Sem_Attr is
*** 11373,11378 ****
--- 11494,11500 ----
           | Attribute_Address_Size
           | Attribute_Asm_Input
           | Attribute_Asm_Output
+          | Attribute_At
           | Attribute_Base
           | Attribute_Bit_Order
           | Attribute_Bit_Position
*************** package body Sem_Attr is
*** 11800,11810 ****
                 --  also be accessibility checks on those, this is where the
                 --  checks can eventually be centralized ???
  
!                if Ekind (Btyp) in E_Access_Protected_Subprogram_Type
!                                 | E_Access_Subprogram_Type
!                                 | E_Anonymous_Access_Protected_Subprogram_Type
!                                 | E_Anonymous_Access_Subprogram_Type
!                then
                    --  Deal with convention mismatch
  
                    if Convention (Designated_Type (Btyp)) /=
--- 11922,11929 ----
                 --  also be accessibility checks on those, this is where the
                 --  checks can eventually be centralized ???
  
!                if Ekind (Btyp) in Access_Subprogram_Kind then
! 
                    --  Deal with convention mismatch
  
                    if Convention (Designated_Type (Btyp)) /=
*************** package body Sem_Attr is
*** 12090,12103 ****
              --  default-initialized aggregate component for a self-referential
              --  type the reference is legal.
  
!             if not (Ekind (Btyp) = E_Access_Subprogram_Type
!                      or else Ekind (Btyp) = E_Anonymous_Access_Subprogram_Type
                       or else (Is_Record_Type (Btyp)
                                 and then
                                   Present (Corresponding_Remote_Type (Btyp)))
-                      or else Ekind (Btyp) = E_Access_Protected_Subprogram_Type
-                      or else Ekind (Btyp)
-                                = E_Anonymous_Access_Protected_Subprogram_Type
                       or else Is_Access_Constant (Btyp)
                       or else Is_Variable (P)
                       or else Attr_Id = Attribute_Unrestricted_Access)
--- 12209,12218 ----
              --  default-initialized aggregate component for a self-referential
              --  type the reference is legal.
  
!             if not (Ekind (Btyp) in Access_Subprogram_Kind
                       or else (Is_Record_Type (Btyp)
                                 and then
                                   Present (Corresponding_Remote_Type (Btyp)))
                       or else Is_Access_Constant (Btyp)
                       or else Is_Variable (P)
                       or else Attr_Id = Attribute_Unrestricted_Access)
*************** package body Sem_Attr is
*** 12137,12163 ****
  
              if Ekind (Btyp) in E_General_Access_Type | E_Anonymous_Access_Type
              then
-                --  Ada 2005 (AI-230): Check the accessibility of anonymous
-                --  access types for stand-alone objects, record and array
-                --  components, and return objects. For a component definition
-                --  the level is the same of the enclosing composite type.
- 
-                if Ada_Version >= Ada_2005
-                  and then Attr_Id = Attribute_Access
-                  and then (Is_Local_Anonymous_Access (Btyp)
- 
-                             --  Handle cases where Btyp is the anonymous access
-                             --  type of an Ada 2012 stand-alone object.
- 
-                             or else Nkind (Associated_Node_For_Itype (Btyp)) =
-                                                         N_Object_Declaration)
-                  and then
-                    Static_Accessibility_Level (N, Zero_On_Dynamic_Level) >
-                      Deepest_Type_Access_Level (Btyp)
-                then
-                   Accessibility_Message (N, Typ);
-                end if;
- 
                 if Attr_Id /= Attribute_Unrestricted_Access
                   and then Is_Dependent_Component_Of_Mutable_Object (P)
                 then
--- 12252,12257 ----
*************** package body Sem_Attr is
*** 12295,12340 ****
                    end if;
                 end if;
  
!                --  Check the static accessibility rule of 3.10.2(28). Note that
!                --  this check is not performed for the case of an anonymous
!                --  access type, since the access attribute is always legal
!                --  in such a context - unless the restriction
!                --  No_Dynamic_Accessibility_Checks is active.
  
!                declare
!                   No_Dynamic_Acc_Checks : constant Boolean :=
!                     No_Dynamic_Accessibility_Checks_Enabled (Btyp);
  
!                   Compatible_Alt_Checks : constant Boolean :=
!                     No_Dynamic_Acc_Checks and then not Debug_Flag_Underscore_B;
  
!                begin
!                   if Attr_Id = Attribute_Access
!                     and then (Ekind (Btyp) = E_General_Access_Type
!                                or else No_Dynamic_Acc_Checks)
  
!                     --  In the case of the alternate "compatibility"
!                     --  accessibility model we do not perform a static
!                     --  accessibility check on actuals for anonymous access
!                     --  types - so exclude them here.
  
!                     and then not (Compatible_Alt_Checks
!                                    and then Is_Actual_Parameter (N)
!                                    and then Ekind (Btyp)
!                                               = E_Anonymous_Access_Type)
  
!                     and then
!                       Static_Accessibility_Level (N, Zero_On_Dynamic_Level) >
!                         Deepest_Type_Access_Level (Btyp)
!                   then
!                      Accessibility_Message (N, Typ);
!                   end if;
!                end;
              end if;
  
!             if Ekind (Btyp) in E_Access_Protected_Subprogram_Type
!                              | E_Anonymous_Access_Protected_Subprogram_Type
!             then
                 if Is_Entity_Name (P)
                   and then not Is_Protected_Type (Scope (Entity (P)))
                 then
--- 12389,12442 ----
                    end if;
                 end if;
  
!                --  Check the static accessibility rule of 3.10.2(28). In the
!                --  case of anonymous access types, only those of stand-alone
!                --  objects, components and results can be statically checked.
  
!                if Attr_Id = Attribute_Access then
!                   declare
!                      No_Dynamic_Acc_Checks : constant Boolean :=
!                        No_Dynamic_Accessibility_Checks_Enabled (Btyp);
  
!                      Compatible_Alt_Checks : constant Boolean :=
!                        No_Dynamic_Acc_Checks
!                          and then not Debug_Flag_Underscore_B;
  
!                   begin
!                      if (Ekind (Btyp) = E_General_Access_Type
!                           or else
!                             (Ada_Version >= Ada_2005
!                               and then
!                                 (Is_Local_Anonymous_Access (Btyp)
  
!                                   --  Case where Btyp is the anonymous access
!                                   --  type of an Ada 2012 stand-alone object.
  
!                                   or else
!                                     Nkind (Associated_Node_For_Itype (Btyp)) =
!                                                         N_Object_Declaration)
  
!                               --  In the case of the alternate "compatibility"
!                               --  accessibility model we do not make a static
!                               --  accessibility check on actuals for anonymous
!                               --  access types - so exclude them here.
! 
!                               and then not (Compatible_Alt_Checks
!                                              and then Is_Actual_Parameter (N)))
! 
!                           or else No_Dynamic_Acc_Checks)
! 
!                        and then
!                          Static_Accessibility_Level (P, Zero_On_Dynamic_Level)
!                            > Deepest_Type_Access_Level (Btyp)
!                      then
!                         Accessibility_Message (N, Typ);
!                      end if;
!                   end;
!                end if;
              end if;
  
!             if Ekind (Btyp) in Access_Protected_Kind then
                 if Is_Entity_Name (P)
                   and then not Is_Protected_Type (Scope (Entity (P)))
                 then
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_aux.adb gcc-17-20260607/gcc/ada/sem_aux.adb
*** gcc-17-20260531/gcc/ada/sem_aux.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_aux.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Aux is
*** 922,935 ****
  
     function Is_Definite_Subtype (T : Entity_Id) return Boolean is
        pragma Assert (Is_Type (T));
-       K : constant Entity_Kind := Ekind (T);
  
     begin
        if Is_Constrained (T) then
           return True;
  
!       elsif K in Array_Kind
!         or else K in Class_Wide_Kind
          or else Has_Unknown_Discriminants (T)
        then
           return False;
--- 922,933 ----
  
     function Is_Definite_Subtype (T : Entity_Id) return Boolean is
        pragma Assert (Is_Type (T));
  
     begin
        if Is_Constrained (T) then
           return True;
  
!       elsif Ekind (T) in Array_Kind | Class_Wide_Kind
          or else Has_Unknown_Discriminants (T)
        then
           return False;
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_aux.ads gcc-17-20260607/gcc/ada/sem_aux.ads
*** gcc-17-20260531/gcc/ada/sem_aux.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_aux.ads	Sun Jun  7 22:32:06 2026
***************
*** 30,35 ****
--- 30,40 ----
  --  content of entities in the tree, so this package is used for routines that
  --  require more than minimal semantic knowledge.
  
+ --  However, this package is in the closure of the binder executable. If you're
+ --  looking for the home of a new helper function that uses significant
+ --  semantic knowledge, Sem_Util, which is not in the closure of the binder
+ --  executable, will be a more convenient place.
+ 
  with Alloc;
  with Einfo.Entities; use Einfo.Entities;
  with Namet; use Namet;
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_case.adb gcc-17-20260607/gcc/ada/sem_case.adb
*** gcc-17-20260531/gcc/ada/sem_case.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_case.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Case is
*** 1698,1704 ****
                 elsif Nkind (Expr) = N_Type_Conversion
                    and then not Comes_From_Source (Expr)
                 then
!                   if Expr /= Original_Node (Expr) then
                       Traverse_Choice (Original_Node (Expr));
                    else
                       Traverse_Choice (Expression (Expr));
--- 1698,1704 ----
                 elsif Nkind (Expr) = N_Type_Conversion
                    and then not Comes_From_Source (Expr)
                 then
!                   if Is_Rewrite_Substitution (Expr) then
                       Traverse_Choice (Original_Node (Expr));
                    else
                       Traverse_Choice (Expression (Expr));
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_ch12.adb gcc-17-20260607/gcc/ada/sem_ch12.adb
*** gcc-17-20260531/gcc/ada/sem_ch12.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_ch12.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Ch12 is
*** 3220,3228 ****
           end if;
        end if;
  
!       if Subtype_Mark (Def) in Empty | Error then
           pragma Assert (Serious_Errors_Detected > 0);
!          --  avoid passing bad argument to Entity
           return;
        end if;
  
--- 3220,3228 ----
           end if;
        end if;
  
!       if not Is_Entity_Name (Subtype_Mark (Def)) then
           pragma Assert (Serious_Errors_Detected > 0);
!          --  Avoid passing bad argument to Entity
           return;
        end if;
  
*************** package body Sem_Ch12 is
*** 4745,4750 ****
--- 4745,4752 ----
        if Nkind (Spec) = N_Function_Specification then
           if Nkind (Result_Definition (Spec)) = N_Access_Definition then
              Result_Type := Access_Definition (Spec, Result_Definition (Spec));
+             Set_Parent (Result_Type, Result_Definition (Spec));
+             Set_Is_Local_Anonymous_Access (Result_Type);
              Set_Etype (Id, Result_Type);
  
              --  Check restriction imposed by AI05-073: a generic function
*************** package body Sem_Ch12 is
*** 5403,5418 ****
                   and then Nkind (Parent (N)) /= N_Compilation_Unit
                 then
                    Inline_Now := True;
- 
-                --  In configurable_run_time mode we force the inlining of
-                --  predefined subprograms marked Inline_Always, to minimize
-                --  the use of the run-time library.
- 
-                elsif In_Predefined_Unit (Gen_Decl)
-                  and then Configurable_Run_Time_Mode
-                  and then Nkind (Parent (N)) /= N_Compilation_Unit
-                then
-                   Inline_Now := True;
                 end if;
  
                 --  If the current scope is itself an instance within a child
--- 5405,5410 ----
*************** package body Sem_Ch12 is
*** 15785,15791 ****
              Act_T := Full_View (Act_T);
              Set_Entity (Actual, Act_T);
  
!             if Has_Private_Component (Act_T) then
                 Error_Msg_N
                   ("premature use of type with private component", Actual);
              end if;
--- 15777,15783 ----
              Act_T := Full_View (Act_T);
              Set_Entity (Actual, Act_T);
  
!             if Is_Incompletely_Defined (Act_T) then
                 Error_Msg_N
                   ("premature use of type with private component", Actual);
              end if;
*************** package body Sem_Ch12 is
*** 15803,15809 ****
           then
              Error_Msg_N ("premature use of private type", Actual);
  
!          elsif Has_Private_Component (Act_T) then
              Error_Msg_N
                ("premature use of type with private component", Actual);
           end if;
--- 15795,15801 ----
           then
              Error_Msg_N ("premature use of private type", Actual);
  
!          elsif Is_Incompletely_Defined (Act_T) then
              Error_Msg_N
                ("premature use of type with private component", Actual);
           end if;
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_ch13.adb gcc-17-20260607/gcc/ada/sem_ch13.adb
*** gcc-17-20260531/gcc/ada/sem_ch13.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_ch13.adb	Sun Jun  7 22:32:06 2026
*************** with Ghost;            use Ghost;
*** 45,51 ****
  with Lib;              use Lib;
  with Lib.Xref;         use Lib.Xref;
  with Mutably_Tagged;   use Mutably_Tagged;
- with Namet;            use Namet;
  with Nlists;           use Nlists;
  with Nmake;            use Nmake;
  with Opt;              use Opt;
--- 45,50 ----
*************** package body Sem_Ch13 is
*** 235,274 ****
     --  Returns True for a representation clause/pragma that specifies a
     --  type-related representation (as opposed to operational) aspect.
  
-    function Is_Predicate_Static
-      (Expr : Node_Id;
-       Nam  : Name_Id;
-       Warn : Boolean := True) return Boolean;
-    --  Given predicate expression Expr, tests if Expr is predicate-static in
-    --  the sense of the rules in (RM 3.2.4 (15-24)). Occurrences of the type
-    --  name in the predicate expression have been replaced by references to
-    --  an identifier whose Chars field is Nam. This name is unique, so any
-    --  identifier with Chars matching Nam must be a reference to the type.
-    --  Returns True if the expression is predicate-static and False otherwise,
-    --  but is not in the business of setting flags or issuing error messages.
-    --
-    --  Only scalar types can have static predicates, so False is always
-    --  returned for non-scalar types.
-    --
-    --  Note: the RM seems to suggest that string types can also have static
-    --  predicates. But that really makes little sense as very few useful
-    --  predicates can be constructed for strings. Remember that:
-    --
-    --     "ABC" < "DEF"
-    --
-    --  is not a static expression. So even though the clearly faulty RM wording
-    --  allows the following:
-    --
-    --     subtype S is String with Static_Predicate => S < "DEF"
-    --
-    --  We can't allow this, otherwise we have predicate-static applying to a
-    --  larger class than static expressions, which was never intended.
-    --
-    --  The Warn parameter is True iff this is not a recursive call. This
-    --  parameter is used to avoid generating warnings for subexpressions and
-    --  for cases where the predicate expression (as originally written by
-    --  the user, before any transformations) is a Boolean literal.
- 
     procedure New_Put_Image_Subprogram
       (N    : Node_Id;
        Ent  : Entity_Id;
--- 234,239 ----
*************** package body Sem_Ch13 is
*** 395,401 ****
  
     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
--- 360,365 ----
*************** package body Sem_Ch13 is
*** 417,429 ****
  
     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 --
--- 381,390 ----
*************** package body Sem_Ch13 is
*** 2118,2124 ****
  
     procedure Insert_Aitem
       (N           : Node_Id;
-       Ins_Node    : in out Node_Id;
        Aitem       : in out Node_Id;
        Is_Instance : Boolean)
     is
--- 2079,2084 ----
*************** package body Sem_Ch13 is
*** 2129,2134 ****
--- 2089,2116 ----
        Def   : Node_Id;
        Decls : List_Id; -- List on which to prepend Aitem, if any
  
+       function Insert_After_Place return Node_Id;
+       --  When we call Insert_After below, this is the node after which to
+       --  insert Aitem. This is normally N, except if Aitem is a pragma
+       --  Annotate, then we insert it after other pragmas Annotate.
+       --  ???This should not be necessary; order should not matter,
+       --  so we should always insert immediately after N.
+ 
+       function Insert_After_Place return Node_Id is
+       begin
+          return Result : Node_Id := N do
+             if Nkind (Aitem) = N_Pragma
+               and then Get_Pragma_Id (Aitem) = Pragma_Annotate
+             then
+                while Nkind (Next (Result)) = N_Pragma
+                  and then Get_Pragma_Id (Next (Result)) = Pragma_Annotate
+                loop
+                   Next (Result);
+                end loop;
+             end if;
+          end return;
+       end Insert_After_Place;
+ 
     begin
        --  ???Preelaborate in a package body is illegal, but older compilers
        --  accepted it, and put the pragma after the body (which is also
*************** package body Sem_Ch13 is
*** 2234,2265 ****
        <<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>>
--- 2216,2232 ----
        <<After>>
  
        --  Here we insert Aitem AFTER N. For a compilation unit, that means
!       --  at the end of the Pragmas_After list. 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;
  
!          Append_To (Pragmas_After (Aux_Decls_Node (Parent (N))), Aitem);
        else
!          Insert_After (Insert_After_Place, Aitem);
        end if;
  
        <<Done>>
*************** package body Sem_Ch13 is
*** 2285,2291 ****
  
     procedure Analyze_One_Aspect
       (N        : Node_Id;
-       Ins_Node : in out Node_Id;
        E        : N_Entity_Id;
        Aspect   : Node_Id)
     is
--- 2252,2257 ----
*************** package body Sem_Ch13 is
*** 3795,3801 ****
        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;
  
--- 3761,3767 ----
        procedure Insert_Aitem (Is_Instance : Boolean := False) is
        begin
           Decorate_Aspect_Links (Aspect, Aitem);
!          Insert_Aitem (N, Aitem, Is_Instance);
           Delay_Required := False;
        end Insert_Aitem;
  
*************** package body Sem_Ch13 is
*** 5912,5926 ****
     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
--- 5878,5883 ----
*************** package body Sem_Ch13 is
*** 5941,5954 ****
        --  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);
--- 5898,5915 ----
        --  deal with delay of visibility for the expression analysis. Thus, we
        --  just insert the pragma after the node N.
  
+       Aspect : Node_Id := First (Aspect_Specifications (N));
+ 
+    --  Start of processing for Analyze_Aspect_Specifications
+ 
+    begin
        --  Loop through aspects
  
        while Present (Aspect) loop
           --  Skip aspect if already analyzed, to avoid looping in some cases
  
           if not Analyzed (Aspect) then
!             Analyze_One_Aspect (N, E, Aspect);
           end if;
  
           Next (Aspect);
*************** package body Sem_Ch13 is
*** 6063,6084 ****
              elsif Asp_Nam = Name_Post then
                 Misplaced_Aspect_Error (Asp, Name_Refined_Post);
  
              --  Otherwise a language-defined aspect is misplaced
  
              else
                 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);
--- 6024,6042 ----
              elsif Asp_Nam = Name_Post then
                 Misplaced_Aspect_Error (Asp, Name_Refined_Post);
  
+             --  Likely a misspelling of Initialize aspect (singular) that can
+             --  be used in stubs.
+ 
+             elsif Asp_Nam = Name_Initializes then
+                Error_Msg_Name_1 := Name_Initialize;
+                Error_Msg_N ("\possible misspelling of%", Asp);
+ 
              --  Otherwise a language-defined aspect is misplaced
  
              else
                 Error_Msg_N
                   ("aspect specification must appear on initial declaration",
                    Asp);
              end if;
  
              Next (Asp);
*************** package body Sem_Ch13 is
*** 10209,10214 ****
--- 10167,10175 ----
                       Next (Alt);
                    end loop;
  
+                   if Is_Empty_List (Choices) then
+                      return False_Range;
+                   end if;
                    return Membership_Entries (First (Choices), Static);
                 end;
  
*************** package body Sem_Ch13 is
*** 16783,16792 ****
             ("representation item must be after full type declaration", N);
           return True;
  
!       --  If the type has incomplete components, a representation clause is
        --  illegal but stream attributes and Convention pragmas are correct.
  
!       elsif Has_Private_Component (T) then
           if Nkind (N) = N_Pragma then
              return False;
  
--- 16744,16753 ----
             ("representation item must be after full type declaration", N);
           return True;
  
!       --  If the type is not completely defined, a representation clause is
        --  illegal but stream attributes and Convention pragmas are correct.
  
!       elsif Is_Incompletely_Defined (T) then
           if Nkind (N) = N_Pragma then
              return False;
  
*************** package body Sem_Ch13 is
*** 17018,17033 ****
        --  but avoid chaining if we have an overloadable entity, and the pragma
        --  is one that can apply to multiple overloaded entities.
  
!       if Is_Overloadable (T) and then Nkind (N) = N_Pragma then
!          declare
!             Pname : constant Name_Id := Pragma_Name (N);
!          begin
!             if Pname in Name_Convention | Name_Import | Name_Export
!                       | Name_External   | Name_Interface
!             then
!                return False;
!             end if;
!          end;
        end if;
  
        Record_Rep_Item (T, N);
--- 16979,16993 ----
        --  but avoid chaining if we have an overloadable entity, and the pragma
        --  is one that can apply to multiple overloaded entities.
  
!       if Is_Overloadable (T)
!         and then Nkind (N) = N_Pragma
!         and then Pragma_Name (N) in Name_Convention
!                                   | Name_Import
!                                   | Name_Export
!                                   | Name_External
!                                   | Name_Interface
!       then
!          return False;
        end if;
  
        Record_Rep_Item (T, N);
*************** package body Sem_Ch13 is
*** 18101,18106 ****
--- 18061,18086 ----
                 Error_Msg_N ("no match for Element iterable primitive", N);
              end if;
  
+          elsif Nam = Name_Constant_Reference then
+ 
+             --  Constant_Reference (Container, Cursor) =>
+             --    not null access constant Element_Type;
+ 
+             if No (F2)
+               or else Etype (F2) /= Cursor
+               or else Present (Next_Formal (F2))
+               or else not (Is_Anonymous_Access_Type (Etype (Ent))
+                            and then Is_Access_Constant (Etype (Ent)))
+             then
+                Error_Msg_N
+                  ("no match for Constant_Reference iterable primitive", N);
+ 
+             elsif not Can_Never_Be_Null (Etype (Ent)) then
+                Error_Msg_N
+                  ("return type of primitive for Constant_Reference must have "
+                   & "null exclusion", N);
+             end if;
+ 
           else
              raise Program_Error;
           end if;
*************** package body Sem_Ch13 is
*** 18166,18171 ****
--- 18146,18171 ----
                          Set_Entity (N, It.Nam);
                          exit;
                       end if;
+ 
+                   elsif Nam = Name_Constant_Reference then
+                      F2 := Next_Formal (F1);
+ 
+                      if Present (F2)
+                        and then No (Next_Formal (F2))
+                        and then Etype (F2) = Cursor
+                        and then Is_Anonymous_Access_Type (Etype (It.Nam))
+                        and then Is_Access_Constant (Etype (It.Nam))
+                      then
+                         Set_Entity (N, It.Nam);
+ 
+                         if not Can_Never_Be_Null (Etype (It.Nam)) then
+                            Error_Msg_N
+                              ("return type of primitive for "
+                               & "Constant_Reference must have null exclusion",
+                               N);
+                         end if;
+                         exit;
+                      end if;
                    end if;
                 end if;
  
*************** package body Sem_Ch13 is
*** 19371,19381 ****
        Prim   : Node_Id;
        Cursor : Entity_Id;
  
!       First_Id       : Entity_Id := Empty;
!       Last_Id        : Entity_Id := Empty;
!       Next_Id        : Entity_Id := Empty;
!       Has_Element_Id : Entity_Id := Empty;
!       Element_Id     : Entity_Id := Empty;
  
     begin
        if Nkind (Aggr) /= N_Aggregate then
--- 19371,19382 ----
        Prim   : Node_Id;
        Cursor : Entity_Id;
  
!       First_Id              : Entity_Id := Empty;
!       Last_Id               : Entity_Id := Empty;
!       Next_Id               : Entity_Id := Empty;
!       Has_Element_Id        : Entity_Id := Empty;
!       Element_Id            : Entity_Id := Empty;
!       Constant_Reference_Id : Entity_Id := Empty;
  
     begin
        if Nkind (Aggr) /= N_Aggregate then
*************** package body Sem_Ch13 is
*** 19432,19437 ****
--- 19433,19443 ----
              Resolve_Iterable_Operation (Expr, Cursor, Typ, Name_Element);
              Element_Id := Entity (Expr);
  
+          elsif Chars (Prim) = Name_Constant_Reference then
+             Resolve_Iterable_Operation
+               (Expr, Cursor, Typ, Name_Constant_Reference);
+             Constant_Reference_Id := Entity (Expr);
+ 
           else
              Error_Msg_N ("invalid name for iterable function", Prim);
           end if;
*************** package body Sem_Ch13 is
*** 19448,19454 ****
        elsif No (Has_Element_Id) then
           Error_Msg_N ("match for Has_Element primitive not found", ASN);
  
!       elsif No (Element_Id) or else No (Last_Id) then
           null;  --  optional
        end if;
     end Validate_Iterable_Aspect;
--- 19454,19467 ----
        elsif No (Has_Element_Id) then
           Error_Msg_N ("match for Has_Element primitive not found", ASN);
  
!       elsif Present (Element_Id) and then Present (Constant_Reference_Id) then
!          Error_Msg_N ("cannot provide both Element and Constant_Reference "
!                         & "primitives", ASN);
! 
!       elsif No (Element_Id)
!         or else No (Constant_Reference_Id)
!         or else No (Last_Id)
!       then
           null;  --  optional
        end if;
     end Validate_Iterable_Aspect;
*************** package body Sem_Ch13 is
*** 19459,19466 ****
  
     procedure Validate_Literal_Aspect (Typ : Entity_Id; ASN : Node_Id) is
        A_Id        : constant Aspect_Id := Get_Aspect_Id (ASN);
!       pragma Assert (A_Id in Aspect_Integer_Literal |
!                              Aspect_Real_Literal | Aspect_String_Literal);
        Func_Name   : constant Node_Id := Expression (ASN);
        Overloaded  : Boolean := Is_Overloaded (Func_Name);
  
--- 19472,19480 ----
  
     procedure Validate_Literal_Aspect (Typ : Entity_Id; ASN : Node_Id) is
        A_Id        : constant Aspect_Id := Get_Aspect_Id (ASN);
!       pragma Assert (A_Id in Aspect_Integer_Literal
!                            | Aspect_Real_Literal
!                            | Aspect_String_Literal);
        Func_Name   : constant Node_Id := Expression (ASN);
        Overloaded  : Boolean := Is_Overloaded (Func_Name);
  
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_ch13.ads gcc-17-20260607/gcc/ada/sem_ch13.ads
*** gcc-17-20260531/gcc/ada/sem_ch13.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_ch13.ads	Sun Jun  7 22:32:06 2026
*************** with Types; use Types;
*** 28,33 ****
--- 28,34 ----
  with Sem_Disp; use Sem_Disp;
  with Sinfo.Nodes; use Sinfo.Nodes;
  with Uintp; use Uintp;
+ with Namet; use Namet;
  
  package Sem_Ch13 is
     function All_Membership_Choices_Static (Expr : Node_Id) return Boolean;
*************** package Sem_Ch13 is
*** 386,389 ****
--- 387,422 ----
     procedure Uninstall_Discriminants (E : Entity_Id);
     --  Remove visibility to the discriminants of type entity E
  
+    function Is_Predicate_Static
+      (Expr : Node_Id; Nam : Name_Id; Warn : Boolean := True) return Boolean;
+    --  Given predicate expression Expr, tests if Expr is predicate-static in
+    --  the sense of the rules in (RM 3.2.4 (15-24)). Occurrences of the type
+    --  name in the predicate expression have been replaced by references to
+    --  an identifier whose Chars field is Nam. This name is unique, so any
+    --  identifier with Chars matching Nam must be a reference to the type.
+    --  Returns True if the expression is predicate-static and False otherwise,
+    --  but is not in the business of setting flags or issuing error messages.
+    --
+    --  Only scalar types can have static predicates, so False is always
+    --  returned for non-scalar types.
+    --
+    --  Note: the RM seems to suggest that string types can also have static
+    --  predicates. But that really makes little sense as very few useful
+    --  predicates can be constructed for strings. Remember that:
+    --
+    --     "ABC" < "DEF"
+    --
+    --  is not a static expression. So even though the clearly faulty RM wording
+    --  allows the following:
+    --
+    --     subtype S is String with Static_Predicate => S < "DEF"
+    --
+    --  We can't allow this, otherwise we have predicate-static applying to a
+    --  larger class than static expressions, which was never intended.
+    --
+    --  The Warn parameter is True iff this is not a recursive call. This
+    --  parameter is used to avoid generating warnings for subexpressions and
+    --  for cases where the predicate expression (as originally written by
+    --  the user, before any transformations) is a Boolean literal.
+ 
  end Sem_Ch13;
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_ch3.adb gcc-17-20260607/gcc/ada/sem_ch3.adb
*** gcc-17-20260531/gcc/ada/sem_ch3.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_ch3.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Ch3 is
*** 904,910 ****
        --  set, as required by gigi. This is necessary in the case of the
        --  Task_Body_Procedure.
  
!       if not Has_Private_Component (Desig_Type) then
           Layout_Type (Anon_Type);
        end if;
  
--- 904,910 ----
        --  set, as required by gigi. This is necessary in the case of the
        --  Task_Body_Procedure.
  
!       if not Is_Incompletely_Defined (Desig_Type) then
           Layout_Type (Anon_Type);
        end if;
  
*************** package body Sem_Ch3 is
*** 956,962 ****
           if Is_Limited_Record (Desig_Type)
             and then Is_Class_Wide_Type (Desig_Type)
           then
!             Build_Master_Entity (Defining_Identifier (Related_Nod));
              Build_Master_Renaming (Anon_Type);
  
           --  Similarly, if the type is an anonymous access that designates
--- 956,962 ----
           if Is_Limited_Record (Desig_Type)
             and then Is_Class_Wide_Type (Desig_Type)
           then
!             Build_Master_Entity (Related_Nod);
              Build_Master_Renaming (Anon_Type);
  
           --  Similarly, if the type is an anonymous access that designates
*************** package body Sem_Ch3 is
*** 965,971 ****
           elsif Has_Task (Desig_Type)
             and then Comes_From_Source (Related_Nod)
           then
!             Build_Master_Entity (Defining_Identifier (Related_Nod));
              Build_Master_Renaming (Anon_Type);
           end if;
        end if;
--- 965,971 ----
           elsif Has_Task (Desig_Type)
             and then Comes_From_Source (Related_Nod)
           then
!             Build_Master_Entity (Related_Nod);
              Build_Master_Renaming (Anon_Type);
           end if;
        end if;
*************** package body Sem_Ch3 is
*** 1385,1391 ****
              if From_Limited_With (Entity (S))
                and then not Is_Class_Wide_Type (Entity (S))
              then
!                Build_Master_Entity (T);
                 Build_Master_Renaming (T);
              end if;
  
--- 1385,1391 ----
              if From_Limited_With (Entity (S))
                and then not Is_Class_Wide_Type (Entity (S))
              then
!                Build_Master_Entity (Def);
                 Build_Master_Renaming (T);
              end if;
  
*************** package body Sem_Ch3 is
*** 2222,2228 ****
        --  If this component is private (or depends on a private type), flag the
        --  record type to indicate that some operations are not available.
  
!       P := Private_Component (T);
  
        if Present (P) then
  
--- 2222,2228 ----
        --  If this component is private (or depends on a private type), flag the
        --  record type to indicate that some operations are not available.
  
!       P := Partially_Visible_Part (T);
  
        if Present (P) then
  
*************** package body Sem_Ch3 is
*** 3421,3427 ****
  
        --  Some common processing for all types
  
!       Set_Depends_On_Private (T, Has_Private_Component (T));
        Check_Ops_From_Incomplete_Type;
  
        --  Both the declared entity, and its anonymous base type if one was
--- 3421,3427 ----
  
        --  Some common processing for all types
  
!       Set_Depends_On_Private (T, Is_Incompletely_Defined (T));
        Check_Ops_From_Incomplete_Type;
  
        --  Both the declared entity, and its anonymous base type if one was
*************** package body Sem_Ch3 is
*** 5800,5805 ****
--- 5800,5807 ----
           Set_Treat_As_Volatile (Id, Treat_As_Volatile (T));
           Set_Is_Generic_Type (Id, Is_Generic_Type (Base_Type (T)));
           Set_Convention (Id, Convention (T));
+          Set_Linker_Section_Pragma
+            (Id, Linker_Section_Pragma (Base_Type (T)));
        end Copy_Parent_Attributes;
  
     --  Start of processing for Analyze_Subtype_Declaration
*************** package body Sem_Ch3 is
*** 6291,6297 ****
        T := Etype (Id);
  
        Set_Is_Immediately_Visible   (Id, True);
!       Set_Depends_On_Private       (Id, Has_Private_Component (T));
        Set_Is_Descendant_Of_Address (Id, Is_Descendant_Of_Address (T));
  
        if Is_Interface (T) then
--- 6293,6299 ----
        T := Etype (Id);
  
        Set_Is_Immediately_Visible   (Id, True);
!       Set_Depends_On_Private       (Id, Is_Incompletely_Defined (T));
        Set_Is_Descendant_Of_Address (Id, Is_Descendant_Of_Address (T));
  
        if Is_Interface (T) then
*************** package body Sem_Ch3 is
*** 6814,6820 ****
           end if;
        end if;
  
!       Priv := Private_Component (Element_Type);
  
        if Present (Priv) then
  
--- 6816,6822 ----
           end if;
        end if;
  
!       Priv := Partially_Visible_Part (Element_Type);
  
        if Present (Priv) then
  
*************** package body Sem_Ch3 is
*** 7165,7175 ****
     --  Start of processing for Build_Access_Subprogram_Wrapper
  
     begin
!       if Ekind (Id) in E_Access_Subprogram_Type
!                      | E_Access_Protected_Subprogram_Type
!                      | E_Anonymous_Access_Protected_Subprogram_Type
!                      | E_Anonymous_Access_Subprogram_Type
!       then
           null;
  
        else
--- 7167,7173 ----
     --  Start of processing for Build_Access_Subprogram_Wrapper
  
     begin
!       if Ekind (Id) in Access_Subprogram_Kind then
           null;
  
        else
*************** package body Sem_Ch3 is
*** 7362,7368 ****
        Set_Size_Info          (Derived_Type, Parent_Type);
        Copy_RM_Size           (To => Derived_Type, From => Parent_Type);
        Set_Depends_On_Private (Derived_Type,
!                               Has_Private_Component (Derived_Type));
        Conditional_Delay      (Derived_Type, Subt);
  
        if Is_Access_Subprogram_Type (Derived_Type)
--- 7360,7366 ----
        Set_Size_Info          (Derived_Type, Parent_Type);
        Copy_RM_Size           (To => Derived_Type, From => Parent_Type);
        Set_Depends_On_Private (Derived_Type,
!                               Is_Incompletely_Defined (Derived_Type));
        Conditional_Delay      (Derived_Type, Subt);
  
        if Is_Access_Subprogram_Type (Derived_Type)
*************** package body Sem_Ch3 is
*** 8504,8510 ****
           Set_Is_Frozen             (Full_Der, False);
           Set_Freeze_Node           (Full_Der, Empty);
           Set_Depends_On_Private
!            (Full_Der, Has_Private_Component (Full_Der));
           Set_Is_Public             (Full_Der, Is_Public (Derived_Type));
           Set_Is_Implicit_Full_View (Full_Der);
  
--- 8502,8508 ----
           Set_Is_Frozen             (Full_Der, False);
           Set_Freeze_Node           (Full_Der, Empty);
           Set_Depends_On_Private
!            (Full_Der, Is_Incompletely_Defined (Full_Der));
           Set_Is_Public             (Full_Der, Is_Public (Derived_Type));
           Set_Is_Implicit_Full_View (Full_Der);
  
*************** package body Sem_Ch3 is
*** 13655,13661 ****
        end if;
  
        Set_First_Rep_Item     (Full, First_Rep_Item (Full_Base));
!       Set_Depends_On_Private (Full, Has_Private_Component (Full));
  
        --  When prefixed calls are enabled for untagged types, the subtype
        --  shares the primitive operations of its base type. Do this even
--- 13653,13659 ----
        end if;
  
        Set_First_Rep_Item     (Full, First_Rep_Item (Full_Base));
!       Set_Depends_On_Private (Full, Is_Incompletely_Defined (Full));
  
        --  When prefixed calls are enabled for untagged types, the subtype
        --  shares the primitive operations of its base type. Do this even
*************** package body Sem_Ch3 is
*** 14324,14330 ****
        Set_Size_Info                (Def_Id, T);
        Set_Is_Constrained           (Def_Id, Constraint_OK);
        Set_Directly_Designated_Type (Def_Id, Desig_Subtype);
!       Set_Depends_On_Private       (Def_Id, Has_Private_Component (Def_Id));
        Set_Is_Access_Constant       (Def_Id, Is_Access_Constant (T));
        Set_Can_Never_Be_Null        (Def_Id, Can_Never_Be_Null (T));
  
--- 14322,14329 ----
        Set_Size_Info                (Def_Id, T);
        Set_Is_Constrained           (Def_Id, Constraint_OK);
        Set_Directly_Designated_Type (Def_Id, Desig_Subtype);
!       Set_Depends_On_Private
!         (Def_Id, Is_Incompletely_Defined (Def_Id));
        Set_Is_Access_Constant       (Def_Id, Is_Access_Constant (T));
        Set_Can_Never_Be_Null        (Def_Id, Can_Never_Be_Null (T));
  
*************** package body Sem_Ch3 is
*** 14493,14499 ****
                               (Def_Id, Is_FLB_Array_Subtype);
        Set_Is_Aliased         (Def_Id, Is_Aliased (T));
        Set_Is_Independent     (Def_Id, Is_Independent (T));
!       Set_Depends_On_Private (Def_Id, Has_Private_Component (Def_Id));
  
        Set_Is_Private_Composite (Def_Id, Is_Private_Composite (T));
        Set_Is_Limited_Composite (Def_Id, Is_Limited_Composite (T));
--- 14492,14498 ----
                               (Def_Id, Is_FLB_Array_Subtype);
        Set_Is_Aliased         (Def_Id, Is_Aliased (T));
        Set_Is_Independent     (Def_Id, Is_Independent (T));
!       Set_Depends_On_Private (Def_Id, Is_Incompletely_Defined (Def_Id));
  
        Set_Is_Private_Composite (Def_Id, Is_Private_Composite (T));
        Set_Is_Limited_Composite (Def_Id, Is_Limited_Composite (T));
*************** package body Sem_Ch3 is
*** 14618,14624 ****
              Set_Etype                    (Itype, Base_Type      (Old_Type));
              Set_Size_Info                (Itype,                (Old_Type));
              Set_Directly_Designated_Type (Itype, Desig_Subtype);
!             Set_Depends_On_Private       (Itype, Has_Private_Component
                                                                  (Old_Type));
              Set_Is_Access_Constant       (Itype, Is_Access_Constant
                                                                  (Old_Type));
--- 14617,14623 ----
              Set_Etype                    (Itype, Base_Type      (Old_Type));
              Set_Size_Info                (Itype,                (Old_Type));
              Set_Directly_Designated_Type (Itype, Desig_Subtype);
!             Set_Depends_On_Private       (Itype, Is_Incompletely_Defined
                                                                  (Old_Type));
              Set_Is_Access_Constant       (Itype, Is_Access_Constant
                                                                  (Old_Type));
*************** package body Sem_Ch3 is
*** 14958,14964 ****
           Constrain_Discriminated_Type (Def_Id, SI, Related_Nod);
           Set_First_Private_Entity (Def_Id, First_Private_Entity (T_Ent));
  
!          Set_Depends_On_Private (Def_Id, Has_Private_Component (Def_Id));
           Set_Corresponding_Record_Type (Def_Id,
             Constrain_Corresponding_Record (Def_Id, T_Val, Related_Nod));
  
--- 14957,14963 ----
           Constrain_Discriminated_Type (Def_Id, SI, Related_Nod);
           Set_First_Private_Entity (Def_Id, First_Private_Entity (T_Ent));
  
!          Set_Depends_On_Private (Def_Id, Is_Incompletely_Defined (Def_Id));
           Set_Corresponding_Record_Type (Def_Id,
             Constrain_Corresponding_Record (Def_Id, T_Val, Related_Nod));
  
*************** package body Sem_Ch3 is
*** 15011,15017 ****
             (T_Sub, Related_Nod, Corr_Rec, Discriminant_Constraint (T_Sub));
        end if;
  
!       Set_Depends_On_Private      (T_Sub, Has_Private_Component (T_Sub));
  
        if Ekind (Scope (Prot_Subt)) /= E_Record_Type then
           Conditional_Delay (T_Sub, Corr_Rec);
--- 15010,15016 ----
             (T_Sub, Related_Nod, Corr_Rec, Discriminant_Constraint (T_Sub));
        end if;
  
!       Set_Depends_On_Private      (T_Sub, Is_Incompletely_Defined (T_Sub));
  
        if Ekind (Scope (Prot_Subt)) /= E_Record_Type then
           Conditional_Delay (T_Sub, Corr_Rec);
*************** package body Sem_Ch3 is
*** 15838,15844 ****
        Set_Is_Volatile_Full_Access (T1, Is_Volatile_Full_Access (T2));
        Set_Treat_As_Volatile       (T1, Treat_As_Volatile       (T2));
        Set_Is_Constrained          (T1, Is_Constrained          (T2));
!       Set_Depends_On_Private      (T1, Has_Private_Component   (T2));
        Inherit_Rep_Item_Chain      (T1,                          T2);
        Set_Convention              (T1, Convention              (T2));
        Set_Is_Limited_Composite    (T1, Is_Limited_Composite    (T2));
--- 15837,15843 ----
        Set_Is_Volatile_Full_Access (T1, Is_Volatile_Full_Access (T2));
        Set_Treat_As_Volatile       (T1, Treat_As_Volatile       (T2));
        Set_Is_Constrained          (T1, Is_Constrained          (T2));
!       Set_Depends_On_Private      (T1, Is_Incompletely_Defined (T2));
        Inherit_Rep_Item_Chain      (T1,                          T2);
        Set_Convention              (T1, Convention              (T2));
        Set_Is_Limited_Composite    (T1, Is_Limited_Composite    (T2));
*************** package body Sem_Ch3 is
*** 16610,16616 ****
  
        procedure Replace_Type (Id, New_Id : Entity_Id) is
           Id_Type  : constant Entity_Id := Etype (Id);
!          Par      : constant Node_Id := Parent (Derived_Type);
  
        begin
           --  When the type is an anonymous access type, create a new access
--- 16609,16615 ----
  
        procedure Replace_Type (Id, New_Id : Entity_Id) is
           Id_Type  : constant Entity_Id := Etype (Id);
!          Par      : constant Node_Id   := Parent (Derived_Type);
  
        begin
           --  When the type is an anonymous access type, create a new access
*************** package body Sem_Ch3 is
*** 16642,16652 ****
                 then
                    Acc_Type := New_Copy (Id_Type);
                    Set_Etype (Acc_Type, Acc_Type);
!                   Set_Scope (Acc_Type, New_Subp);
  
                    --  Set size of anonymous access type. If we have an access
!                   --  to an unconstrained array, this is a fat pointer, so it
!                   --  is sizes at twice addtress size.
  
                    if Is_Array_Type (Desig_Typ)
                      and then not Is_Constrained (Desig_Typ)
--- 16641,16651 ----
                 then
                    Acc_Type := New_Copy (Id_Type);
                    Set_Etype (Acc_Type, Acc_Type);
!                   Set_Scope (Acc_Type, Scope (Derived_Type));
  
                    --  Set size of anonymous access type. If we have an access
!                   --  to an unconstrained array, this is a fat pointer, so its
!                   --  size is twice the address size.
  
                    if Is_Array_Type (Desig_Typ)
                      and then not Is_Constrained (Desig_Typ)
*************** package body Sem_Ch3 is
*** 16659,16675 ****
                       Init_Size (Acc_Type, System_Address_Size);
                    end if;
  
!                   --  Set remaining characterstics of anonymous access type
  
                    Reinit_Alignment (Acc_Type);
                    Set_Directly_Designated_Type (Acc_Type, Derived_Type);
  
                    Set_Etype (New_Id, Acc_Type);
-                   Set_Scope (New_Id, New_Subp);
  
                    --  Create a reference to it
  
!                   Build_Itype_Reference (Acc_Type, Parent (Derived_Type));
  
                 else
                    Set_Etype (New_Id, Id_Type);
--- 16658,16673 ----
                       Init_Size (Acc_Type, System_Address_Size);
                    end if;
  
!                   --  Set remaining characteristics of anonymous access type
  
                    Reinit_Alignment (Acc_Type);
                    Set_Directly_Designated_Type (Acc_Type, Derived_Type);
  
                    Set_Etype (New_Id, Acc_Type);
  
                    --  Create a reference to it
  
!                   Build_Itype_Reference (Acc_Type, Par);
  
                 else
                    Set_Etype (New_Id, Id_Type);
*************** package body Sem_Ch3 is
*** 16869,16875 ****
  
           if Is_Limited_Interface (Parent_Type) then
              Set_Extra_Formal (New_Formal, Empty);
!             Set_Extra_Accessibility (New_Formal, Empty);
           end if;
  
           --  Normally we do not go copying parents, but in the case of
--- 16867,16873 ----
  
           if Is_Limited_Interface (Parent_Type) then
              Set_Extra_Formal (New_Formal, Empty);
!             Set_Extra_Accessibility_Of_Object (New_Formal, Empty);
           end if;
  
           --  Normally we do not go copying parents, but in the case of
*************** package body Sem_Ch3 is
*** 18235,18241 ****
  
        elsif (Is_Incomplete_Or_Private_Type (Parent_Type)
                and then not Comes_From_Generic (Parent_Type))
!         or else Has_Private_Component (Parent_Type)
        then
           --  The ancestor type of a formal type can be incomplete, in which
           --  case only the operations of the partial view are available in the
--- 18233,18239 ----
  
        elsif (Is_Incomplete_Or_Private_Type (Parent_Type)
                and then not Comes_From_Generic (Parent_Type))
!         or else Is_Incompletely_Defined (Parent_Type)
        then
           --  The ancestor type of a formal type can be incomplete, in which
           --  case only the operations of the partial view are available in the
*************** package body Sem_Ch3 is
*** 18247,18253 ****
              null;
  
           elsif No (Underlying_Type (Parent_Type))
!            or else Has_Private_Component (Parent_Type)
           then
              Error_Msg_N
                ("premature derivation of derived or private type", Indic);
--- 18245,18251 ----
              null;
  
           elsif No (Underlying_Type (Parent_Type))
!            or else Is_Incompletely_Defined (Parent_Type)
           then
              Error_Msg_N
                ("premature derivation of derived or private type", Indic);
*************** package body Sem_Ch3 is
*** 19252,19259 ****
  
           Set_Is_Local_Anonymous_Access
             (T, Ada_Version < Ada_2012
!                    or else Nkind (P) /= N_Object_Declaration
!                    or else Is_Library_Level_Entity (Defining_Identifier (P)));
  
        --  Otherwise, either the object definition is just a subtype_mark or we
        --  are analyzing a component declaration.
--- 19250,19258 ----
  
           Set_Is_Local_Anonymous_Access
             (T, Ada_Version < Ada_2012
!                  or else Nkind (P) /= N_Object_Declaration
!                  or else Is_Return_Object (Defining_Identifier (P))
!                  or else Is_Library_Level_Entity (Defining_Identifier (P)));
  
        --  Otherwise, either the object definition is just a subtype_mark or we
        --  are analyzing a component declaration.
*************** package body Sem_Ch3 is
*** 19301,19306 ****
--- 19300,19310 ----
  
        else
           Find_Type (S);
+          if not Is_Entity_Name (S) then
+             pragma Assert (Serious_Errors_Detected > 0);
+             --  Avoid passing bad argument to Entity
+             return Any_Type;
+          end if;
           Typ := Entity (S);
        end if;
  
*************** package body Sem_Ch3 is
*** 20254,20276 ****
       (C : Entity_Id;
        N : Node_Id := Empty) return Boolean
     is
!       Original_Comp : Entity_Id := Empty;
!       Original_Type : Entity_Id;
!       Type_Scope    : Entity_Id;
! 
!       function Is_Local_Type (Typ : Entity_Id) return Boolean;
!       --  Check whether parent type of inherited component is declared locally,
!       --  possibly within a nested package or instance. The current scope is
!       --  the derived record itself.
! 
!       -------------------
!       -- Is_Local_Type --
!       -------------------
! 
!       function Is_Local_Type (Typ : Entity_Id) return Boolean is
!       begin
!          return Scope_Within (Inner => Typ, Outer => Scope (Current_Scope));
!       end Is_Local_Type;
  
     --  Start of processing for Is_Visible_Component
  
--- 20258,20266 ----
       (C : Entity_Id;
        N : Node_Id := Empty) return Boolean
     is
!       Original_Comp : Entity_Id;
!       Original_Typ  : Entity_Id;
!       Typ           : Entity_Id;
  
     --  Start of processing for Is_Visible_Component
  
*************** package body Sem_Ch3 is
*** 20279,20300 ****
          and then Is_Not_Self_Hidden (C)
        then
           Original_Comp := Original_Record_Component (C);
        end if;
  
!       if No (Original_Comp) then
! 
!          --  Premature usage, or previous error
  
           return False;
- 
-       else
-          Original_Type := Scope (Original_Comp);
-          Type_Scope    := Scope (Base_Type (Scope (C)));
        end if;
  
        --  This test only concerns tagged types
  
!       if not Is_Tagged_Type (Original_Type) then
  
           --  Check if this is a renamed discriminant (hidden either by the
           --  derived type or by some ancestor), unless we are analyzing code
--- 20269,20290 ----
          and then Is_Not_Self_Hidden (C)
        then
           Original_Comp := Original_Record_Component (C);
+       else
+          Original_Comp := Empty;
        end if;
  
!       --  Bail out for premature usage or previous error
  
+       if No (Original_Comp) then
           return False;
        end if;
  
+       Original_Typ := Base_Type (Scope (Original_Comp));
+       Typ          := Base_Type (Scope (C));
+ 
        --  This test only concerns tagged types
  
!       if not Is_Tagged_Type (Original_Typ) then
  
           --  Check if this is a renamed discriminant (hidden either by the
           --  derived type or by some ancestor), unless we are analyzing code
*************** package body Sem_Ch3 is
*** 20314,20376 ****
        elsif not Comes_From_Source (Original_Comp) then
           return True;
  
        --  Discriminants are visible unless the (private) type has unknown
!       --  discriminants. If the discriminant reference is inserted for a
!       --  discriminant check on a full view it is also visible.
  
        elsif Ekind (Original_Comp) = E_Discriminant
!         and then
!           (not Has_Unknown_Discriminants (Original_Type)
!             or else (Present (N)
!                       and then Nkind (N) = N_Selected_Component
!                       and then Nkind (Prefix (N)) = N_Type_Conversion
!                       and then not Comes_From_Source (Prefix (N))))
        then
           return True;
  
        --  If the component has been declared in an ancestor which is currently
!       --  a private type, then it is not visible. The same applies if the
!       --  component's containing type is not in an open scope and the original
!       --  component's enclosing type is a visible full view of a private type
!       --  (which can occur in cases where an attempt is being made to reference
!       --  a component in a sibling package that is inherited from a visible
!       --  component of a type in an ancestor package; the component in the
!       --  sibling package should not be visible even though the component it
!       --  inherited from is visible), but instance bodies are not subject to
!       --  this second case since they have the Has_Private_View mechanism to
!       --  ensure proper visibility. This does not apply however in the case
!       --  where the scope of the type is a private child unit, or when the
!       --  parent comes from a local package in which the ancestor is currently
!       --  visible. The latter suppression of visibility is needed for cases
!       --  that are tested in B730006.
  
!       elsif Is_Private_Type (Original_Type)
!         or else
!           (not Is_Private_Descendant (Type_Scope)
!             and then not In_Open_Scopes (Type_Scope)
!             and then Has_Private_Declaration (Original_Type)
!             and then not In_Instance_Body)
        then
           --  If the type derives from an entity in a formal package, there
           --  are no additional visible components.
  
!          if Nkind (Original_Node (Unit_Declaration_Node (Type_Scope))) =
              N_Formal_Package_Declaration
           then
              return False;
  
!          --  if we are not in the private part of the current package, there
           --  are no additional visible components.
  
           elsif Ekind (Scope (Current_Scope)) = E_Package
             and then not In_Private_Part (Scope (Current_Scope))
           then
              return False;
           else
!             return
!               Is_Child_Unit (Cunit_Entity (Current_Sem_Unit))
!                 and then In_Open_Scopes (Scope (Original_Type))
!                 and then Is_Local_Type (Type_Scope);
           end if;
  
        --  There is another weird way in which a component may be invisible when
--- 20304,20372 ----
        elsif not Comes_From_Source (Original_Comp) then
           return True;
  
+       --  If the component reference is inserted for a discriminant check or
+       --  a validity check on a full view, then it is also visible.
+ 
+       elsif Present (N)
+         and then Nkind (N) = N_Selected_Component
+         and then
+           Nkind (Prefix (N)) in N_Type_Conversion | N_Unchecked_Type_Conversion
+         and then not Comes_From_Source (Prefix (N))
+       then
+          return True;
+ 
        --  Discriminants are visible unless the (private) type has unknown
!       --  discriminants.
  
        elsif Ekind (Original_Comp) = E_Discriminant
!         and then not Has_Unknown_Discriminants (Original_Typ)
        then
           return True;
  
        --  If the component has been declared in an ancestor which is currently
!       --  a private type, then it is not visible.
  
!       elsif Is_Private_Type (Original_Typ) then
!          return False;
! 
!       --  Likewise if the ancestor is a visible full view of a private type,
!       --  and the parent type is not in an open scope and was not declared in
!       --  a private child unit (which can occur in cases where an attempt is
!       --  being made to reference a component in a sibling package that is
!       --  inherited from a visible component of a type in an ancestor package;
!       --  the component in the sibling package is not be visible even though
!       --  the component it inherited from is visible), but instance bodies are
!       --  not subject to this second case since they have the Has_Private_View
!       --  mechanism to ensure proper visibility. This suppression of visibility
!       --  is needed for cases that are tested in ACATS B730006.
! 
!       elsif Has_Private_Declaration (Original_Typ)
!         and then not In_Open_Scopes (Scope (Typ))
!         and then not Is_Private_Descendant (Scope (Typ))
!         and then not In_Instance_Body
        then
           --  If the type derives from an entity in a formal package, there
           --  are no additional visible components.
  
!          if Nkind (Original_Node (Unit_Declaration_Node (Scope (Typ)))) =
              N_Formal_Package_Declaration
           then
              return False;
  
!          --  If we are not in the private part of the current package, there
           --  are no additional visible components.
  
           elsif Ekind (Scope (Current_Scope)) = E_Package
             and then not In_Private_Part (Scope (Current_Scope))
           then
              return False;
+ 
+          --  However, if the parent type is also declared in this private part,
+          --  possibly within a nested package or instance, then its components
+          --  are nevertheless visible.
+ 
           else
!             return Scope_Within (Scope (Typ), Scope (Current_Scope));
           end if;
  
        --  There is another weird way in which a component may be invisible when
*************** package body Sem_Ch3 is
*** 20392,20406 ****
  
           begin
              loop
!                if Ancestor = Original_Type then
                    return True;
  
                 --  The ancestor may have a partial view of the original type,
                 --  but if the full view is in scope, as in a child body, the
                 --  component is visible.
  
!                elsif In_Private_Part (Scope (Original_Type))
!                  and then Full_View (Ancestor) = Original_Type
                 then
                    return True;
  
--- 20388,20402 ----
  
           begin
              loop
!                if Ancestor = Original_Typ then
                    return True;
  
                 --  The ancestor may have a partial view of the original type,
                 --  but if the full view is in scope, as in a child body, the
                 --  component is visible.
  
!                elsif In_Private_Part (Scope (Original_Typ))
!                  and then Full_View (Ancestor) = Original_Typ
                 then
                    return True;
  
*************** package body Sem_Ch3 is
*** 21121,21128 ****
           --  attribute will be changed to a call, but the attribute by itself
           --  can occur with -gnatc.
  
           when N_Attribute_Reference =>
!             return Attribute_Name (Original_Node (Exp)) = Name_Input;
  
           --  "return raise ..." is OK
  
--- 21117,21128 ----
           --  attribute will be changed to a call, but the attribute by itself
           --  can occur with -gnatc.
  
+          --  Similarly, T'Make (GNAT-specific constructor attribute) is also
+          --  allowed because it is semantically equivalent to a function call.
+ 
           when N_Attribute_Reference =>
!             return Attribute_Name (Original_Node (Exp)) in Name_Input
!                                                          | Name_Make;
  
           --  "return raise ..." is OK
  
*************** package body Sem_Ch3 is
*** 22514,22519 ****
--- 22514,22540 ----
             (Underlying_Full_View (Full_T), Priv_T);
        end if;
  
+       --  Now that the full view is known, check any primitive equality
+       --  operators declared in the visible part against SPARK RM 6.9(23).
+       --  This check is deferred from Check_For_Primitive_Subprogram because
+       --  the full view of a private type is not available when the operator
+       --  is declared in the visible part of the package.
+ 
+       if Has_Primitive_Operations (Priv_T) then
+          declare
+             Prim : Elmt_Id := First_Elmt (Primitive_Operations (Priv_T));
+             Op   : Entity_Id;
+          begin
+             while Present (Prim) loop
+                Op := Node (Prim);
+                if Chars (Op) = Name_Op_Eq then
+                   Check_Ghost_Equality_Op (Op, Priv_T);
+                end if;
+                Next_Elmt (Prim);
+             end loop;
+          end;
+       end if;
+ 
     <<Leave>>
        Restore_Ghost_Region (Saved_Ghost_Config);
     end Process_Full_View;
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_ch4.adb gcc-17-20260607/gcc/ada/sem_ch4.adb
*** gcc-17-20260531/gcc/ada/sem_ch4.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_ch4.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Ch4 is
*** 274,280 ****
     is (Is_Visible_Operator (N => N, Typ => Typ)
           or else
             --  test for a rewritten Foo."+" call
!            (N /= Original_Node (N)
               and then Is_Effectively_Visible_Operator
                          (N => Original_Node (N), Typ => Typ))
           or else Checking_Potentially_Static_Expression
--- 274,280 ----
     is (Is_Visible_Operator (N => N, Typ => Typ)
           or else
             --  test for a rewritten Foo."+" call
!            (Is_Rewrite_Substitution (N)
               and then Is_Effectively_Visible_Operator
                          (N => Original_Node (N), Typ => Typ))
           or else Checking_Potentially_Static_Expression
*************** package body Sem_Ch4 is
*** 3068,3075 ****
--- 3068,3109 ----
           Act_List : List_Id;
           Expr     : Node_Id;
           Inst_Id  : Entity_Id;
+          Par      : Node_Id;
+          Prev_Par : Node_Id;
  
        begin
+          Prev_Par := N;
+          Par := Parent (N);
+ 
+          --  A structural instance cannot be used as a formal package with the
+          --  current implementation of structural instantiation.
+ 
+          while Present (Par) loop
+             if Nkind (Par) in N_Generic_Declaration
+               and then Is_List_Member (Prev_Par)
+               and then
+                 Generic_Formal_Declarations (Par) = List_Containing (Prev_Par)
+             then
+                Error_Msg_N
+                  ("structural instantiation cannot be used in generic formal"
+                   & " part", N);
+                Rewrite (N,
+                  Make_Raise_Program_Error (Sloc (N),
+                    Reason => PE_Explicit_Raise));
+                Analyze (N);
+                return;
+ 
+             else
+                --  Prevent the search from going too far
+ 
+                exit when Is_Statement (Par)
+                  or else Is_Body_Or_Package_Declaration (Par);
+             end if;
+ 
+             Prev_Par := Par;
+             Par := Parent (Par);
+          end loop;
+ 
           Act_List := New_List;
           Expr := First (Expressions (N));
           while Present (Expr) loop
*************** package body Sem_Ch4 is
*** 5396,5413 ****
  
           --  Another special case: the type is an extension of a private
           --  type T, either is an actual in an instance or is immediately
!          --  visible, and we are in the body of the instance, which means
!          --  the generic body had a full view of the type declaration for
!          --  T or some ancestor that defines the component in question.
           --  This happens because Is_Visible_Component returned False on
           --  this component, as T or the ancestor is still private since
           --  the Has_Private_View mechanism is bypassed because T or the
!          --  ancestor is not directly referenced in the generic body.
  
           if Is_Derived_Type (Typ)
             and then (Used_As_Generic_Actual (Base_Type (Typ))
                        or else Is_Immediately_Visible (Typ))
!            and then In_Instance_Body
             and then Present (Parent_Subtype (Typ))
           then
              Find_Component_In_Instance (Parent_Subtype (Typ));
--- 5430,5448 ----
  
           --  Another special case: the type is an extension of a private
           --  type T, either is an actual in an instance or is immediately
!          --  visible, and we are in an instance, which means the generic
!          --  unit had a full view of the type declaration of T or some
!          --  ancestor that defines the component in question.
! 
           --  This happens because Is_Visible_Component returned False on
           --  this component, as T or the ancestor is still private since
           --  the Has_Private_View mechanism is bypassed because T or the
!          --  ancestor is not directly referenced in the generic unit.
  
           if Is_Derived_Type (Typ)
             and then (Used_As_Generic_Actual (Base_Type (Typ))
                        or else Is_Immediately_Visible (Typ))
!            and then In_Instance
             and then Present (Parent_Subtype (Typ))
           then
              Find_Component_In_Instance (Parent_Subtype (Typ));
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_ch5.adb gcc-17-20260607/gcc/ada/sem_ch5.adb
*** gcc-17-20260531/gcc/ada/sem_ch5.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_ch5.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Ch5 is
*** 2724,2738 ****
           if Of_Present (N) then
              if Has_Aspect (Typ, Aspect_Iterable) then
                 declare
!                   Elt : constant Entity_Id :=
                            Get_Iterable_Type_Primitive (Typ, Name_Element);
                 begin
!                   if No (Elt) then
!                      Error_Msg_N
!                        ("missing Element primitive for iteration", N);
!                   else
                       Set_Etype (Def_Id, Etype (Elt));
                       Check_Reverse_Iteration (Typ);
                    end if;
                 end;
  
--- 2724,2748 ----
           if Of_Present (N) then
              if Has_Aspect (Typ, Aspect_Iterable) then
                 declare
!                   Elt     : constant Entity_Id :=
                            Get_Iterable_Type_Primitive (Typ, Name_Element);
+                   Cst_Ref : constant Entity_Id :=
+                           Get_Iterable_Type_Primitive
+                             (Typ, Name_Constant_Reference);
                 begin
!                   if Present (Elt) then
                       Set_Etype (Def_Id, Etype (Elt));
                       Check_Reverse_Iteration (Typ);
+ 
+                   elsif Present (Cst_Ref) then
+                      Set_Etype
+                        (Def_Id, Directly_Designated_Type (Etype (Cst_Ref)));
+                      Check_Reverse_Iteration (Typ);
+ 
+                   else
+                      Error_Msg_N
+                        ("missing Element or Constant_Reference primitive for "
+                           & "iteration", N);
                    end if;
                 end;
  
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_ch6.adb gcc-17-20260607/gcc/ada/sem_ch6.adb
*** gcc-17-20260531/gcc/ada/sem_ch6.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_ch6.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Ch6 is
*** 335,340 ****
--- 335,341 ----
        --  because of arcane interactions with ghost generics.
  
        New_Spec := Copy_Subprogram_Spec (Spec);
+       Mutate_Ekind (Defining_Unit_Name (New_Spec), E_Subprogram_Body);
        if not In_Instance then
           Set_Comes_From_Source (Defining_Unit_Name (New_Spec));
        end if;
*************** package body Sem_Ch6 is
*** 3743,3751 ****
--- 3744,3757 ----
        --  user entities, as internally generated entitities might still need
        --  to be expanded (e.g. those generated for types).
  
+       --  Do not disable expansion if the body comes from an expression
+       --  function as they are often the first freezing point of entities and
+       --  expansion is needed to freeze them properly.
+ 
        if not CodePeer_Mode
          and then Present (Ghost_Config.Ignored_Ghost_Region)
          and then Comes_From_Source (Body_Id)
+         and then not From_Expression_Function
        then
           Expander_Active := False;
        end if;
*************** package body Sem_Ch6 is
*** 5273,5283 ****
  
           Att_N    : constant Node_Id := Original_Node (N);
           Prefix_E : constant Entity_Id :=
!            Get_Name_Entity_Id (Chars (Prefix (Defining_Unit_Name (Att_N))));
           Att_Name : constant Name_Id :=
             Attribute_Name (Defining_Unit_Name (Att_N));
  
!          --  Start of processing for Analyze_Direct_Attribute_Definition
        begin
           pragma Assert (N /= Att_N);
  
--- 5279,5291 ----
  
           Att_N    : constant Node_Id := Original_Node (N);
           Prefix_E : constant Entity_Id :=
!            Get_Full_View
!              (Current_Entity (Prefix (Defining_Unit_Name (Att_N))));
           Att_Name : constant Name_Id :=
             Attribute_Name (Defining_Unit_Name (Att_N));
  
!       --  Start of processing for Analyze_Direct_Attribute_Definition
! 
        begin
           pragma Assert (N /= Att_N);
  
*************** package body Sem_Ch6 is
*** 7110,7118 ****
              end loop;
           end if;
  
!          --  Don't count pragmas
  
!          while Nkind (Last_Stm) = N_Pragma
  
             --  Don't count call to SS_Release (can happen after
             --  Raise_Exception).
--- 7118,7127 ----
              end loop;
           end if;
  
!          --  Don't count pragmas, unless they are assertions that expect to
!          --  fail.
  
!          while (Nkind (Last_Stm) = N_Pragma and then not Assert_False)
  
             --  Don't count call to SS_Release (can happen after
             --  Raise_Exception).
*************** package body Sem_Ch6 is
*** 9299,9305 ****
              pragma Assert (No (Alias_Formal)
                or else Present (Extra_Accessibility (Alias_Formal)));
  
!             Set_Extra_Accessibility
                (Formal, Add_Extra_Formal (Formal, Standard_Natural, E, "L"));
  
           else
--- 9308,9314 ----
              pragma Assert (No (Alias_Formal)
                or else Present (Extra_Accessibility (Alias_Formal)));
  
!             Set_Extra_Accessibility_Of_Object
                (Formal, Add_Extra_Formal (Formal, Standard_Natural, E, "L"));
  
           else
*************** package body Sem_Ch6 is
*** 9471,9477 ****
                (Formal_Typ, Incomplete_View_From_Limited_With (Result_Subt));
              Set_Etype (Formal_Typ, Formal_Typ);
              Set_Depends_On_Private
!               (Formal_Typ, Has_Private_Component (Formal_Typ));
              Set_Is_Public (Formal_Typ, Is_Public (Scope (Formal_Typ)));
              Set_Is_Access_Constant (Formal_Typ, False);
  
--- 9480,9486 ----
                (Formal_Typ, Incomplete_View_From_Limited_With (Result_Subt));
              Set_Etype (Formal_Typ, Formal_Typ);
              Set_Depends_On_Private
!               (Formal_Typ, Is_Incompletely_Defined (Formal_Typ));
              Set_Is_Public (Formal_Typ, Is_Public (Scope (Formal_Typ)));
              Set_Is_Access_Constant (Formal_Typ, False);
  
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_ch7.adb gcc-17-20260607/gcc/ada/sem_ch7.adb
*** gcc-17-20260531/gcc/ada/sem_ch7.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_ch7.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Ch7 is
*** 697,703 ****
              if Is_Type (Id)
                and then (Is_Limited_Composite (Id)
                           or else Is_Private_Composite (Id))
!               and then No (Private_Component (Id))
              then
                 Set_Is_Limited_Composite (Id, False);
                 Set_Is_Private_Composite (Id, False);
--- 697,703 ----
              if Is_Type (Id)
                and then (Is_Limited_Composite (Id)
                           or else Is_Private_Composite (Id))
!               and then No (Partially_Visible_Part (Id))
              then
                 Set_Is_Limited_Composite (Id, False);
                 Set_Is_Private_Composite (Id, False);
*************** package body Sem_Ch7 is
*** 2717,2723 ****
     begin
        if not Has_Completion (E)
          and then Nkind (P) = N_Package_Declaration
!         and then (Present (Activation_Chain_Entity (P)) or else Has_RACW (E))
        then
           B :=
             Make_Package_Body (Sloc (E),
--- 2717,2723 ----
     begin
        if not Has_Completion (E)
          and then Nkind (P) = N_Package_Declaration
!         and then (Has_Activation_Chain_Entity (E) or else Has_RACW (E))
        then
           B :=
             Make_Package_Body (Sloc (E),
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_ch9.adb gcc-17-20260607/gcc/ada/sem_ch9.adb
*** gcc-17-20260531/gcc/ada/sem_ch9.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_ch9.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Ch9 is
*** 2564,2570 ****
           end if;
  
        --  If we had a requeue of the form REQUEUE A (B), then the parser
!       --  accepted it (because it could have been a requeue on an entry index.
        --  If A turns out not to be an entry family, then the analysis of A (B)
        --  turned it into a function call.
  
--- 2564,2570 ----
           end if;
  
        --  If we had a requeue of the form REQUEUE A (B), then the parser
!       --  accepted it (because it could have been a requeue on an entry index).
        --  If A turns out not to be an entry family, then the analysis of A (B)
        --  turned it into a function call.
  
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_dist.adb gcc-17-20260607/gcc/ada/sem_dist.adb
*** gcc-17-20260531/gcc/ada/sem_dist.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_dist.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Dist is
*** 188,194 ****
  
        if Parent_Name /= No_String then
           Start_String (Parent_Name);
!          Store_String_Char (Get_Char_Code ('.'));
        else
           Start_String;
        end if;
--- 188,194 ----
  
        if Parent_Name /= No_String then
           Start_String (Parent_Name);
!          Store_String_Char ('.');
        else
           Start_String;
        end if;
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_elab.adb gcc-17-20260607/gcc/ada/sem_elab.adb
*** gcc-17-20260531/gcc/ada/sem_elab.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_elab.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Elab is
*** 2936,2941 ****
--- 2936,2949 ----
                   (List      => Private_Declarations (Context),
                    Task_Objs => Task_Objs);
  
+             --  Process all task objects in the actions when the activation
+             --  call appears in an EWA node.
+ 
+             elsif Nkind (Context) = N_Expression_With_Actions then
+                Traverse_List
+                  (List      => Actions (Context),
+                   Task_Objs => Task_Objs);
+ 
              --  Otherwise the context must be a block or a body. Process all
              --  task objects found in the declarations.
  
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_intr.adb gcc-17-20260607/gcc/ada/sem_intr.adb
*** gcc-17-20260531/gcc/ada/sem_intr.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_intr.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Intr is
*** 309,314 ****
--- 309,324 ----
        Nam  : Name_Id;
  
     begin
+       --  Intrinsic subprograms will be accompanied by a pragma, either a one
+       --  that comes from source, or a one that comes from translating the
+       --  corresponding aspect. Generic intrinsics subprograms don't have such
+       --  a pragma; only their instances have.
+ 
+       pragma Assert
+         (if Is_Subprogram (E)
+          then Present (Import_Pragma (E))
+          else Is_Generic_Subprogram (E));
+ 
        if Present (Spec)
          and then Present (Generic_Parent (Spec))
        then
*************** package body Sem_Intr is
*** 341,347 ****
        --  they are doing, and do not write or generate junk use of intrinsic.
  
        elsif not Comes_From_Source (E)
!         or else not Comes_From_Source (N)
          or else In_Predefined_Unit (N)
        then
           null;
--- 351,359 ----
        --  they are doing, and do not write or generate junk use of intrinsic.
  
        elsif not Comes_From_Source (E)
!         or else (Is_Subprogram (E)
!                    and then not Comes_From_Source (N)
!                    and then not From_Aspect_Specification (Import_Pragma (E)))
          or else In_Predefined_Unit (N)
        then
           null;
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_prag.adb gcc-17-20260607/gcc/ada/sem_prag.adb
*** gcc-17-20260531/gcc/ada/sem_prag.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_prag.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Prag is
*** 11540,11546 ****
  
           else
              Start_String;
!             Store_String_Char (Get_Char_Code ('*'));
              String_Val := Strval (Expr_Value_S (Link_Nam));
              Store_String_Chars (String_Val);
              Link_Nam :=
--- 11540,11546 ----
  
           else
              Start_String;
!             Store_String_Char ('*');
              String_Val := Strval (Expr_Value_S (Link_Nam));
              Store_String_Chars (String_Val);
              Link_Nam :=
*************** package body Sem_Prag is
*** 13595,13603 ****
                                            & "in pragma % "
                                            & "must be static"),
                                         Expr);
!                                  end if;
! 
!                                  if Is_False (Expr_Value (Expr)) then
                                      Is_Ghost := False;
  
                                      --  "Ghostness" cannot be turned off once
--- 13595,13601 ----
                                            & "in pragma % "
                                            & "must be static"),
                                         Expr);
!                                  elsif Is_False (Expr_Value (Expr)) then
                                      Is_Ghost := False;
  
                                      --  "Ghostness" cannot be turned off once
*************** package body Sem_Prag is
*** 13795,13807 ****
  
              --  Now set Ada 83 mode
  
!             if Latest_Ada_Only then
!                Error_Pragma ("??pragma% ignored");
!             else
!                Ada_Version          := Ada_83;
!                Ada_Version_Explicit := Ada_83;
!                Ada_Version_Pragma   := N;
!             end if;
  
           ------------
           -- Ada_95 --
--- 13793,13801 ----
  
              --  Now set Ada 83 mode
  
!             Ada_Version          := Ada_83;
!             Ada_Version_Explicit := Ada_83;
!             Ada_Version_Pragma   := N;
  
           ------------
           -- Ada_95 --
*************** package body Sem_Prag is
*** 13831,13843 ****
  
              --  Now set Ada 95 mode
  
!             if Latest_Ada_Only then
!                Error_Pragma ("??pragma% ignored");
!             else
!                Ada_Version          := Ada_95;
!                Ada_Version_Explicit := Ada_95;
!                Ada_Version_Pragma   := N;
!             end if;
  
           ---------------------
           -- Ada_05/Ada_2005 --
--- 13825,13833 ----
  
              --  Now set Ada 95 mode
  
!             Ada_Version          := Ada_95;
!             Ada_Version_Explicit := Ada_95;
!             Ada_Version_Pragma   := N;
  
           ---------------------
           -- Ada_05/Ada_2005 --
*************** package body Sem_Prag is
*** 13895,13907 ****
  
                 --  Now set appropriate Ada mode
  
!                if Latest_Ada_Only then
!                   Error_Pragma ("??pragma% ignored");
!                else
!                   Ada_Version          := Ada_2005;
!                   Ada_Version_Explicit := Ada_2005;
!                   Ada_Version_Pragma   := N;
!                end if;
              end if;
           end;
  
--- 13885,13893 ----
  
                 --  Now set appropriate Ada mode
  
!                Ada_Version          := Ada_2005;
!                Ada_Version_Explicit := Ada_2005;
!                Ada_Version_Pragma   := N;
              end if;
           end;
  
*************** package body Sem_Prag is
*** 15497,15502 ****
--- 15483,15492 ----
           --  restore the Ghost mode.
  
           when Pragma_Check => Check : declare
+             procedure Check_Assertion_Failure (Arg_Check : Node_Id);
+             --  Check whether an Assert or a Check pragma evaluates to False,
+             --  except when the condition was explicitly set to False, and emit
+             --  a warning.
  
              procedure Handle_Dynamic_Predicate_Check;
              --  Enable or ignore the pragma depending on whether dynamic
*************** package body Sem_Prag is
*** 15540,15545 ****
--- 15530,15581 ----
                 end if;
              end Handle_Dynamic_Predicate_Check;
  
+             -----------------------------
+             -- Check_Assertion_Failure --
+             -----------------------------
+ 
+             procedure Check_Assertion_Failure (Arg_Check : Node_Id) is
+                Orig_Check : Node_Id;
+             begin
+                if not Warn_On_Assertion_Failure
+                   or else not Is_Entity_Name (Arg_Check)
+                   or else not (Entity (Arg_Check) = Standard_False)
+                then
+                   return;
+                end if;
+ 
+                Orig_Check := Original_Node (Arg_Check);
+ 
+                --  Don't warn if original condition is explicit False, since
+                --  obviously the failure is expected in this case.
+ 
+                if Is_Entity_Name (Orig_Check)
+                  and then Entity (Orig_Check) = Standard_False
+                then
+                   return;
+                end if;
+ 
+                case Pname is
+                   when Name_Assert =>
+                      --  Note: Use Error_Msg_F here rather than Error_Msg_N.
+                      --  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.
+ 
+                      Error_Msg_F
+                         ("?.a?assertion would fail at run time!", Arg_Check);
+ 
+                   when Name_Check  =>
+                      Error_Msg_F
+                         ("?.a?check would fail at run time!", Arg_Check);
+                   when others =>
+                      null;
+                end case;
+             end Check_Assertion_Failure;
+ 
              --  Local variables
  
              Saved_Ghost_Config : constant Ghost_Config_Type := Ghost_Config;
*************** package body Sem_Prag is
*** 15554,15560 ****
              Arg_Message : Node_Id renames Args (3);
  
              Cname : Name_Id;
-             Eloc  : Source_Ptr;
  
           --  Start of processing for Pragma_Check
  
--- 15590,15595 ----
*************** package body Sem_Prag is
*** 15660,15733 ****
                 Preanalyze_And_Resolve (Arg_Message, Standard_String);
              end if;
  
-             --  Now you might think we could just do the same with the Boolean
-             --  expression if checks are off (and expansion is on) and then
-             --  rewrite the check as a null statement. This would work but we
-             --  would lose the useful warnings about an assertion being bound
-             --  to fail even if assertions are turned off.
- 
-             --  So instead we wrap the boolean expression in an if statement
-             --  that looks like:
- 
-             --    if False and then condition then
-             --       null;
-             --    end if;
- 
-             --  The reason we do this rewriting during semantic analysis rather
-             --  than as part of normal expansion is that we cannot analyze and
-             --  expand the code for the boolean expression directly, or it may
-             --  cause insertion of actions that would escape the attempt to
-             --  suppress the check code.
- 
-             --  Note that the Sloc for the if statement corresponds to the
-             --  argument condition, not the pragma itself. The reason for
-             --  this is that we may generate a warning if the condition is
-             --  False at compile time, and we do not want to delete this
-             --  warning when we delete the if statement.
- 
              if Expander_Active and Is_Ignored_In_Codegen (N) then
-                Eloc := Sloc (Arg_Check);
  
!                Rewrite (N,
!                  Make_If_Statement (Eloc,
!                    Condition =>
!                      Make_And_Then (Eloc,
!                        Left_Opnd  => Make_Identifier (Eloc, Name_False),
!                        Right_Opnd => Arg_Check),
!                    Then_Statements => New_List (
!                      Make_Null_Statement (Eloc))));
  
!                --  Now go ahead and analyze the if statement
  
                 In_Assertion_Expr := In_Assertion_Expr + 1;
  
!                --  One rather special treatment. If we are now in Eliminated
!                --  overflow mode, then suppress overflow checking since we do
!                --  not want to drag in the bignum stuff if we are in Ignore
!                --  mode anyway. This is particularly important if we are using
!                --  a configurable run time that does not support bignum ops.
! 
!                if Scope_Suppress.Overflow_Mode_Assertions = Eliminated then
!                   declare
!                      Svo : constant Boolean :=
!                              Scope_Suppress.Suppress (Overflow_Check);
!                   begin
!                      Scope_Suppress.Overflow_Mode_Assertions  := Strict;
!                      Scope_Suppress.Suppress (Overflow_Check) := True;
!                      Analyze (N);
!                      Scope_Suppress.Suppress (Overflow_Check) := Svo;
!                      Scope_Suppress.Overflow_Mode_Assertions  := Eliminated;
!                   end;
! 
!                --  Not that special case
  
!                else
!                   Analyze (N);
!                end if;
  
!                --  All done with this check
  
!                In_Assertion_Expr := In_Assertion_Expr - 1;
  
              --  Check is active or expansion not active. In these cases we can
              --  just go ahead and analyze the boolean with no worries.
--- 15695,15723 ----
                 Preanalyze_And_Resolve (Arg_Message, Standard_String);
              end if;
  
              if Expander_Active and Is_Ignored_In_Codegen (N) then
  
!                --  Even though technically ignored assertions are not ghost
!                --  code they should behave the same way. Meaning that they
!                --  should be analyzed but they should not affect the generated
!                --  code. Use the ignored ghost mechanism here to ensure that
!                --  the original pragma and any expanded code is also removed.
!                --  Ideally these two cases should be separated in the
!                --  implementation ???
  
!                Mark_Ghost_Pragma (N, Opt.Ignore);
  
                 In_Assertion_Expr := In_Assertion_Expr + 1;
+                Analyze_And_Resolve (Arg_Check, Any_Boolean);
+                In_Assertion_Expr := In_Assertion_Expr - 1;
  
!                --  Suppress any warnings on the condition we might get
  
!                Kill_Dead_Code (Arg_Check);
  
!                --  Warn if the condition is known to fail statically
  
!                Check_Assertion_Failure (Arg_Check);
  
              --  Check is active or expansion not active. In these cases we can
              --  just go ahead and analyze the boolean with no worries.
*************** package body Sem_Prag is
*** 21110,21115 ****
--- 21100,21117 ----
              end loop;
           end Interrupt_State;
  
+          ----------------------------------
+          -- Interrupts_System_By_Default --
+          ----------------------------------
+ 
+          --  pragma Interrupts_System_By_Default;
+ 
+          when Pragma_Interrupts_System_By_Default =>
+             GNAT_Pragma;
+             Check_Arg_Count (0);
+             Check_Valid_Configuration_Pragma;
+             Interrupts_System_By_Default := True;
+ 
           ---------------
           -- Invariant --
           ---------------
*************** package body Sem_Prag is
*** 22774,22791 ****
                 end if;
              end;
  
-          ----------------------------------
-          -- Interrupts_System_By_Default --
-          ----------------------------------
- 
-          --  pragma Interrupts_System_By_Default;
- 
-          when Pragma_Interrupts_System_By_Default =>
-             GNAT_Pragma;
-             Check_Arg_Count (0);
-             Check_Valid_Configuration_Pragma;
-             Interrupts_System_By_Default := True;
- 
           -----------------------
           -- No_Tagged_Streams --
           -----------------------
--- 22776,22781 ----
*************** package body Sem_Prag is
*** 34919,34924 ****
--- 34909,34915 ----
        Pragma_Interrupt_Handler              => -1,
        Pragma_Interrupt_Priority             => -1,
        Pragma_Interrupt_State                => -1,
+       Pragma_Interrupts_System_By_Default   =>  0,
        Pragma_Invariant                      => -1,
        Pragma_Keep_Names                     =>  0,
        Pragma_License                        =>  0,
*************** package body Sem_Prag is
*** 34949,34955 ****
        Pragma_No_Raise                       =>  0,
        Pragma_No_Return                      =>  0,
        Pragma_No_Run_Time                    => -1,
-       Pragma_Interrupts_System_By_Default   =>  0,
        Pragma_No_Strict_Aliasing             => -1,
        Pragma_No_Tagged_Streams              =>  0,
        Pragma_Normalize_Scalars              =>  0,
--- 34940,34945 ----
*************** package body Sem_Prag is
*** 35829,35843 ****
  
        procedure Encode is
        begin
!          Store_String_Char (Get_Char_Code ('_'));
!          Store_String_Char
!            (Get_Char_Code (Hex (Integer (CC / 2 ** 12))));
!          Store_String_Char
!            (Get_Char_Code (Hex (Integer (CC / 2 ** 8 and 16#0F#))));
!          Store_String_Char
!            (Get_Char_Code (Hex (Integer (CC / 2 ** 4 and 16#0F#))));
!          Store_String_Char
!            (Get_Char_Code (Hex (Integer (CC and 16#0F#))));
        end Encode;
  
     --  Start of processing for Set_Encoded_Interface_Name
--- 35819,35829 ----
  
        procedure Encode is
        begin
!          Store_String_Char ('_');
!          Store_String_Char (Hex (Integer (CC / 2 ** 12)));
!          Store_String_Char (Hex (Integer (CC / 2 ** 8 and 16#0F#)));
!          Store_String_Char (Hex (Integer (CC / 2 ** 4 and 16#0F#)));
!          Store_String_Char (Hex (Integer (CC and 16#0F#)));
        end Encode;
  
     --  Start of processing for Set_Encoded_Interface_Name
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_res.adb gcc-17-20260607/gcc/ada/sem_res.adb
*** gcc-17-20260531/gcc/ada/sem_res.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_res.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Res is
*** 1821,1827 ****
                       Orig_Type := Type_In_P (Is_Composite_Type'Access);
  
                       if Present (Orig_Type) then
!                         if Has_Private_Component (Orig_Type) then
                             Orig_Type := Empty;
                          else
                             Set_Etype (Act1, Orig_Type);
--- 1821,1827 ----
                       Orig_Type := Type_In_P (Is_Composite_Type'Access);
  
                       if Present (Orig_Type) then
!                         if Is_Incompletely_Defined (Orig_Type) then
                             Orig_Type := Empty;
                          else
                             Set_Etype (Act1, Orig_Type);
*************** package body Sem_Res is
*** 2053,2059 ****
        Parent_Id : Node_Id;
     begin
        if Nkind (IBT_Decl) = N_Full_Type_Declaration
!         and then Original_Node (IBT_Decl) /= IBT_Decl
          and then Nkind (Original_Node (IBT_Decl)) =
                   N_Full_Type_Declaration
          and then Nkind (Type_Definition (Original_Node (IBT_Decl)))
--- 2053,2059 ----
        Parent_Id : Node_Id;
     begin
        if Nkind (IBT_Decl) = N_Full_Type_Declaration
!         and then Is_Rewrite_Substitution (IBT_Decl)
          and then Nkind (Original_Node (IBT_Decl)) =
                   N_Full_Type_Declaration
          and then Nkind (Type_Definition (Original_Node (IBT_Decl)))
*************** package body Sem_Res is
*** 3767,3797 ****
  
              elsif Ekind (Etype (Nam)) = E_Anonymous_Access_Type
                and then Nkind (Parent (N)) = N_Type_Conversion
!               and then Type_Access_Level (Etype (Parent (N)))
!                          < Static_Accessibility_Level (A, Object_Decl_Level)
              then
                 Accessibility_Error ("conversion");
  
              elsif Ekind (Etype (Nam)) = E_Anonymous_Access_Type
                and then Nkind (Parent (N)) = N_Assignment_Statement
!               and then Static_Accessibility_Level
!                          (Name (Parent (N)), Object_Decl_Level)
!                            < Static_Accessibility_Level (A, Object_Decl_Level)
              then
                 Accessibility_Error ("assignment");
  
              elsif Nkind (Parent (N)) = N_Qualified_Expression
                and then Nkind (Parent (Parent (N))) = N_Allocator
!               and then Type_Access_Level (Etype (Parent (Parent (N))))
!                          < Static_Accessibility_Level (A, Object_Decl_Level)
              then
                 Accessibility_Error ("allocator");
  
              elsif In_Return_Value (N)
                and then Comes_From_Source (N)
!               and then Subprogram_Access_Level (Current_Subprogram)
!                          < Static_Accessibility_Level
!                              (A, Object_Decl_Level, In_Return_Context => True)
              then
                 Accessibility_Error ("return");
              end if;
--- 3767,3801 ----
  
              elsif Ekind (Etype (Nam)) = E_Anonymous_Access_Type
                and then Nkind (Parent (N)) = N_Type_Conversion
!               and then
!                 Type_Access_Level (Etype (Parent (N)))
!                   < Static_Accessibility_Level (A, Zero_On_Dynamic_Level)
              then
                 Accessibility_Error ("conversion");
  
              elsif Ekind (Etype (Nam)) = E_Anonymous_Access_Type
                and then Nkind (Parent (N)) = N_Assignment_Statement
!               and then
!                 Static_Accessibility_Level
!                   (Name (Parent (N)), Object_Decl_Level)
!                     < Static_Accessibility_Level (A, Zero_On_Dynamic_Level)
              then
                 Accessibility_Error ("assignment");
  
              elsif Nkind (Parent (N)) = N_Qualified_Expression
                and then Nkind (Parent (Parent (N))) = N_Allocator
!               and then
!                 Type_Access_Level (Etype (Parent (Parent (N))))
!                   < Static_Accessibility_Level (A, Zero_On_Dynamic_Level)
              then
                 Accessibility_Error ("allocator");
  
              elsif In_Return_Value (N)
                and then Comes_From_Source (N)
!               and then
!                 Subprogram_Access_Level (Current_Subprogram)
!                   < Static_Accessibility_Level
!                       (A, Zero_On_Dynamic_Level, In_Return_Context => True)
              then
                 Accessibility_Error ("return");
              end if;
*************** package body Sem_Res is
*** 4513,4563 ****
                    end if;
                 end if;
  
-                --  (Ada 2005: AI-251): If the actual is an allocator whose
-                --  directly designated type is a class-wide interface, we build
-                --  an anonymous access type to use it as the type of the
-                --  allocator. Later, when the subprogram call is expanded, if
-                --  the interface has a secondary dispatch table the expander
-                --  will add a type conversion to force the correct displacement
-                --  of the pointer.
- 
                 if Nkind (A) = N_Allocator then
                    declare
                       DDT : constant Entity_Id :=
                               Directly_Designated_Type (Base_Type (Etype (F)));
  
                    begin
!                      --  Displace the pointer to the object to reference its
!                      --  secondary dispatch table.
  
                       if Is_Class_Wide_Type (DDT)
                         and then Is_Interface (DDT)
                       then
!                         Rewrite (A, Convert_To (Etype (F), Relocate_Node (A)));
                          Flag_Interface_Pointer_Displacement (A);
! 
!                         Analyze_And_Resolve (A, Etype (F),
!                           Suppress => Access_Check);
                       end if;
  
!                      --  Ada 2005, AI-162:If the actual is an allocator, the
!                      --  innermost enclosing statement is the master of the
!                      --  created object. This needs to be done with expansion
!                      --  enabled only, otherwise the transient scope will not
!                      --  be removed in the expansion of the wrapped construct.
  
!                      if Expander_Active
!                        and then (Needs_Finalization (DDT)
!                                   or else Has_Task (DDT))
!                      then
!                         Establish_Transient_Scope
!                           (A, Manage_Sec_Stack => False);
                       end if;
                    end;
- 
-                   if Ekind (Etype (F)) = E_Anonymous_Access_Type then
-                      Check_Restriction (No_Access_Parameter_Allocators, A);
-                   end if;
                 end if;
  
                 --  (Ada 2005): The call may be to a primitive operation of a
--- 4517,4563 ----
                    end if;
                 end if;
  
                 if Nkind (A) = N_Allocator then
                    declare
                       DDT : constant Entity_Id :=
                               Directly_Designated_Type (Base_Type (Etype (F)));
  
                    begin
!                      --  Ada 2005, AI-251: If the actual is an allocator whose
!                      --  directly designated type is a class-wide interface, we
!                      --  build a type conversion to force the displacement of
!                      --  the pointer to reference the secondary dispatch table.
!                      --  Note that we need to resolve the allocator explicitly,
!                      --  otherwise its E_Allocator_Type will never be replaced,
!                      --  since it's now the operand of a type conversion.
  
                       if Is_Class_Wide_Type (DDT)
                         and then Is_Interface (DDT)
                       then
!                         Convert_To_And_Rewrite (Etype (F), A);
                          Flag_Interface_Pointer_Displacement (A);
!                         Resolve (Expression (A), Etype (F));
!                         Analyze_And_Resolve
!                           (A, Etype (F), Suppress => Access_Check);
                       end if;
  
!                      --  Ada 2005, AI-162: If the actual of an access parameter
!                      --  is an allocator, the innermost enclosing statement is
!                      --  the master of the created object. When the expander is
!                      --  active, establish a transient scope to embody it.
  
!                      if Ekind (Etype (F)) = E_Anonymous_Access_Type then
!                         Check_Restriction (No_Access_Parameter_Allocators, A);
! 
!                         if Expander_Active
!                           and then (Needs_Finalization (DDT)
!                                      or else Might_Have_Tasks (DDT))
!                         then
!                            Establish_Transient_Scope
!                              (A, Manage_Sec_Stack => False);
!                         end if;
                       end if;
                    end;
                 end if;
  
                 --  (Ada 2005): The call may be to a primitive operation of a
*************** package body Sem_Res is
*** 4812,4820 ****
                 --  component may initialize a nested component of a constant
                 --  designated object. In this context the object is variable.
  
                 if not Is_OK_Variable_For_Out_Formal (A)
!                  and then not Is_Init_Proc (Nam)
!                  and then not Is_Expanded_Constructor_Call (N)
                 then
                    Error_Msg_NE ("actual for& must be a variable", A, F);
  
--- 4812,4827 ----
                 --  component may initialize a nested component of a constant
                 --  designated object. In this context the object is variable.
  
+                --  Similarly, a constructor may be invoked to initialize a
+                --  constant variable, and this is allowed.
+ 
                 if not Is_OK_Variable_For_Out_Formal (A)
!                  and then not
!                    (A = First_Actual (N)
!                       and then
!                         (Is_Init_Proc (Nam)
!                            or else Is_Constructor (Nam)
!                            or else Is_Expanded_Constructor_Call (N)))
                 then
                    Error_Msg_NE ("actual for& must be a variable", A, F);
  
*************** package body Sem_Res is
*** 7484,7490 ****
                 --  -gnatd_f is set.
  
                 else
!                   if Debug_Flag_Underscore_F then
                       Error_Msg_NE
                         ("info: analyzing call to & in context?", N, Nam_UA);
                    end if;
--- 7491,7497 ----
                 --  -gnatd_f is set.
  
                 else
!                   if GNATprove_Inline_Success_Msg then
                       Error_Msg_NE
                         ("info: analyzing call to & in context?", N, Nam_UA);
                    end if;
*************** package body Sem_Res is
*** 11658,11664 ****
        B_Typ : constant Entity_Id := Base_Type (Typ);
        L     : constant Node_Id   := Left_Opnd  (N);
        R     : constant Node_Id   := Right_Opnd (N);
- 
     begin
        --  Ensure all actions associated with the left operand (e.g.
        --  finalization of transient objects) are fully evaluated locally within
--- 11665,11670 ----
*************** package body Sem_Res is
*** 11687,11787 ****
        Resolve (L, B_Typ);
        Resolve (R, B_Typ);
  
-       --  Check for issuing warning for always False assert/check, this happens
-       --  when assertions are turned off, in which case the pragma Assert/Check
-       --  was transformed into:
- 
-       --     if False and then <condition> then ...
- 
-       --  and we detect this pattern
- 
-       if Warn_On_Assertion_Failure
-         and then Is_Entity_Name (R)
-         and then Entity (R) = Standard_False
-         and then Nkind (Parent (N)) = N_If_Statement
-         and then Nkind (N) = N_And_Then
-         and then Is_Entity_Name (L)
-         and then Entity (L) = Standard_False
-       then
-          declare
-             Orig : constant Node_Id := Original_Node (Parent (N));
- 
-          begin
-             --  Special handling of Asssert pragma
- 
-             if Nkind (Orig) = N_Pragma
-               and then Pragma_Name (Orig) = Name_Assert
-             then
-                declare
-                   Expr : constant Node_Id :=
-                            Original_Node
-                              (Expression
-                                (First (Pragma_Argument_Associations (Orig))));
- 
-                begin
-                   --  Don't warn if original condition is explicit False,
-                   --  since obviously the failure is expected in this case.
- 
-                   if Is_Entity_Name (Expr)
-                     and then Entity (Expr) = Standard_False
-                   then
-                      null;
- 
-                   --  Issue warning. We do not want the deletion of the
-                   --  IF/AND-THEN to take this message with it. We achieve this
-                   --  by making sure that the expanded code points to the Sloc
-                   --  of the expression, not the original pragma.
- 
-                   else
-                      --  Note: Use Error_Msg_F here rather than Error_Msg_N.
-                      --  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.
- 
-                      Error_Msg_F
-                        ("?.a?assertion would fail at run time!",
-                         Expression
-                           (First (Pragma_Argument_Associations (Orig))));
-                   end if;
-                end;
- 
-             --  Similar processing for Check pragma
- 
-             elsif Nkind (Orig) = N_Pragma
-               and then Pragma_Name (Orig) = Name_Check
-             then
-                --  Don't want to warn if original condition is explicit False
- 
-                declare
-                   Expr : constant Node_Id :=
-                     Original_Node
-                       (Expression
-                         (Next (First (Pragma_Argument_Associations (Orig)))));
-                begin
-                   if Is_Entity_Name (Expr)
-                     and then Entity (Expr) = Standard_False
-                   then
-                      null;
- 
-                   --  Post warning
- 
-                   else
-                      --  Again use Error_Msg_F rather than Error_Msg_N, see
-                      --  comment above for an explanation of why we do this.
- 
-                      Error_Msg_F
-                        ("?.a?check would fail at run time!",
-                         Expression
-                           (Last (Pragma_Argument_Associations (Orig))));
-                   end if;
-                end;
-             end if;
-          end;
-       end if;
- 
        --  Continue with processing of short circuit
  
        Check_Unset_Reference (L);
--- 11693,11698 ----
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_util.adb gcc-17-20260607/gcc/ada/sem_util.adb
*** gcc-17-20260531/gcc/ada/sem_util.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_util.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Util is
*** 2612,2623 ****
                ("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))
--- 2612,2622 ----
                ("premature usage of incomplete}", N, First_Subtype (T));
           end if;
  
!       --  The other case is an incompletely defined type. 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 Is_Incompletely_Defined (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))
*************** package body Sem_Util is
*** 6763,6769 ****
  
        elsif Scope_Is_Transient then
           while Present (E) loop
!             exit when Scope (E) = CS or else Scope (E) = Scope (CS);
  
              E := Homonym (E);
           end loop;
--- 6762,6771 ----
  
        elsif Scope_Is_Transient then
           while Present (E) loop
!             exit when Scope (E) = CS
!               or else (Scope (E) = Scope (CS)
!                         and then N /= Name_uChain
!                         and then N /= Name_uMaster);
  
              E := Homonym (E);
           end loop;
*************** package body Sem_Util is
*** 7662,7674 ****
  
     begin
        while Present (Decl)
!         and then not (Nkind (Decl) in N_Declaration
!                         or else
!                       Nkind (Decl) in N_Later_Decl_Item
!                         or else
!                       Nkind (Decl) in N_Renaming_Declaration
!                         or else
!                       Nkind (Decl) = N_Number_Declaration)
        loop
           Decl := Parent (Decl);
        end loop;
--- 7664,7674 ----
  
     begin
        while Present (Decl)
!             and then not (Nkind (Decl) in
!               N_Declaration
!               | N_Later_Decl_Item
!               | N_Renaming_Declaration
!               | N_Number_Declaration)
        loop
           Decl := Parent (Decl);
        end loop;
*************** package body Sem_Util is
*** 11028,11034 ****
        pragma Assert
          (Is_Type (Typ)
           and then
!            Nam in Name_Element
                  | Name_First
                  | Name_Has_Element
                  | Name_Last
--- 11028,11035 ----
        pragma Assert
          (Is_Type (Typ)
           and then
!            Nam in Name_Constant_Reference
!                 | Name_Element
                  | Name_First
                  | Name_Has_Element
                  | Name_Last
*************** package body Sem_Util is
*** 11511,11532 ****
           end if;
  
           Assoc := First (Assocs);
           Choice := First (Choices (Assoc));
  
!          if Nkind (Choice) = N_Identifier then
!             return Present (Get_Assertion_Level (Chars (Choice)));
           end if;
  
!          return False;
        else
           pragma Assert (Nkind (N) = N_Pragma);
           Assocs := Pragma_Argument_Associations (N);
           Assoc := First (Assocs);
!          if Present (Assoc) and then Chars (Assoc) /= No_Name then
!             return Present (Get_Assertion_Level (Chars (Assoc)));
           end if;
  
!          return False;
        end if;
     end Has_Assertion_Level_Argument;
  
--- 11512,11538 ----
           end if;
  
           Assoc := First (Assocs);
+ 
+          if Nkind (Assoc) /= N_Component_Association then
+             return False;
+          end if;
+ 
           Choice := First (Choices (Assoc));
  
!          if Nkind (Choice) /= N_Identifier then
!             return False;
           end if;
  
!          return Present (Get_Assertion_Level (Chars (Choice)));
        else
           pragma Assert (Nkind (N) = N_Pragma);
           Assocs := Pragma_Argument_Associations (N);
           Assoc := First (Assocs);
!          if No (Assoc) or else Chars (Assoc) = No_Name then
!             return False;
           end if;
  
!          return Present (Get_Assertion_Level (Chars (Assoc)));
        end if;
     end Has_Assertion_Level_Argument;
  
*************** package body Sem_Util is
*** 13750,13816 ****
          N_Slice;
     end Has_Prefix;
  
-    ---------------------------
-    -- Has_Private_Component --
-    ---------------------------
- 
-    function Has_Private_Component (Type_Id : Entity_Id) return Boolean is
-       Btype     : Entity_Id := Base_Type (Type_Id);
-       Component : Entity_Id;
- 
-    begin
-       if Error_Posted (Type_Id)
-         or else Error_Posted (Btype)
-       then
-          return False;
-       end if;
- 
-       if Is_Class_Wide_Type (Btype) then
-          Btype := Root_Type (Btype);
-       end if;
- 
-       if Is_Private_Type (Btype) then
-          declare
-             UT : constant Entity_Id := Underlying_Type (Btype);
-          begin
-             if No (UT) then
-                if No (Full_View (Btype)) then
-                   return not Is_Generic_Type (Btype)
-                             and then
-                          not Is_Generic_Type (Root_Type (Btype));
-                else
-                   return not Is_Generic_Type (Root_Type (Full_View (Btype)));
-                end if;
-             else
-                return not Is_Frozen (UT) and then Has_Private_Component (UT);
-             end if;
-          end;
- 
-       elsif Is_Array_Type (Btype) then
-          return Has_Private_Component (Component_Type (Btype));
- 
-       elsif Is_Record_Type (Btype) then
-          Component := First_Component (Btype);
-          while Present (Component) loop
-             if Has_Private_Component (Etype (Component)) then
-                return True;
-             end if;
- 
-             Next_Component (Component);
-          end loop;
- 
-          return False;
- 
-       elsif Is_Protected_Type (Btype)
-         and then Present (Corresponding_Record_Type (Btype))
-       then
-          return Has_Private_Component (Corresponding_Record_Type (Btype));
- 
-       else
-          return False;
-       end if;
-    end Has_Private_Component;
- 
     --------------------------------
     -- Has_Relaxed_Initialization --
     --------------------------------
--- 13756,13761 ----
*************** package body Sem_Util is
*** 14823,14829 ****
  
              --  Check if we are the actual of an explicitly aliased parameter
              --  of a function call. This specific case seems to be missing in
!             --  the RM 10.3.2(10.5/5) rule, but is necessary to propagate the
              --  master of the call down the chain of nested function calls.
  
              when N_Function_Call => declare
--- 14768,14774 ----
  
              --  Check if we are the actual of an explicitly aliased parameter
              --  of a function call. This specific case seems to be missing in
!             --  the RM 3.10.2(10.5/5) rule, but is necessary to propagate the
              --  master of the call down the chain of nested function calls.
  
              when N_Function_Call => declare
*************** package body Sem_Util is
*** 14938,14971 ****
  
     function In_Reverse_Storage_Order_Object (N : Node_Id) return Boolean is
        Pref : Node_Id;
!       Btyp : Entity_Id := Empty;
  
     begin
!       --  Climb up indexed components
! 
!       Pref := N;
!       loop
!          case Nkind (Pref) is
!             when N_Selected_Component =>
!                Pref := Prefix (Pref);
!                exit;
! 
!             when N_Indexed_Component =>
!                Pref := Prefix (Pref);
  
!             when others =>
!                Pref := Empty;
!                exit;
!          end case;
!       end loop;
  
!       if Present (Pref) then
!          Btyp := Base_Type (Etype (Pref));
        end if;
- 
-       return Present (Btyp)
-         and then (Is_Record_Type (Btyp) or else Is_Array_Type (Btyp))
-         and then Reverse_Storage_Order (Btyp);
     end In_Reverse_Storage_Order_Object;
  
     ------------------------------
--- 14883,14902 ----
  
     function In_Reverse_Storage_Order_Object (N : Node_Id) return Boolean is
        Pref : Node_Id;
!       Btyp : Entity_Id;
  
     begin
!       if Nkind (N) in N_Indexed_Component | N_Selected_Component then
!          Pref := Prefix (N);
!          Btyp := Base_Type (Etype (Pref));
  
!          return Present (Btyp)
!            and then (Is_Record_Type (Btyp) or else Is_Array_Type (Btyp))
!            and then Reverse_Storage_Order (Btyp);
  
!       else
!          return False;
        end if;
     end In_Reverse_Storage_Order_Object;
  
     ------------------------------
*************** package body Sem_Util is
*** 18676,18681 ****
--- 18607,18701 ----
        return False;
     end Is_In_Context_Clause;
  
+    -----------------------------
+    -- Is_Incompletely_Defined --
+    -----------------------------
+ 
+    function Is_Incompletely_Defined (Type_Id : Entity_Id) return Boolean is
+    begin
+       return Present (Not_Fully_Declared_Part (Type_Id));
+    end Is_Incompletely_Defined;
+ 
+    -----------------------------
+    -- Not_Fully_Declared_Part --
+    -----------------------------
+ 
+    function Not_Fully_Declared_Part
+      (Type_Id : Entity_Id) return Entity_Id
+    is
+       Btype     : Entity_Id := Base_Type (Type_Id);
+       Component : Entity_Id;
+    begin
+       if Error_Posted (Type_Id) or else Error_Posted (Btype)
+       then
+          return Empty;
+       end if;
+ 
+       if Is_Class_Wide_Type (Btype) then
+          Btype := Root_Type (Btype);
+       end if;
+ 
+       if Is_Private_Type (Btype) then
+          declare
+             UT : constant Entity_Id := Underlying_Type (Btype);
+          begin
+             if No (UT) then
+                if No (Full_View (Btype)) then
+                   if not Is_Generic_Type (Btype)
+                     and then
+                   not Is_Generic_Type (Root_Type (Btype))
+                   then
+                      return Btype;
+                   end if;
+                else
+                   if not Is_Generic_Type (Root_Type (Full_View (Btype))) then
+                      return Btype;
+                   end if;
+                end if;
+             else
+                if not Is_Frozen (UT) then
+                   return Not_Fully_Declared_Part (UT);
+                end if;
+             end if;
+             return Empty;
+          end;
+ 
+       elsif Is_Array_Type (Btype) then
+          return Not_Fully_Declared_Part (Component_Type (Btype));
+ 
+       elsif Is_Record_Type (Btype) then
+          Component := First_Component (Btype);
+          declare
+             Inc_par : Entity_Id;
+          begin
+             while Present (Component) loop
+                Inc_par :=
+                  Not_Fully_Declared_Part (Etype (Component));
+                if Present (Inc_par) then
+                   if Is_Type (Inc_par) then
+                      return Component;
+                   else
+                      return Inc_par;
+                   end if;
+                end if;
+ 
+                Next_Component (Component);
+             end loop;
+ 
+             return Empty;
+          end;
+       elsif Is_Protected_Type (Btype)
+         and then Present (Corresponding_Record_Type (Btype))
+       then
+          return
+            Not_Fully_Declared_Part
+              (Corresponding_Record_Type (Btype));
+ 
+       else
+          return Empty;
+       end if;
+    end Not_Fully_Declared_Part;
+ 
     ---------------------------
     -- Is_Independent_Object --
     ---------------------------
*************** package body Sem_Util is
*** 25980,25986 ****
  
           if Reporting then
              if Is_Entity_Name (Name (N)) then
!                Error_Msg_N ("too many arguments in call to&", Name (N));
              else
                 Error_Msg_N ("too many arguments in call", N);
              end if;
--- 26000,26020 ----
  
           if Reporting then
              if Is_Entity_Name (Name (N)) then
!                if Ekind (S) = E_Enumeration_Literal then
!                   Error_Msg_N ("cannot index enumeration literal &", Name (N));
!                   if Present (Homonym (S))
!                     and then Sloc (Homonym (S)) = Standard_Location
!                   then
!                      Error_Msg_Qual_For_Standard := True;
!                      Error_Msg_Qual_Level := 1;
!                      Error_Msg_NE
!                        ("\\did you mean &'?", Name (N), Homonym (S));
!                      Error_Msg_Qual_For_Standard := False;
!                      Error_Msg_Qual_Level := 0;
!                   end if;
!                else
!                   Error_Msg_N ("too many arguments in call to&", Name (N));
!                end if;
              else
                 Error_Msg_N ("too many arguments in call", N);
              end if;
*************** package body Sem_Util is
*** 26690,26696 ****
           Item_Nam :=
             Chars (Original_Node (Pragma_Identifier (Original_Node (Item))));
  
!          if Item_Nam = Name_Check then
              --  Pragma "Check" preserves the original pragma name as its first
              --  argument.
              Item_Nam :=
--- 26724,26730 ----
           Item_Nam :=
             Chars (Original_Node (Pragma_Identifier (Original_Node (Item))));
  
!          if Item_Nam = Name_Check and then not Comes_From_Source (Item) then
              --  Pragma "Check" preserves the original pragma name as its first
              --  argument.
              Item_Nam :=
*************** package body Sem_Util is
*** 26980,26985 ****
--- 27014,27110 ----
        return Empty;
     end Param_Entity;
  
+    ------------------------------------
+    -- Partially_Visible_Subcomponent --
+    ------------------------------------
+ 
+    function Partially_Visible_Part (Type_Id : Entity_Id) return Entity_Id is
+       Ancestor : constant Entity_Id := Base_Type (Type_Id);
+ 
+       function Trace_Components
+         (T     : Entity_Id;
+          Check : Boolean) return Entity_Id;
+       --  Recursive function that does the work, and checks against circular
+       --  definition for each subcomponent type.
+ 
+       ----------------------
+       -- Trace_Components --
+       ----------------------
+ 
+       function Trace_Components
+         (T     : Entity_Id;
+          Check : Boolean) return Entity_Id
+       is
+          Btype     : constant Entity_Id := Base_Type (T);
+          Component : Entity_Id;
+          P         : Entity_Id;
+          Candidate : Entity_Id := Empty;
+ 
+       begin
+          if Check and then Btype = Ancestor then
+             Error_Msg_N ("circular type definition", Type_Id);
+             return Any_Type;
+          end if;
+ 
+          if Is_Private_Type (Btype) and then not Is_Generic_Type (Btype) then
+             if Present (Full_View (Btype))
+               and then Is_Record_Type (Full_View (Btype))
+               and then not Is_Frozen (Btype)
+             then
+                --  To indicate that the ancestor depends on a private type, the
+                --  current Btype is sufficient. However, to check for circular
+                --  definition we must recurse on the full view.
+ 
+                Candidate := Trace_Components (Full_View (Btype), True);
+ 
+                if Candidate = Any_Type then
+                   return Any_Type;
+                else
+                   return Btype;
+                end if;
+ 
+             else
+                return Btype;
+             end if;
+ 
+          elsif Is_Array_Type (Btype) then
+             return Trace_Components (Component_Type (Btype), True);
+ 
+          elsif Is_Record_Type (Btype) then
+             Component := First_Entity (Btype);
+             while Present (Component)
+               and then Comes_From_Source (Component)
+             loop
+                --  Skip anonymous types generated by constrained components
+ 
+                if not Is_Type (Component) then
+                   P := Trace_Components (Etype (Component), True);
+ 
+                   if Present (P) then
+                      if P = Any_Type then
+                         return P;
+                      else
+                         Candidate := P;
+                      end if;
+                   end if;
+                end if;
+ 
+                Next_Entity (Component);
+             end loop;
+ 
+             return Candidate;
+ 
+          else
+             return Empty;
+          end if;
+       end Trace_Components;
+ 
+    --  Start of processing for Private_Component
+ 
+    begin
+       return Trace_Components (Type_Id, False);
+    end Partially_Visible_Part;
+ 
     ----------------------
     -- Policy_In_Effect --
     ----------------------
*************** package body Sem_Util is
*** 27240,27336 ****
        end if;
     end Predicate_Tests_On_Arguments;
  
-    -----------------------
-    -- Private_Component --
-    -----------------------
- 
-    function Private_Component (Type_Id : Entity_Id) return Entity_Id is
-       Ancestor  : constant Entity_Id := Base_Type (Type_Id);
- 
-       function Trace_Components
-         (T     : Entity_Id;
-          Check : Boolean) return Entity_Id;
-       --  Recursive function that does the work, and checks against circular
-       --  definition for each subcomponent type.
- 
-       ----------------------
-       -- Trace_Components --
-       ----------------------
- 
-       function Trace_Components
-         (T     : Entity_Id;
-          Check : Boolean) return Entity_Id
-       is
-          Btype     : constant Entity_Id := Base_Type (T);
-          Component : Entity_Id;
-          P         : Entity_Id;
-          Candidate : Entity_Id := Empty;
- 
-       begin
-          if Check and then Btype = Ancestor then
-             Error_Msg_N ("circular type definition", Type_Id);
-             return Any_Type;
-          end if;
- 
-          if Is_Private_Type (Btype) and then not Is_Generic_Type (Btype) then
-             if Present (Full_View (Btype))
-               and then Is_Record_Type (Full_View (Btype))
-               and then not Is_Frozen (Btype)
-             then
-                --  To indicate that the ancestor depends on a private type, the
-                --  current Btype is sufficient. However, to check for circular
-                --  definition we must recurse on the full view.
- 
-                Candidate := Trace_Components (Full_View (Btype), True);
- 
-                if Candidate = Any_Type then
-                   return Any_Type;
-                else
-                   return Btype;
-                end if;
- 
-             else
-                return Btype;
-             end if;
- 
-          elsif Is_Array_Type (Btype) then
-             return Trace_Components (Component_Type (Btype), True);
- 
-          elsif Is_Record_Type (Btype) then
-             Component := First_Entity (Btype);
-             while Present (Component)
-               and then Comes_From_Source (Component)
-             loop
-                --  Skip anonymous types generated by constrained components
- 
-                if not Is_Type (Component) then
-                   P := Trace_Components (Etype (Component), True);
- 
-                   if Present (P) then
-                      if P = Any_Type then
-                         return P;
-                      else
-                         Candidate := P;
-                      end if;
-                   end if;
-                end if;
- 
-                Next_Entity (Component);
-             end loop;
- 
-             return Candidate;
- 
-          else
-             return Empty;
-          end if;
-       end Trace_Components;
- 
-    --  Start of processing for Private_Component
- 
-    begin
-       return Trace_Components (Type_Id, False);
-    end Private_Component;
- 
     ---------------------------
     -- Primitive_Names_Match --
     ---------------------------
--- 27365,27370 ----
*************** package body Sem_Util is
*** 30459,30465 ****
              return Typ;
           end if;
  
!       elsif Is_Derived_Type (Typ) then
           return Validated_View (Etype (Typ));
  
        elsif Is_Private_Type (Typ) then
--- 30493,30499 ----
              return Typ;
           end if;
  
!       elsif Is_Derived_Type (Typ) and then not Is_Tagged_Type (Typ) then
           return Validated_View (Etype (Typ));
  
        elsif Is_Private_Type (Typ) then
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_util.ads gcc-17-20260607/gcc/ada/sem_util.ads
*** gcc-17-20260531/gcc/ada/sem_util.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_util.ads	Sun Jun  7 22:32:06 2026
*************** package Sem_Util is
*** 1621,1630 ****
     function Has_Prefix (N : Node_Id) return Boolean;
     --  Return True if N has attribute Prefix
  
-    function Has_Private_Component (Type_Id : Entity_Id) return Boolean;
-    --  Check if a type has a (sub)component of a private type that has not
-    --  yet received a full declaration.
- 
     function Has_Relaxed_Initialization (E : Entity_Id) return Boolean;
     --  Returns True iff entity E is subject to the Relaxed_Initialization
     --  aspect. Entity E can be either type, variable, constant, subprogram or
--- 1621,1626 ----
*************** package Sem_Util is
*** 1760,1767 ****
     --  result of the enclosing function.
  
     function In_Reverse_Storage_Order_Object (N : Node_Id) return Boolean;
!    --  Returns True if N denotes a component or subcomponent in a record or
!    --  array that has Reverse_Storage_Order.
  
     function In_Same_Declarative_Part
       (Context : Node_Id;
--- 1756,1763 ----
     --  result of the enclosing function.
  
     function In_Reverse_Storage_Order_Object (N : Node_Id) return Boolean;
!    --  Returns True if N denotes a component in an array or a record that has
!    --  Reverse_Storage_Order.
  
     function In_Same_Declarative_Part
       (Context : Node_Id;
*************** package Sem_Util is
*** 2259,2264 ****
--- 2255,2277 ----
     --  Returns True if N appears within the context clause of a unit, and False
     --  for any other placement.
  
+    function Not_Fully_Declared_Part
+       (Type_Id : Entity_Id) return Entity_Id;
+    --  Given a type, returns the reason it is not "completely defined".
+    --  We say that a type is "completely defined" at a place that is after
+    --  its full type definition (if it has one) and after all of its
+    --  subcomponent types are completely defined (RM 3.11.1 (8)).
+    --  If the return value is not Empty, Type_Id is incompletely defined
+    --  and the returned value points to the responsible subcomponent.
+    --
+    --  Used to enforce the rules on type freezing (RM 13.14), which require
+    --  that a type must be completely defined before it is frozen.
+ 
+    function Is_Incompletely_Defined (Type_Id : Entity_Id) return Boolean;
+    --  Returns True iff Type_Id is incompletely defined. See RM 3.11.1 (8) for
+    --  the definition of "completely defined". Note that "incompletely defined"
+    --  is also used in the Ada RM, for example in RM 12.5.1 (1/5).
+ 
     function Is_Independent_Object (N : Node_Id) return Boolean;
     --  Determine whether arbitrary node N denotes a reference to an independent
     --  object as per RM C.6(8).
*************** package Sem_Util is
*** 3040,3045 ****
--- 3053,3069 ----
     --  of the corresponding formal entity, otherwise returns Empty. Also
     --  handles the case of references to renamings of formals.
  
+    function Partially_Visible_Part (Type_Id : Entity_Id) return Entity_Id;
+    --  If Type_Id is currently only partially visible, return Type_Id.
+    --  Otherwise, if there exist any subcomponents of Type_Id whose types are
+    --  currently only partially visible, returns the type of one such
+    --  subcomponent. Otherwise returns Empty. Used to enforce the rules on
+    --  visibility of operations on composite types, that depend on the full
+    --  view of the subcomponent types.
+    --
+    --  We say that a type is "partially visible" when it has a partial view
+    --  that is currently visible but no full view that is currently visible.
+ 
     function Policy_In_Effect
       (Policy : Name_Id;
        Level  : Name_Id := No_Name)
*************** package Sem_Util is
*** 3092,3104 ****
     --  with a special name to avoid being overridden (i.e. return true in case
     --  of entities with names "nameP" and "name" or vice versa).
  
-    function Private_Component (Type_Id : Entity_Id) return Entity_Id;
-    --  Returns some private component (if any) of the given Type_Id.
-    --  Used to enforce the rules on visibility of operations on composite
-    --  types, that depend on the full view of the component type. For a
-    --  record type there may be several such components, we just return
-    --  the first one.
- 
     procedure Process_End_Label
       (N   : Node_Id;
        Typ : Character;
--- 3116,3121 ----
*************** package Sem_Util is
*** 3559,3565 ****
     --  Obtain the "validated view" of arbitrary type Typ which is suitable for
     --  verification by attribute 'Valid_Scalars. This view is the type itself
     --  or its full view or nonlimited view, while stripping away concurrency,
!    --  derivations, and privacy.
  
     function Visible_Ancestors (Typ : Entity_Id) return Elist_Id;
     --  [Ada 2012:AI-0125-1]: Collect all the visible parents and progenitors
--- 3576,3582 ----
     --  Obtain the "validated view" of arbitrary type Typ which is suitable for
     --  verification by attribute 'Valid_Scalars. This view is the type itself
     --  or its full view or nonlimited view, while stripping away concurrency,
!    --  untagged derivation, and privacy.
  
     function Visible_Ancestors (Typ : Entity_Id) return Elist_Id;
     --  [Ada 2012:AI-0125-1]: Collect all the visible parents and progenitors
diff -Nrcpad gcc-17-20260531/gcc/ada/sem_warn.adb gcc-17-20260607/gcc/ada/sem_warn.adb
*** gcc-17-20260531/gcc/ada/sem_warn.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sem_warn.adb	Sun Jun  7 22:32:06 2026
*************** package body Sem_Warn is
*** 4423,4428 ****
--- 4423,4429 ----
              if Is_Formal (Ent)
                and then Is_Suspicious_Type (Typ)
                and then not Low_Bound_Tested (Ent)
+               and then Comes_From_Source (Ent)
              then
                 Test_Suspicious_Index;
              end if;
diff -Nrcpad gcc-17-20260531/gcc/ada/sinfo.ads gcc-17-20260607/gcc/ada/sinfo.ads
*** gcc-17-20260531/gcc/ada/sinfo.ads	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sinfo.ads	Sun Jun  7 22:32:06 2026
*************** package Sinfo is
*** 749,768 ****
     --    how this field is used, as well as the description of the specific use
     --    for a particular node type.
  
-    --  Activation_Chain_Entity
-    --    This is used in tree nodes representing task activators (blocks,
-    --    subprogram bodies, package declarations, and task bodies). It is
-    --    initially Empty, and then gets set to point to the entity for the
-    --    declared Activation_Chain variable when the first task is declared.
-    --    When tasks are declared in the corresponding declarative region this
-    --    entity is located by name (its name is always _Chain) and the declared
-    --    tasks are added to the chain. Note that N_Extended_Return_Statement
-    --    also has this attribute, although it is not really a task activator:
-    --    this chain is only used to store the tasks temporarily, and is not
-    --    used for activating them. On successful completion of the return
-    --    statement, the tasks are moved to the caller's chain, and the caller
-    --    activates them.
- 
     --  Acts_As_Spec
     --    A flag set in the N_Subprogram_Body node for a subprogram body which
     --    is acting as its own spec. In the case of a library-level subprogram
--- 749,754 ----
*************** package Sinfo is
*** 1264,1273 ****
     --    temporary for them.
  
     --  Expression_Copy
!    --    Present in N_Pragma_Argument_Association nodes. Contains a copy of the
!    --    original expression. This field is best used to store pragma-dependent
!    --    modifications performed on the original expression such as replacement
!    --    of the current type instance or substitutions of primitives.
  
     --  File_Index
     --    Present in N_External_Initializer nodes. Contains a Source_File_Index
--- 1250,1260 ----
     --    temporary for them.
  
     --  Expression_Copy
!    --    Present in N_Pragma_Argument_Association and N_Aspect_Specification
!    --    nodes. Contains a copy of the original expression. This field is best
!    --    used to store pragma-dependent modifications performed on the original
!    --    expression such as replacement of the current type instance or
!    --    substitutions of primitives.
  
     --  File_Index
     --    Present in N_External_Initializer nodes. Contains a Source_File_Index
*************** package Sinfo is
*** 5199,5205 ****
        --  Identifier block direct name (set to Empty if not present)
        --  Declarations (set to No_List if no DECLARE part)
        --  Handled_Statement_Sequence
-       --  Activation_Chain_Entity
        --  Cleanup_Actions
        --  At_End_Proc (set to Empty if no clean up procedure)
        --  Exception_Junk
--- 5186,5191 ----
*************** package Sinfo is
*** 5498,5504 ****
        --  Specification
        --  Declarations
        --  Handled_Statement_Sequence
-       --  Activation_Chain_Entity
        --  Corresponding_Spec
        --  At_End_Proc (set to Empty if no clean up procedure)
        --  Acts_As_Spec
--- 5484,5489 ----
*************** package Sinfo is
*** 5695,5701 ****
        --  Specification
        --  Corresponding_Body
        --  Parent_Spec
-       --  Activation_Chain_Entity
  
        --------------------------------
        -- 7.1  Package Specification --
--- 5680,5685 ----
*************** package Sinfo is
*** 6034,6040 ****
        --  Declarations
        --  Handled_Statement_Sequence
        --  Is_Task_Master
-       --  Activation_Chain_Entity
        --  Corresponding_Spec
        --  Was_Originally_Stub
  
--- 6018,6023 ----
*************** package Sinfo is
*** 6218,6224 ****
        --  Entry_Body_Formal_Part
        --  Declarations
        --  Handled_Statement_Sequence
-       --  Activation_Chain_Entity
        --  Corresponding_Spec
        --  At_End_Proc (set to Empty if no clean up procedure)
  
--- 6201,6206 ----
*************** package Sinfo is
*** 7625,7630 ****
--- 7607,7613 ----
        --  Next_Rep_Item
        --  Class_Present Set if 'Class present
        --  Is_Ignored
+       --  Expression_Copy
        --  Is_Checked
        --  Is_Delayed_Aspect
        --  Is_Disabled
diff -Nrcpad gcc-17-20260531/gcc/ada/snames.ads-tmpl gcc-17-20260607/gcc/ada/snames.ads-tmpl
*** gcc-17-20260531/gcc/ada/snames.ads-tmpl	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/snames.ads-tmpl	Sun Jun  7 22:32:06 2026
*************** package Snames is
*** 463,474 ****
     Name_Implicit_Packing               : constant Name_Id := N + $; -- GNAT
     Name_Initialize_Scalars             : constant Name_Id := N + $; -- GNAT
     Name_Interrupt_State                : constant Name_Id := N + $; -- GNAT
     Name_License                        : constant Name_Id := N + $; -- GNAT
     Name_Locking_Policy                 : constant Name_Id := N + $;
     Name_No_Component_Reordering        : constant Name_Id := N + $; -- GNAT
     Name_No_Heap_Finalization           : constant Name_Id := N + $; -- GNAT
     Name_No_Run_Time                    : constant Name_Id := N + $; -- GNAT
-    Name_Interrupts_System_By_Default   : constant Name_Id := N + $; -- GNAT
     Name_No_Strict_Aliasing             : constant Name_Id := N + $; -- GNAT
     Name_Normalize_Scalars              : constant Name_Id := N + $;
     Name_Optimize_Alignment             : constant Name_Id := N + $; -- GNAT
--- 463,474 ----
     Name_Implicit_Packing               : constant Name_Id := N + $; -- GNAT
     Name_Initialize_Scalars             : constant Name_Id := N + $; -- GNAT
     Name_Interrupt_State                : constant Name_Id := N + $; -- GNAT
+    Name_Interrupts_System_By_Default   : constant Name_Id := N + $; -- GNAT
     Name_License                        : constant Name_Id := N + $; -- GNAT
     Name_Locking_Policy                 : constant Name_Id := N + $;
     Name_No_Component_Reordering        : constant Name_Id := N + $; -- GNAT
     Name_No_Heap_Finalization           : constant Name_Id := N + $; -- GNAT
     Name_No_Run_Time                    : constant Name_Id := N + $; -- GNAT
     Name_No_Strict_Aliasing             : constant Name_Id := N + $; -- GNAT
     Name_Normalize_Scalars              : constant Name_Id := N + $;
     Name_Optimize_Alignment             : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 947,952 ****
--- 947,953 ----
     Name_Alignment                      : constant Name_Id := N + $;
     Name_Asm_Input                      : constant Name_Id := N + $; -- GNAT
     Name_Asm_Output                     : constant Name_Id := N + $; -- GNAT
+    Name_At                             : constant Name_Id := N + $; -- GNAT
     Name_Atomic_Always_Lock_Free        : constant Name_Id := N + $; -- GNAT
     Name_Bit                            : constant Name_Id := N + $; -- GNAT
     Name_Bit_Order                      : constant Name_Id := N + $;
*************** package Snames is
*** 1294,1300 ****
     Name_And                              : constant Name_Id := N + $;
     Name_All                              : constant Name_Id := N + $;
     Name_Array                            : constant Name_Id := N + $;
-    Name_At                               : constant Name_Id := N + $;
     Name_Begin                            : constant Name_Id := N + $;
     Name_Body                             : constant Name_Id := N + $;
     Name_Case                             : constant Name_Id := N + $;
--- 1295,1300 ----
*************** package Snames is
*** 1413,1418 ****
--- 1413,1419 ----
  
     --  Names used to implement iterators over predefined containers
  
+    Name_Constant_Reference               : constant Name_Id := N + $;
     Name_Cursor                           : constant Name_Id := N + $;
     Name_Element                          : constant Name_Id := N + $;
     Name_Has_Element                      : constant Name_Id := N + $;
*************** package Snames is
*** 1485,1490 ****
--- 1486,1492 ----
        Attribute_Alignment,
        Attribute_Asm_Input,
        Attribute_Asm_Output,
+       Attribute_At,
        Attribute_Atomic_Always_Lock_Free,
        Attribute_Bit,
        Attribute_Bit_Order,
*************** package Snames is
*** 1813,1824 ****
        Pragma_Implicit_Packing,
        Pragma_Initialize_Scalars,
        Pragma_Interrupt_State,
        Pragma_License,
        Pragma_Locking_Policy,
        Pragma_No_Component_Reordering,
        Pragma_No_Heap_Finalization,
        Pragma_No_Run_Time,
-       Pragma_Interrupts_System_By_Default,
        Pragma_No_Strict_Aliasing,
        Pragma_Normalize_Scalars,
        Pragma_Optimize_Alignment,
--- 1815,1826 ----
        Pragma_Implicit_Packing,
        Pragma_Initialize_Scalars,
        Pragma_Interrupt_State,
+       Pragma_Interrupts_System_By_Default,
        Pragma_License,
        Pragma_Locking_Policy,
        Pragma_No_Component_Reordering,
        Pragma_No_Heap_Finalization,
        Pragma_No_Run_Time,
        Pragma_No_Strict_Aliasing,
        Pragma_Normalize_Scalars,
        Pragma_Optimize_Alignment,
diff -Nrcpad gcc-17-20260531/gcc/ada/stringt.adb gcc-17-20260607/gcc/ada/stringt.adb
*** gcc-17-20260531/gcc/ada/stringt.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/stringt.adb	Sun Jun  7 22:32:06 2026
*************** package body Stringt is
*** 214,220 ****
     procedure Store_String_Chars (S : String) is
     begin
        for J in S'First .. S'Last loop
!          Store_String_Char (Get_Char_Code (S (J)));
        end loop;
     end Store_String_Chars;
  
--- 214,220 ----
     procedure Store_String_Chars (S : String) is
     begin
        for J in S'First .. S'Last loop
!          Store_String_Char (S (J));
        end loop;
     end Store_String_Chars;
  
diff -Nrcpad gcc-17-20260531/gcc/ada/switch-c.adb gcc-17-20260607/gcc/ada/switch-c.adb
*** gcc-17-20260531/gcc/ada/switch-c.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/switch-c.adb	Sun Jun  7 22:32:06 2026
*************** package body Switch.C is
*** 1572,1578 ****
  
                 Ptr := Ptr + 1;
  
!                if Switch_Chars (Ptr) /= '3' or else Latest_Ada_Only then
                    Bad_Switch ("-gnat8" & Switch_Chars (Ptr .. Max));
                 else
                    Ptr := Ptr + 1;
--- 1572,1578 ----
  
                 Ptr := Ptr + 1;
  
!                if Switch_Chars (Ptr) /= '3' then
                    Bad_Switch ("-gnat8" & Switch_Chars (Ptr .. Max));
                 else
                    Ptr := Ptr + 1;
*************** package body Switch.C is
*** 1590,1596 ****
  
                 Ptr := Ptr + 1;
  
!                if Switch_Chars (Ptr) /= '5' or else Latest_Ada_Only then
                    Bad_Switch ("-gnat9" & Switch_Chars (Ptr .. Max));
                 else
                    Ptr := Ptr + 1;
--- 1590,1596 ----
  
                 Ptr := Ptr + 1;
  
!                if Switch_Chars (Ptr) /= '5' then
                    Bad_Switch ("-gnat9" & Switch_Chars (Ptr .. Max));
                 else
                    Ptr := Ptr + 1;
*************** package body Switch.C is
*** 1608,1614 ****
  
                 Ptr := Ptr + 1;
  
!                if Switch_Chars (Ptr) /= '5' or else Latest_Ada_Only then
                    Bad_Switch ("-gnat0" & Switch_Chars (Ptr .. Max));
                 else
                    Ptr := Ptr + 1;
--- 1608,1614 ----
  
                 Ptr := Ptr + 1;
  
!                if Switch_Chars (Ptr) /= '5' then
                    Bad_Switch ("-gnat0" & Switch_Chars (Ptr .. Max));
                 else
                    Ptr := Ptr + 1;
*************** package body Switch.C is
*** 1641,1649 ****
                 if Ptr > Max - 3 then
                    Bad_Switch ("-gnat" & Switch_Chars (Ptr .. Max));
  
!                elsif Switch_Chars (Ptr .. Ptr + 3) = "2005"
!                  and then not Latest_Ada_Only
!                then
                    Ada_Version := Ada_2005;
  
                 elsif Switch_Chars (Ptr .. Ptr + 3) = "2012" then
--- 1641,1647 ----
                 if Ptr > Max - 3 then
                    Bad_Switch ("-gnat" & Switch_Chars (Ptr .. Max));
  
!                elsif Switch_Chars (Ptr .. Ptr + 3) = "2005" then
                    Ada_Version := Ada_2005;
  
                 elsif Switch_Chars (Ptr .. Ptr + 3) = "2012" then
diff -Nrcpad gcc-17-20260531/gcc/ada/sysdep.c gcc-17-20260607/gcc/ada/sysdep.c
*** gcc-17-20260531/gcc/ada/sysdep.c	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/sysdep.c	Sun Jun  7 22:32:06 2026
*************** getc_immediate_common (FILE *stream,
*** 409,420 ****
        /* Set RAW mode, with no echo */
        termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON & ~ECHO;
  
! #if defined (__linux__) || defined (__sun__) \
!     || defined (__MACHTEN__) || defined (__hpux__) \
!     || defined (_AIX) || (defined (__svr4__) && defined (__i386__)) \
!     || defined (__Lynx__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
!     || defined (__GLIBC__) || defined (__APPLE__) || defined (__DragonFly__) \
!     || defined (__QNX__)
        eof_ch = termios_rec.c_cc[VEOF];
  
        /* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
--- 409,415 ----
        /* Set RAW mode, with no echo */
        termios_rec.c_lflag = termios_rec.c_lflag & ~ICANON & ~ECHO;
  
! #if !defined (__CYGWIN32__)
        eof_ch = termios_rec.c_cc[VEOF];
  
        /* If waiting (i.e. Get_Immediate (Char)), set MIN = 1 and wait for
*************** long __gnat_invalid_tzoff = 259273;
*** 659,674 ****
  
  /* Definition of __gnat_localtime_r used by a-calend.adb */
  
  #if defined (__MINGW32__)
  
  /* Reentrant localtime for Windows. */
  
- extern void
- __gnat_localtime_tzoff (const OS_Time *, const int *, long *);
- 
  static const unsigned long long w32_epoch_offset = 11644473600ULL;
  void
! __gnat_localtime_tzoff (const OS_Time *timer, const int *is_historic, long *off)
  {
    TIME_ZONE_INFORMATION tzi;
  
--- 654,670 ----
  
  /* Definition of __gnat_localtime_r used by a-calend.adb */
  
+ extern void
+ __gnat_localtime_tzoff (OS_Time, int, long *);
+ 
  #if defined (__MINGW32__)
  
  /* Reentrant localtime for Windows. */
  
  static const unsigned long long w32_epoch_offset = 11644473600ULL;
+ 
  void
! __gnat_localtime_tzoff (OS_Time timer, int is_historic, long *off)
  {
    TIME_ZONE_INFORMATION tzi;
  
*************** __gnat_localtime_tzoff (const OS_Time *t
*** 681,687 ****
       signifies that the date is NOT historic, see the
       body of Ada.Calendar.UTC_Time_Offset. */
  
!   if (*is_historic == 0) {
      *off = tzi.Bias;
  
      /* The system is operating in the range covered by the StandardDate
--- 677,683 ----
       signifies that the date is NOT historic, see the
       body of Ada.Calendar.UTC_Time_Offset. */
  
!   if (is_historic == 0) {
      *off = tzi.Bias;
  
      /* The system is operating in the range covered by the StandardDate
*************** __gnat_localtime_tzoff (const OS_Time *t
*** 712,718 ****
      BOOL status;
  
      /* First convert unix time_t structure to windows FILETIME format.  */
!     utc_time.ull_time = ((unsigned long long) *timer + w32_epoch_offset)
                          * 10000000ULL;
  
      /* If GetTimeZoneInformation does not return a value between 0 and 2 then
--- 708,714 ----
      BOOL status;
  
      /* First convert unix time_t structure to windows FILETIME format.  */
!     utc_time.ull_time = ((unsigned long long) timer + w32_epoch_offset)
                          * 10000000ULL;
  
      /* If GetTimeZoneInformation does not return a value between 0 and 2 then
*************** __gnat_localtime_tzoff (const OS_Time *t
*** 757,767 ****
     spec is required. Only use when ___THREADS_POSIX4ad4__ is defined,
     the Lynx convention when building against the legacy API. */
  
- extern void
- __gnat_localtime_tzoff (const OS_Time *, const int *, long *);
- 
  void
! __gnat_localtime_tzoff (const OS_Time *timer, const int *is_historic, long *off)
  {
    *off = 0;
  }
--- 753,760 ----
     spec is required. Only use when ___THREADS_POSIX4ad4__ is defined,
     the Lynx convention when building against the legacy API. */
  
  void
! __gnat_localtime_tzoff (OS_Time timer, int is_historic, long *off)
  {
    *off = 0;
  }
*************** extern void (*Lock_Task) (void);
*** 776,791 ****
  #define Unlock_Task system__soft_links__unlock_task
  extern void (*Unlock_Task) (void);
  
- extern void
- __gnat_localtime_tzoff (const OS_Time *, const int *, long *);
- 
  void
! __gnat_localtime_tzoff (const OS_Time *timer ATTRIBUTE_UNUSED,
! 			const int *is_historic ATTRIBUTE_UNUSED,
  			long *off ATTRIBUTE_UNUSED)
  {
    struct tm tp ATTRIBUTE_UNUSED;
!   const time_t time = (time_t) *timer;
  
  /* AIX, HPUX, Sun Solaris */
  #if defined (_AIX) || defined (__hpux__) || defined (__sun__)
--- 769,781 ----
  #define Unlock_Task system__soft_links__unlock_task
  extern void (*Unlock_Task) (void);
  
  void
! __gnat_localtime_tzoff (OS_Time timer ATTRIBUTE_UNUSED,
! 			int is_historic ATTRIBUTE_UNUSED,
  			long *off ATTRIBUTE_UNUSED)
  {
    struct tm tp ATTRIBUTE_UNUSED;
!   const time_t time = (time_t) timer;
  
  /* AIX, HPUX, Sun Solaris */
  #if defined (_AIX) || defined (__hpux__) || defined (__sun__)
diff -Nrcpad gcc-17-20260531/gcc/ada/tbuild.adb gcc-17-20260607/gcc/ada/tbuild.adb
*** gcc-17-20260531/gcc/ada/tbuild.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/tbuild.adb	Sun Jun  7 22:32:06 2026
*************** with Opt;            use Opt;
*** 35,41 ****
  with Restrict;       use Restrict;
  with Rident;         use Rident;
  with Sinfo.Utils;    use Sinfo.Utils;
- with Sem_Util;       use Sem_Util;
  with Snames;         use Snames;
  with Stand;          use Stand;
  with Stringt;        use Stringt;
--- 35,40 ----
*************** package body Tbuild is
*** 328,360 ****
        Has_Created_Identifier : Boolean := False;
        End_Label              : Node_Id := Empty) return Node_Id
     is
!       P                  : Node_Id;
!       Check_Restrictions : Boolean := True;
!    begin
!       --  Do not check restrictions if the implicit loop statement is part
!       --  of a dead branch: False and then ...
!       --  This will occur in particular as part of the expansion of pragma
!       --  Assert when assertions are disabled.
! 
!       P := Parent (Node);
!       while Present (P) loop
!          if Nkind (P) = N_And_Then then
!             if Nkind (Left_Opnd (P)) = N_Identifier
!               and then Entity (Left_Opnd (P)) = Standard_False
!             then
!                Check_Restrictions := False;
!                exit;
!             end if;
! 
!          --  Prevent the search from going too far
! 
!          elsif Is_Body_Or_Package_Declaration (P) then
!             exit;
!          end if;
! 
!          P := Parent (P);
!       end loop;
  
        if Check_Restrictions then
           Check_Restriction (No_Implicit_Loops, Node);
  
--- 327,338 ----
        Has_Created_Identifier : Boolean := False;
        End_Label              : Node_Id := Empty) return Node_Id
     is
!       --  Avoid constraint checks in ignored ghost regions that are going to be
!       --  removed later.
  
+       Check_Restrictions : constant Boolean :=
+         Ghost_Config.Ghost_Mode /= Ignore;
+    begin
        if Check_Restrictions then
           Check_Restriction (No_Implicit_Loops, Node);
  
diff -Nrcpad gcc-17-20260531/gcc/ada/usage.adb gcc-17-20260607/gcc/ada/usage.adb
*** gcc-17-20260531/gcc/ada/usage.adb	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/ada/usage.adb	Sun Jun  7 22:32:06 2026
*************** begin
*** 715,737 ****
     Write_Switch_Char ("zr");
     Write_Line ("Distribution stub generation for receiver stubs");
  
!    if not Latest_Ada_Only then
! 
!       --  Line for -gnat83 switch
  
!       Write_Switch_Char ("83");
!       Write_Line ("Ada 83 mode");
  
!       --  Line for -gnat95 switch
  
!       Write_Switch_Char ("95");
!       Write_Line ("Ada 95 mode");
  
!       --  Line for -gnat2005 switch
  
!       Write_Switch_Char ("2005");
!       Write_Line ("Ada 2005 mode");
!    end if;
  
     --  Line for -gnat2012 switch
  
--- 715,734 ----
     Write_Switch_Char ("zr");
     Write_Line ("Distribution stub generation for receiver stubs");
  
!    --  Line for -gnat83 switch
  
!    Write_Switch_Char ("83");
!    Write_Line ("Ada 83 mode");
  
!    --  Line for -gnat95 switch
  
!    Write_Switch_Char ("95");
!    Write_Line ("Ada 95 mode");
  
!    --  Line for -gnat2005 switch
  
!    Write_Switch_Char ("2005");
!    Write_Line ("Ada 2005 mode");
  
     --  Line for -gnat2012 switch
  
diff -Nrcpad gcc-17-20260531/gcc/algol68/ChangeLog gcc-17-20260607/gcc/algol68/ChangeLog
*** gcc-17-20260531/gcc/algol68/ChangeLog	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/algol68/ChangeLog	Sun Jun  7 22:32:06 2026
***************
*** 1,3 ****
--- 1,29 ----
+ 2026-06-03  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* ga68.texi (Worthy characters): Remove spurious @ entry in the
+ 	list of worthy characters.
+ 
+ 2026-06-03  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* ga68.vw (Modes and nests): Incorporate syntax from the RR
+ 	chapter 7.
+ 
+ 2026-06-03  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* a68-parser-bottom-up.cc (recover_from_error): Use the output of
+ 	a68_phrase_to_text as format string so format tags are honored.
+ 
+ 2026-06-02  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* a68-parser-modes.cc (WELL): Define.
+ 	(NO_YIN): Likewise.
+ 	(NO_YANG): Likewise.
+ 	(UNWELL): Likewise.
+ 	(is_well_formed): Discriminate reason for the given mode to not be
+ 	well formed.
+ 	(a68_make_moid_list): Emit note explaining why a mode is not well
+ 	formed.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* a68-imports-archive.cc (struct Archive_fl_header): Fix typos.
diff -Nrcpad gcc-17-20260531/gcc/algol68/a68-parser-bottom-up.cc gcc-17-20260607/gcc/algol68/a68-parser-bottom-up.cc
*** gcc-17-20260531/gcc/algol68/a68-parser-bottom-up.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/algol68/a68-parser-bottom-up.cc	Sun Jun  7 22:32:06 2026
***************
*** 100,105 ****
--- 100,107 ----
  #include "coretypes.h"
  #include "options.h"
  
+ #include <string>
+ 
  #include "a68.h"
  #include "a68-pretty-print.h"
  
*************** recover_from_error (NODE_T * p, enum a68
*** 2836,2843 ****
  	}
        else
  	{
  	  a68_attr_format_token a (expect);
! 	  a68_error (w, "%s is an invalid %e", seq, &a);
  	}
  
      if (ERROR_COUNT (&A68_JOB) >= MAX_ERRORS)
--- 2838,2847 ----
  	}
        else
  	{
+ 	  std::string fmt = seq;
+ 	  fmt += " is an invalid %e";
  	  a68_attr_format_token a (expect);
! 	  a68_error (w, fmt.c_str (), &a);
  	}
  
      if (ERROR_COUNT (&A68_JOB) >= MAX_ERRORS)
diff -Nrcpad gcc-17-20260531/gcc/algol68/a68-parser-modes.cc gcc-17-20260607/gcc/algol68/a68-parser-modes.cc
*** gcc-17-20260531/gcc/algol68/a68-parser-modes.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/algol68/a68-parser-modes.cc	Sun Jun  7 22:32:06 2026
*************** get_mode_from_proc_var_declarations_tree
*** 801,817 ****
  /* Whether a mode declaration refers to self or relates to void.
     This uses Lindsey's ying-yang algorithm.  */
  
! static bool
! is_well_formed (MOID_T *def, MOID_T *z, bool yin, bool yang, bool video)
  {
    if (z == NO_MOID)
!     return false;
    else if (yin && yang)
!     return z == M_VOID ? video : true;
    else if (z == M_VOID)
      return video;
    else if (IS (z, STANDARD))
!     return true;
    else if (IS (z, INDICANT))
      {
        if (def == NO_MOID)
--- 801,822 ----
  /* Whether a mode declaration refers to self or relates to void.
     This uses Lindsey's ying-yang algorithm.  */
  
! #define WELL 0
! #define NO_YIN 1
! #define NO_YANG 2
! #define UNWELL 3
! 
! static int
! is_well_formed (MOID_T *def, MOID_T *z, bool yin, bool yang, int video)
  {
    if (z == NO_MOID)
!     return UNWELL;
    else if (yin && yang)
!     return z == M_VOID ? video : WELL;
    else if (z == M_VOID)
      return video;
    else if (IS (z, STANDARD))
!     return WELL;
    else if (IS (z, INDICANT))
      {
        if (def == NO_MOID)
*************** is_well_formed (MOID_T *def, MOID_T *z,
*** 822,871 ****
  	  if (z == M_VOID)
  	    return video;
  	  else
! 	    return true;
  	}
        else
  	{
  	  if (z == def || USE (z))
! 	    return yin && yang;
  	  else
  	    {
  	      USE (z) = true;
! 	      bool wwf = is_well_formed (def, EQUIVALENT (z), yin, yang, video);
  	      USE (z) = false;
! 	  return wwf;
  	    }
  	}
      }
    else if (IS_REF (z))
!     return is_well_formed (def, SUB (z), true, yang, false);
    else if (IS (z, PROC_SYMBOL))
!     return PACK (z) != NO_PACK ? true : is_well_formed (def, SUB (z), true, yang, true);
    else if (IS_ROW (z))
!     return is_well_formed (def, SUB (z), yin, yang, false);
    else if (IS_FLEX (z))
!     return is_well_formed (def, SUB (z), yin, yang, false);
    else if (IS (z, STRUCT_SYMBOL))
      {
        for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s))
  	{
! 	  if (!is_well_formed (def, MOID (s), yin, true, false))
! 	    return false;
  	}
!       return true;
      }
    else if (IS (z, UNION_SYMBOL))
      {
        for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s))
  	{
! 	  if (!is_well_formed (def, MOID (s), yin, yang, true))
! 	    return false;
  	}
!       return true;
      }
    else
      {
!       return false;
      }
  }
  
--- 827,885 ----
  	  if (z == M_VOID)
  	    return video;
  	  else
! 	    return WELL;
  	}
        else
  	{
  	  if (z == def || USE (z))
! 	    {
! 	      if (!yin)
! 		return NO_YIN;
! 	      else if (!yang)
! 		return NO_YANG;
! 	      else
! 		return WELL;
! 	    }
  	  else
  	    {
  	      USE (z) = true;
! 	      int wwf = is_well_formed (def, EQUIVALENT (z), yin, yang, video);
  	      USE (z) = false;
! 	      return wwf;
  	    }
  	}
      }
    else if (IS_REF (z))
!     return is_well_formed (def, SUB (z), true, yang, UNWELL);
    else if (IS (z, PROC_SYMBOL))
!     return PACK (z) != NO_PACK ? WELL : is_well_formed (def, SUB (z), true, yang, WELL);
    else if (IS_ROW (z))
!     return is_well_formed (def, SUB (z), yin, yang, UNWELL);
    else if (IS_FLEX (z))
!     return is_well_formed (def, SUB (z), yin, yang, UNWELL);
    else if (IS (z, STRUCT_SYMBOL))
      {
        for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s))
  	{
! 	  int wwf = is_well_formed (def, MOID (s), yin, true, UNWELL);
! 	  if (wwf != WELL)
! 	    return wwf;
  	}
!       return WELL;
      }
    else if (IS (z, UNION_SYMBOL))
      {
        for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s))
  	{
! 	  int wwf = is_well_formed (def, MOID (s), yin, yang, WELL);
! 	  if (wwf != WELL)
! 	    return wwf;
  	}
!       return WELL;
      }
    else
      {
!       return UNWELL;
      }
  }
  
*************** a68_make_moid_list (MODULE_T *mod)
*** 1334,1343 ****
      {
        if (IS (z, INDICANT) && EQUIVALENT (z) != NO_MOID)
  	{
! 	  if (!is_well_formed (z, EQUIVALENT (z), false, false, true))
  	    {
  	      a68_moid_format_token m (z);
  	      a68_error (NODE (z), "%e does not specify a well formed mode", &m);
  	      cont = false;
  	    }
  	}
--- 1348,1362 ----
      {
        if (IS (z, INDICANT) && EQUIVALENT (z) != NO_MOID)
  	{
! 	  int wwf = is_well_formed (z, EQUIVALENT (z), false, false, WELL);
! 	  if (wwf != WELL)
  	    {
  	      a68_moid_format_token m (z);
  	      a68_error (NODE (z), "%e does not specify a well formed mode", &m);
+ 	      if (wwf == NO_YIN)
+ 		a68_inform (NODE (z), "mode %e is infinite", &m);
+ 	      else if (wwf == NO_YANG)
+ 		a68_inform (NODE (z), "mode %e is strongly coercible to itself", &m);
  	      cont = false;
  	    }
  	}
*************** a68_make_moid_list (MODULE_T *mod)
*** 1349,1358 ****
  	;
        else if (NODE (z) != NO_NODE)
  	{
! 	  if (!is_well_formed (NO_MOID, z, false, false, true))
  	    {
  	      a68_moid_format_token m (z);
  	      a68_error (NODE (z), "%e does not specify a well formed mode", &m);
  	    }
  	}
      }
--- 1368,1382 ----
  	;
        else if (NODE (z) != NO_NODE)
  	{
! 	  int wwf = is_well_formed (NO_MOID, z, false, false, WELL);
! 	  if (wwf != WELL)
  	    {
  	      a68_moid_format_token m (z);
  	      a68_error (NODE (z), "%e does not specify a well formed mode", &m);
+ 	      if (wwf == NO_YIN)
+ 		a68_inform (NODE (z), "mode %e is infinite", &m);
+ 	      else if (wwf == NO_YANG)
+ 		a68_inform (NODE (z), "mode %e is strongly coercible to itself", &m);
  	    }
  	}
      }
diff -Nrcpad gcc-17-20260531/gcc/algol68/ga68.texi gcc-17-20260607/gcc/algol68/ga68.texi
*** gcc-17-20260531/gcc/algol68/ga68.texi	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/algol68/ga68.texi	Sun Jun  7 22:32:06 2026
*************** a b c d e f g h i j k l m n o p q r s t
*** 1519,1525 ****
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  0 1 2 3 4 5 6 7 8 9
  space tab " # $ % & ' ( ) * + , - . / : ; < = >  @@ [ \ ]
! ^ _ | @ ! ? ~ @{ @}
  @end example
  
  Some of the characters above were considered unworthy by the original
--- 1519,1525 ----
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  0 1 2 3 4 5 6 7 8 9
  space tab " # $ % & ' ( ) * + , - . / : ; < = >  @@ [ \ ]
! ^ _ | ! ? ~ @{ @}
  @end example
  
  Some of the characters above were considered unworthy by the original
diff -Nrcpad gcc-17-20260531/gcc/algol68/ga68.vw gcc-17-20260607/gcc/algol68/ga68.vw
*** gcc-17-20260531/gcc/algol68/ga68.vw	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/algol68/ga68.vw	Sun Jun  7 22:32:06 2026
*************** b) voided to{61A} void COMORF :
*** 1434,1439 ****
--- 1434,1631 ----
      b) PROC VOID (pp) (in PROC PROC VOID pp = PROC VOID : (print (1);
              VOID : print (2)); PROC VOID (pp);) }
  
+ 7 Modes and nests
+ 
+ { The syntax in this chapter formalizes the notion of indepencence
+   that all properties contained in a given reach must hold in order to
+   avoid ambiguity in applied indicators, the identification process
+   that assures every applied indicator corresponds to an existing
+   property, the structural equivalence of modes, and finally the
+   well-formedness of modes. }
+ 
+ 7.1 Independence of properties
+ 
+ 7.1.1 Syntax
+ 
+ A) PREF :: procedure yielding : REF to.
+ B) NONPREF :: PLAIN ; STOWED ;
+               procedure with PARAMETERS yielding MOID ; UNITD ; void.
+ C) *PREFSETY :: PREF PREFSETY ; EMPTY.
+ 
+ a) WHETHER PROP1 independent PROPS2 PROP2{a,48a,c,72a} :
+      WHETHER PROP1 independent PROPS2{a,c}
+              and PROP1 independent PROP2{c}.
+ b) WHETHER PROP independent EMPTY{48a,c,72a} : WHETHER true.
+ c) WHETHER QUALITY1 TAX1
+            independent QUALITY2 TAX2{a,48a,c,72a} :
+      unless (TAX1) is (TAX2), WHETHER true ;
+      where (TAX1) is (TAX2) and (TAX1) is (TAO),
+        WHETHER QUALITY1 independent QUALITY2{d}.
+ d) WHETHER QUALITY1 independent QUALITY2{c} :
+      where QUALITY1 related QUALITY2{e,f,g,h,i,j,-},
+        WHETHER false ;
+      unless QUALITY1 related QUALITY2{e,f,g,h,i,j,-},
+        WHETHER true.
+ 
+ e) WHETHER MONO related DUO{d} : WHETHER false.
+ f) WHETHER DUO related MONO{d} : WHETHER false.
+ g) WHETHER PRAM related DYADIC{d} : WHETHER false.
+ h) WHETHER DYADIC related PRAM{d} : WHETHER false.
+ i) WHETHER procedure with MODE1 parameter MODE2 parameter
+            yielding MOID1 related
+            procedure with MODE3 parameter MODE4 parameter
+            yielding MOID2{d} :
+      WHETHER MODE1 firmly related MODE3{k}
+              and MODE2 firmly related MODE4{k}.
+ j) WHETHER procedure with MODE1 parameter yielding MOID1
+            related procedure with MODE2 parameter yielding
+            MOID2{d} :
+      WHETHER MOD1 firmly related MODE2{k}.
+ 
+ k) WHETHER MOID1 firmly related MOID2{i,j} :
+      WHETHER MOODS1 is firm MOID2{l,m}
+              or MOODS2 is firm MOID1{l,m},
+        where (MOODS1) is (MOID1)
+              or (union of MOODS1 mode) is (MOID1),
+        where (MOODS2) is (MOID2)
+              or (union of MOODS2 mode) is (MOID2).
+ l) WHETHER MOODS MOOD is firm MOID{k,l} :
+      WHETHER MOODS is firm MOID{l,m}
+              or MOOD is firm MOID{m}.
+ m) WHETHER MOID1 is firm MOID2{k,l,n,47f} :
+      WHETHER MOID1 equivalent MOID2{73a}
+              or MOID1 unites to MOID2{64b}
+              or MOID1 deprefs to firm MOID2{n}.
+ n) WHETHER MOID1 deprefs to firm MOID2{m} :
+      where (MOID1) is (PREF MOID3),
+        WHETHER MOID5 is firm MOID2{m},
+        where MOID3 deflexes to MOID5{47a,b,c} ;
+      where (MOID1) is (NONPREF), WHETHER false.
+ 
+ 7.2 Identification in nests
+ 
+ 7.2.1 Syntax
+ 
+ a) WHETHER PROP identified in NEST new PROPSETY{a,48b,542a} :
+      where PROP resides in PROPSETY{b,c,-}, WHETHER true ;
+      where PROP independent PROPSETY{71a,b,c},
+        WHETHER PROP identified in NEST{a,-}.
+ 
+ b) WHETHER PROP1 resides in PROPS2 PROP2{a,b,48d} :
+      WHETHER PROP1 resides in PROP2{c,-}
+              or PROP1 resides in PROP2{b,c,-}.
+ c) WHETHER QUALITY1 TAX resides in QUALITY2 TAX{a,b,48d} :
+      where (QUALITY1) is (label) or (QUALITY1) is (DYADIC)
+            or (QUALITY1) is (MODE field),
+        WHETHER (QUALITY1) is (QUALITY2) ;
+      where (QUALITY1) is (MOID1 TALLETY)
+            and (QUALITY2) is (MOID2 TALLETY),
+        WHETHER MOID1 equivalent MOID2{73a}.
+ 
+ 7.3 Equivalence of modes
+ 
+ 7.3.1 Syntax
+ 
+ A) SAFE :: safe ; MU has MODE SAFE ; yin SAFE ; yang SAFE ;
+            remember MOID1 MOID2 SAFE.
+ B) HEAD :: PLAIN ; PREF{71A} ; structured with ;
+            FLEXETY ROWS of ; proecedure with ; union of ; void.
+ C) TAILETY :: MOID ; FIELDS mode ; PARAMETERS yielding MOID ;
+               MOODS mode ; EMPTY.
+ D) PARTS :: PART ; PARTS PART.
+ E) PART :: FIELD ; PARAMETER.
+ 
+ a) WHETHER MOID1 equivalent MOID2{64b,71m,72c} :
+      WHETHER safe MOID1 equivalent safe MOID2{b}.
+ b) WHETHER SAFE1 MOID1 equivalent SAFE2 MOID2{a,b,e,i,j,n} :
+      where (SAFE1) contains (remember MOID1 MOID2)
+            or (SAFE2) contains (remember MOID2 MOID1),
+        WHETHER true ;
+      unless (SAFE1) contains (remember MOID1 MOID2)
+             or (SAFE2) contains (remember MOID2 MOID1),
+        WEHTHER (HEAD3) is (HEAD4)
+                and remember MOID1 MOID2 SAFE3 TAILETY3
+                equivalent SAFE4 TAILETY4{b,d,e,k,q,-},
+        where SAFE3 HEAD3 TAILETY3 develops from
+              SAFE1 MOID1{c}
+              and SAFE4 HEAD4 TAILETY4 develops from
+              SAFE2 MOID2{c}.
+ c) WHETHER SAFE2 HEAD TAILETY develops from SAFE1 MOID{b,c} :
+      where (MOID) is (HEAD TAILETY),
+        WHETHER (HEAD) shields SAFE1 to SAFE2{74a,b,c,d,-} ;
+      where (MOID) is (MU definition of MODE),
+        unless (SAFE1) contains (MU has),
+        WHETHER SAFE2 HEAD TAILETY develops from
+                MU has MODE SAFE1 MODE{c} ;
+      where (MOID) is (MU application)
+            and (SAFE1) is (NOTION MU has MODE SAFE3)
+            and (NOTION) contains (yin) and (NOTION) contains (yang),
+        WHETHER SAFE2 HEAD TEILETY develops from
+                SAFE1 MODE{c}.
+ d) WHETHER SAFE1 FIELDS1 mode
+            equivalent SAFE2 FIELDS2 mode{b} :
+      WHETHER SAFE1 FIELDS1 equivalent SAFE2 FIELDS2{f,g,h,i}.
+ e) WHETHER SAFE1 PARAMETERS1 yielding MOID1
+            equivalent SAFE2 PARAMETERS2 yielding MOID2{b} :
+      WHETHER SAFE1 PARAMETERS1
+              equivalent SAFE2 PARAMETERS2{f,g,h,j}
+              and SAFE1 MOID1 equivalent SAFE2 MOID2{b}.
+ f) WHETHER SAFE1 PARTS1 PART1
+            equivalent SAFE2 PARTS2 PART2{d,e,f} :
+      WHETHER SAFE1 PARTS1 equivalent SAFE2 PARTS2{f,g,h,i,j}
+              and SAFE1 PART1 equivalent SAFE2 PART2{i,j}.
+ g) WHETHER SAFE1 PARTS1 PART1 equivalent
+            SAFE2 PART2{d,e,f} :
+      WHETHER false.
+ h) WHETHER SAFE1 PART1 equivalent
+            SAFE2 PARTS2 PART2{d,e,f} :
+      WHETHER false.
+ i) WHETHER SAFE1 MODE1 field TAG1
+            equivalent SAFE2 MODE2 field TAG2{d,f} :
+      WHETHER (TAG1) is (TAG2)
+              and SAFE1 MODE1 equivalent SAFE2 MODE2{b}.
+ j) WHETHER SAFE1 MODE1 parameter
+            equivalent SAFE2 MODE2 parameter{e,f} :
+      WHETHER SAFE1 MODE1 equivalent SAFE2 MODE2{b}.
+ k) WHETHER SAFE1 MOODS1 mode equivalent
+            SAFE2 MOODS2 mode{b} :
+      WHETHER SAFE1 MOODS1 subset of SAFE2 MOODS2{l,m,n}
+              and SAFE2 MOODS2 subset of SAFE1 MOODS1{l,m,n}
+              and MOODS1 number equals MOODS2 number{o,p}.
+ l) WHETHER SAFE1 MOODS1 MOOD1
+            subset of SAFE2 MOODS2{k.l,46s,64b} :
+      WHETHER SAFE1 MOODS1 subset of SAFE2 MOODS2{l,m,n}
+              and SAFE1 MOOD1 subset of SAFE2 MOODS2{m,n}.
+ m) WHETHER SAFE1 MOOD1
+            subset of SAFE2 MOODS2 MOOD2{k.l,m,46s,64b} :
+      WHETHER SAFE1 MOOD1 subset of SAFE2 MOODS2{m,n}
+              or SAFE1 MOOD1 subset of SAFE2 MOOD2{n}.
+ n) WHETHER SAFE1 MOOD1 subset of SAFE2 MOOD2{k,l,m,64b} :
+      WHETHER SAFE1 MOOD1 equivalent SAFE2 MOOD2{b}.
+ o) WHETHER MOODS1 MOOD1 number equals
+            MOODS2 MOOD2 number{k,o} :
+      WHETHER MOODS1 number equals MOODS2 number{o,p,-}.
+ p) WHETHER MOOD1 number equals MOOD2 number{k.o} :
+      WHETHER true.
+ q) WHETHER SAFE1 EMPTY equivalent SAFE2 EMPTY{b} :
+      WHETHER true.
+ 
+ 7.4 Well-formedness
+ 
+ 7.4.1 Syntax
+ 
+ a) WHETHER (NOTION) shields SAFE to SAFE{73c} :
+      where (NOTION) is (PLAIN)
+            or (NOTION) is (FLEXETY ROWS of)
+            or (NOTION) is (union of) or (NOTION) is (void),
+        WHETHER true.
+ b) WHETHER (PREF) shields SAFE to yin SAFE{73c} :
+      WHETHER true.
+ c) WHETHER (structured with) shields SAFE to yang SAFE{73c} :
+      WHETHER true.
+ d) WHETHER (procedure with) shields SAFE to yin yang SAFE{73c} :
+      WHETHER true.
+ 
  8 Denotations
  
  8.1 Plain denotations
diff -Nrcpad gcc-17-20260531/gcc/avoid-store-forwarding.cc gcc-17-20260607/gcc/avoid-store-forwarding.cc
*** gcc-17-20260531/gcc/avoid-store-forwarding.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/avoid-store-forwarding.cc	Sun Jun  7 22:32:06 2026
*************** process_store_forwarding (vec<store_fwd_
*** 420,439 ****
        stores.ordered_remove (move_to_front);
      }
  
!   if (load_elim)
      {
!       machine_mode outer_mode = GET_MODE (SET_DEST (load));
!       rtx load_move;
!       rtx load_value = dest;
        if (outer_mode != load_mem_mode)
  	{
! 	  load_value = simplify_gen_unary (GET_CODE (SET_SRC (load)),
! 					   outer_mode, dest, load_mem_mode);
  	}
!       load_move = gen_rtx_SET (SET_DEST (load), load_value);
  
        start_sequence ();
!       rtx_insn *insn = emit_insn (load_move);
        rtx_insn *seq = end_sequence ();
  
        if (recog_memoized (insn) < 0)
--- 420,453 ----
        stores.ordered_remove (move_to_front);
      }
  
!   machine_mode outer_mode = GET_MODE (SET_DEST (load));
!   if (load_elim || outer_mode != load_mem_mode)
      {
!       /* If the load is being eliminated, emit a move (with extension if
! 	 needed) from the temp register to the original load destination.
! 	 Otherwise, if the load has SIGN_EXTEND or ZERO_EXTEND wrapping
! 	 the MEM, the bit insert sequence may have modified bits that
! 	 affect the extension (e.g. the sign bit), so re-apply it.  */
!       rtx move_src;
        if (outer_mode != load_mem_mode)
  	{
! 	  rtx ext_op = dest;
! 	  if (!load_elim)
! 	    {
! 	      ext_op = lowpart_subreg (load_mem_mode, dest, outer_mode);
! 	      if (!ext_op)
! 		return false;
! 	    }
! 	  move_src = simplify_gen_unary (GET_CODE (SET_SRC (load)),
! 					 outer_mode, ext_op, load_mem_mode);
  	}
!       else
! 	move_src = dest;
! 
!       rtx move = gen_rtx_SET (SET_DEST (load), move_src);
  
        start_sequence ();
!       rtx_insn *insn = emit_insn (move);
        rtx_insn *seq = end_sequence ();
  
        if (recog_memoized (insn) < 0)
diff -Nrcpad gcc-17-20260531/gcc/bitmap.cc gcc-17-20260607/gcc/bitmap.cc
*** gcc-17-20260531/gcc/bitmap.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/bitmap.cc	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 22,27 ****
--- 22,43 ----
  #include "coretypes.h"
  #include "bitmap.h"
  #include "selftest.h"
+ #include "pretty-print.h"
+ #include "splay-tree-utils.h"
+ 
+ class bitmap_splay_tree_accessors
+ {
+ public:
+   using node_type = bitmap_element *;
+ 
+   static node_type &child (node_type node, unsigned int index)
+   {
+     return index ? node->next : node->prev;
+   }
+ };
+ 
+ using bitmap_splay_tree
+   = splay_tree_without_parent<bitmap_splay_tree_accessors>;
  
  /* Memory allocation statistics purpose instance.  */
  mem_alloc_description<bitmap_usage> bitmap_mem_desc;
*************** mem_alloc_description<bitmap_usage> bitm
*** 30,37 ****
     of bitmap_head.  */
  bitmap_obstack bitmap_head::crashme;
  
- static bitmap_element *bitmap_tree_listify_from (bitmap, bitmap_element *);
- 
  /* Register new bitmap.  */
  void
  bitmap_register (bitmap b MEM_STAT_DECL)
--- 46,51 ----
*************** bitmap_element_allocate (bitmap head)
*** 151,168 ****
  /* Remove ELT and all following elements from bitmap HEAD.
     Put the released elements in the freelist for HEAD.  */
  
! void
  bitmap_elt_clear_from (bitmap head, bitmap_element *elt)
  {
    bitmap_element *prev;
    bitmap_obstack *bit_obstack = head->obstack;
  
    if (!elt)
      return;
  
-   if (head->tree_form)
-     elt = bitmap_tree_listify_from (head, elt);
- 
    if (GATHER_STATISTICS)
      {
        int n = 0;
--- 165,181 ----
  /* Remove ELT and all following elements from bitmap HEAD.
     Put the released elements in the freelist for HEAD.  */
  
! static void
  bitmap_elt_clear_from (bitmap head, bitmap_element *elt)
  {
    bitmap_element *prev;
    bitmap_obstack *bit_obstack = head->obstack;
  
+   gcc_checking_assert (!head->tree_form);
+ 
    if (!elt)
      return;
  
    if (GATHER_STATISTICS)
      {
        int n = 0;
*************** bitmap_tree_splay (bitmap head, bitmap_e
*** 503,518 ****
    return t;
  }
  
! /* Link bitmap element E into the current bitmap splay tree.  */
  
  static inline void
  bitmap_tree_link_element (bitmap head, bitmap_element *e)
  {
!   if (head->first == NULL)
      e->prev = e->next = NULL;
    else
      {
-       bitmap_element *t = bitmap_tree_splay (head, head->first, e->indx);
        if (e->indx < t->indx)
  	{
  	  e->prev = t->prev;
--- 516,533 ----
    return t;
  }
  
! /* Link bitmap element E into the current bitmap splay tree.  The caller
!    must have called bitmap_tree_find_element first, which guarantees that
!    the current root should become a neighbor of E.  */
  
  static inline void
  bitmap_tree_link_element (bitmap head, bitmap_element *e)
  {
!   bitmap_element *t = head->first;
!   if (t == NULL)
      e->prev = e->next = NULL;
    else
      {
        if (e->indx < t->indx)
  	{
  	  e->prev = t->prev;
*************** bitmap_tree_unlink_element (bitmap head,
*** 545,550 ****
--- 560,567 ----
  
    if (e->prev == NULL)
      t = e->next;
+   else if (e->next == NULL)
+     t = e->prev;
    else
      {
        t = bitmap_tree_splay (head, e->prev, e->indx);
*************** bitmap_tree_find_element (bitmap head, u
*** 589,688 ****
  
  /* Converting bitmap views from linked-list to tree and vice versa.  */
  
! /* Splice element E and all elements with a larger index from
!    bitmap HEAD, convert the spliced elements to the linked-list
!    view, and return the head of the list (which should be E again),  */
  
! static bitmap_element *
! bitmap_tree_listify_from (bitmap head, bitmap_element *e)
  {
!   bitmap_element *t, *erb;
! 
!   /* Detach the right branch from E (all elements with indx > E->indx),
!      and splay E to the root.  */
!   erb = e->next;
!   e->next = NULL;
!   t = bitmap_tree_splay (head, head->first, e->indx);
!   gcc_checking_assert (t == e);
! 
!   /* Because E has no right branch, and we rotated it to the root,
!      the left branch is the new root.  */
!   t = e->prev;
!   head->first = t;
!   head->current = t;
!   head->indx = (t != NULL) ? t->indx : 0;
! 
!   /* Detach the tree from E, and re-attach the right branch of E.  */
!   e->prev = NULL;
!   e->next = erb;
  
!   /* The tree is now valid again.  Now we need to "un-tree" E.
!      It is imperative that a non-recursive implementation is used
!      for this, because splay trees have a worst case depth of O(N)
!      for a tree with N nodes.  A recursive implementation could
!      result in a stack overflow for a sufficiently large, unbalanced
!      bitmap tree.  */
  
!   auto_vec<bitmap_element *, 32> stack;
!   auto_vec<bitmap_element *, 32> sorted_elements;
!   bitmap_element *n = e;
  
!   while (true)
!     {
!       while (n != NULL)
  	{
! 	  stack.safe_push (n);
! 	  n = n->prev;
  	}
  
!       if (stack.is_empty ())
! 	break;
! 
!       n = stack.pop ();
!       sorted_elements.safe_push (n);
!       n = n->next;
!     }
! 
!   gcc_assert (sorted_elements[0] == e);
! 
!   bitmap_element *prev = NULL;
!   unsigned ix;
!   FOR_EACH_VEC_ELT (sorted_elements, ix, n)
!     {
!       if (prev != NULL)
!         prev->next = n;
!       n->prev = prev;
!       n->next = NULL;
!       prev = n;
!     }
! 
!   return e;
! }
! 
! /* Convert bitmap HEAD from splay-tree view to linked-list view.  */
  
! void
! bitmap_list_view (bitmap head)
! {
!   bitmap_element *ptr;
  
!   gcc_assert (head->tree_form);
  
!   ptr = head->first;
!   if (ptr)
!     {
!       while (ptr->prev)
! 	bitmap_tree_rotate_right (ptr);
!       head->first = ptr;
!       head->first = bitmap_tree_listify_from (head, ptr);
      }
  
    head->tree_form = false;
-   if (!head->current)
-     {
-       head->current = head->first;
-       head->indx = head->current ? head->current->indx : 0;
-     }
  }
  
  /* Convert bitmap HEAD from linked-list view to splay-tree view.
--- 606,670 ----
  
  /* Converting bitmap views from linked-list to tree and vice versa.  */
  
! /* Convert bitmap HEAD from splay-tree view to linked-list view.  */
  
! void
! bitmap_list_view (bitmap head)
  {
!   gcc_assert (head->tree_form);
  
!   if (bitmap_element *node = head->first)
!     {
!       bitmap_element *last = nullptr;
  
!       /* STACK is a stack of nodes linked by their left child.  Each entry N
! 	 represents a set of nodes that contains N itself and all nodes in N's
! 	 right subtree.  The sets are ordered so that every element of the top
! 	 set comes before every element in the next set down, and so on.  */
!       bitmap_element *stack = nullptr;
  
!     add_subtree:
!       /* Add NODE and its left and right subtrees to the list.  Start by
! 	 moving down NODE's left spine, pushing each nonterminal node onto
! 	 the stack.  */
!       while (bitmap_element *left = node->prev)
  	{
! 	  node->prev = stack;
! 	  stack = node;
! 	  node = left;
  	}
  
!     add_node_and_right_subtree:
!       /* Add NODE and its right subtree to the list.  NODE is therefore the
! 	 next entry in the list.  */
!       if (last)
! 	last->next = node;
!       else
! 	head->first = node;
!       node->prev = last;
!       last = node;
  
!       /* Move to NODE's right child and repeat the process.  */
!       node = node->next;
!       if (node)
! 	goto add_subtree;
  
!       /* Pop the top node from the stack and add it to the end of the list.  */
!       if (stack)
! 	{
! 	  node = stack;
! 	  stack = stack->prev;
! 	  goto add_node_and_right_subtree;
! 	}
  
!       if (!head->current)
! 	{
! 	  head->current = head->first;
! 	  head->indx = head->first->indx;
! 	}
      }
  
    head->tree_form = false;
  }
  
  /* Convert bitmap HEAD from linked-list view to splay-tree view.
*************** bitmap_clear (bitmap head)
*** 714,729 ****
  {
    if (head->first == NULL)
      return;
!   if (head->tree_form)
!     {
!       bitmap_element *e, *t;
!       for (e = head->first; e->prev; e = e->prev)
! 	/* Loop to find the element with the smallest index.  */ ;
!       t = bitmap_tree_splay (head, head->first, e->indx);
!       gcc_checking_assert (t == e);
!       head->first = t;
!     }
    bitmap_elt_clear_from (head, head->first);
  }
  
  /* Initialize a bitmap obstack.  If BIT_OBSTACK is NULL, initialize
--- 696,706 ----
  {
    if (head->first == NULL)
      return;
!   bool tree_form = head->tree_form;
!   if (tree_form)
!     bitmap_list_view (head);
    bitmap_elt_clear_from (head, head->first);
+   head->tree_form = tree_form;
  }
  
  /* Initialize a bitmap obstack.  If BIT_OBSTACK is NULL, initialize
*************** bitmap_first_set_bit_worker (bitmap a, b
*** 1233,1240 ****
    gcc_checking_assert (elt);
  
    if (a->tree_form)
!     while (elt->prev)
!       elt = elt->prev;
  
    bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
    for (ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
--- 1210,1216 ----
    gcc_checking_assert (elt);
  
    if (a->tree_form)
!     elt = a->first = bitmap_splay_tree (elt).min_node ();
  
    bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
    for (ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++)
*************** bitmap_clear_first_set_bit (bitmap a)
*** 1308,1332 ****
    return bitmap_first_set_bit_worker (a, true);
  }
  
! /* Return the bit number of the first set bit in the bitmap.  The
!    bitmap must be non-empty.  */
  
! unsigned
! bitmap_last_set_bit (const_bitmap a)
  {
!   const bitmap_element *elt;
    unsigned bit_no;
    BITMAP_WORD word;
    int ix;
  
    if (a->tree_form)
!     elt = a->first;
    else
!     elt = a->current ? a->current : a->first;
!   gcc_checking_assert (elt);
! 
!   while (elt->next)
!     elt = elt->next;
  
    bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
    for (ix = BITMAP_ELEMENT_WORDS - 1; ix >= 0; ix--)
--- 1284,1308 ----
    return bitmap_first_set_bit_worker (a, true);
  }
  
! /* Return the bit number of the last set bit in the bitmap.  The bitmap
!    must be non-empty.  When CLEAR is true, also clear the bit.  */
  
! static unsigned
! bitmap_last_set_bit_worker (bitmap a, bool clear)
  {
!   bitmap_element *elt;
    unsigned bit_no;
    BITMAP_WORD word;
    int ix;
  
    if (a->tree_form)
!     elt = a->first = bitmap_splay_tree (a->first).max_node ();
    else
!     {
!       elt = a->current ? a->current : a->first;
!       while (elt->next)
! 	elt = elt->next;
!     }
  
    bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS;
    for (ix = BITMAP_ELEMENT_WORDS - 1; ix >= 0; ix--)
*************** bitmap_last_set_bit (const_bitmap a)
*** 1355,1362 ****
    bit_no += bitmap_popcount (x) - 1;
  #endif
  
!   return bit_no;
  }
  
  
  /* DST = A & B.  */
--- 1331,1371 ----
    bit_no += bitmap_popcount (x) - 1;
  #endif
  
!  if (clear)
!    {
!      elt->bits[ix] &= ~((BITMAP_WORD) 1 << (bit_no % BITMAP_WORD_BITS));
!      /* If we cleared the entire word, free up the element.  */
!      if (!elt->bits[ix]
! 	 && bitmap_element_zerop (elt))
!        {
! 	 if (!a->tree_form)
! 	   bitmap_list_unlink_element (a, elt);
! 	 else
! 	   bitmap_tree_unlink_element (a, elt);
!        }
!    }
! 
!  return bit_no;
  }
+ 
+ /* Return the bit number of the last set bit in the bitmap.
+    The bitmap must be non-empty.  */
+ 
+ unsigned
+ bitmap_last_set_bit (const_bitmap a)
+ {
+   return bitmap_last_set_bit_worker (const_cast<bitmap> (a), false);
+ }
+ 
+ /* Return and clear the bit number of the last set bit in the bitmap.
+    The bitmap must be non-empty.  */
+ 
+ unsigned
+ bitmap_clear_last_set_bit (bitmap a)
+ {
+   return bitmap_last_set_bit_worker (a, true);
+ }
+ 
  
  
  /* DST = A & B.  */
diff -Nrcpad gcc-17-20260531/gcc/bitmap.h gcc-17-20260607/gcc/bitmap.h
*** gcc-17-20260531/gcc/bitmap.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/bitmap.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 128,133 ****
--- 128,134 ----
       * largest_member		: bitmap_last_set_bit (but this could
  				  in constant time with a pointer to
  				  the last element in the chain)
+      * pop_largest              : bitmap_clear_last_set_bit
       * set_size			: bitmap_last_set_bit
  
     In tree view the following operations can all be performed in O(log E)
*************** along with GCC; see the file COPYING3.
*** 136,141 ****
--- 137,143 ----
       * smallest_member
       * pop_smallest
       * largest_member
+      * pop_largest
       * set_size
       * member_p
       * add_member
*************** struct bitmap_obstack {
*** 311,320 ****
  
  struct GTY((chain_next ("%h.next"))) bitmap_element {
    /* In list form, the next element in the linked list;
!      in tree form, the left child node in the tree.  */
    struct bitmap_element *next;
    /* In list form, the previous element in the linked list;
!      in tree form, the right child node in the tree.  */
    struct bitmap_element *prev;
    /* regno/BITMAP_ELEMENT_ALL_BITS.  */
    unsigned int indx;
--- 313,322 ----
  
  struct GTY((chain_next ("%h.next"))) bitmap_element {
    /* In list form, the next element in the linked list;
!      in tree form, the right child node in the tree.  */
    struct bitmap_element *next;
    /* In list form, the previous element in the linked list;
!      in tree form, the left child node in the tree.  */
    struct bitmap_element *prev;
    /* regno/BITMAP_ELEMENT_ALL_BITS.  */
    unsigned int indx;
*************** extern void debug (const bitmap_head *pt
*** 505,510 ****
--- 507,513 ----
  extern unsigned bitmap_first_set_bit (const_bitmap);
  extern unsigned bitmap_clear_first_set_bit (bitmap);
  extern unsigned bitmap_last_set_bit (const_bitmap);
+ extern unsigned bitmap_clear_last_set_bit (bitmap);
  
  /* Compute bitmap hash (for purposes of hashing etc.)  */
  extern hashval_t bitmap_hash (const_bitmap);
diff -Nrcpad gcc-17-20260531/gcc/builtins.cc gcc-17-20260607/gcc/builtins.cc
*** gcc-17-20260531/gcc/builtins.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/builtins.cc	Sun Jun  7 22:32:06 2026
*************** fold_builtin_bit_query (location_t loc,
*** 10522,10527 ****
--- 10522,10574 ----
    return call;
  }
  
+ /* Fold or build a __builtin_bswapg (ARG) (if IFN is IFN_BSWAP) or
+    __builtin_bitreverseg (ARG (otherwise) call.  The FE should have
+    verified earlier that the argument type is unsigned INTEGER_TYPE
+    or BITINT_TYPE, for __builtin_bswapg with precision divisible by 8.  */
+ 
+ tree
+ fold_build_builtin_bswapg_bitreverseg (location_t loc, enum internal_fn ifn,
+ 				       tree arg)
+ {
+   tree type = TYPE_MAIN_VARIANT (TREE_TYPE (arg));
+   if (ifn == IFN_BSWAP && TYPE_PRECISION (type) == 8)
+     return fold_convert_loc (loc, type, arg);
+   struct { tree type; built_in_function bswap, bitreverse; } fns[]
+     = { { unsigned_char_type_node, END_BUILTINS, BUILT_IN_BITREVERSE8 },
+ 	{ uint16_type_node, BUILT_IN_BSWAP16, BUILT_IN_BITREVERSE16 },
+ 	{ uint32_type_node, BUILT_IN_BSWAP32, BUILT_IN_BITREVERSE32 },
+ 	{ uint64_type_node, BUILT_IN_BSWAP64, BUILT_IN_BITREVERSE64 },
+ 	{ uint128_type_node, BUILT_IN_BSWAP128, BUILT_IN_BITREVERSE128 } };
+   if (TREE_CODE (arg) == INTEGER_CST)
+     {
+       wide_int res;
+       if (ifn == IFN_BSWAP)
+ 	res = wi::bswap (wi::to_wide (arg));
+       else
+ 	res = wi::bitreverse (wi::to_wide (arg));
+       return wide_int_to_tree (type, res);
+     }
+   for (unsigned i = 0; i < ARRAY_SIZE (fns); ++i)
+     if (fns[i].type
+ 	&& TYPE_PRECISION (fns[i].type) >= TYPE_PRECISION (type))
+       {
+ 	arg = fold_convert_loc (loc, fns[i].type, arg);
+ 	tree fndecl
+ 	  = builtin_decl_explicit (ifn == IFN_BSWAP
+ 				   ? fns[i].bswap : fns[i].bitreverse);
+ 	tree ret = build_call_expr_loc (loc, fndecl, 1, arg);
+ 	if (TYPE_PRECISION (type) != TYPE_PRECISION (fns[i].type))
+ 	  ret = fold_build2_loc (loc, RSHIFT_EXPR, fns[i].type, ret,
+ 				 build_int_cst (unsigned_type_node,
+ 						TYPE_PRECISION (fns[i].type)
+ 						- TYPE_PRECISION (type)));
+ 	return fold_convert_loc (loc, type, ret);
+       }
+   gcc_assert (TREE_CODE (type) == BITINT_TYPE);
+   return build_call_expr_internal_loc (loc, ifn, type, 1, arg);
+ }
+ 
  /* Fold __builtin_{add,sub}c{,l,ll} into pair of internal functions
     that return both result of arithmetics and overflowed boolean
     flag in a complex integer result.  */
diff -Nrcpad gcc-17-20260531/gcc/builtins.h gcc-17-20260607/gcc/builtins.h
*** gcc-17-20260531/gcc/builtins.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/builtins.h	Sun Jun  7 22:32:06 2026
*************** extern rtx expand_builtin (tree, rtx, rt
*** 140,145 ****
--- 140,147 ----
  extern enum built_in_function builtin_mathfn_code (const_tree);
  extern tree fold_builtin_expect (location_t, tree, tree, tree, tree);
  extern tree fold_builtin_constant_p (tree);
+ extern tree fold_build_builtin_bswapg_bitreverseg (location_t, internal_fn,
+ 						   tree);
  extern bool avoid_folding_inline_builtin (tree);
  extern tree fold_call_expr (location_t, tree, bool);
  extern tree fold_builtin_call_array (location_t, tree, tree, int, tree *);
diff -Nrcpad gcc-17-20260531/gcc/c/ChangeLog gcc-17-20260607/gcc/c/ChangeLog
*** gcc-17-20260531/gcc/c/ChangeLog	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c/ChangeLog	Sun Jun  7 22:32:06 2026
***************
*** 1,3 ****
--- 1,29 ----
+ 2026-06-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125252
+ 	* c-typeck.cc (ptr_to_tagged_member): Return type of member.
+ 	(c_type_canonical): Use incomplete type.
+ 
+ 2026-06-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/123569
+ 	* c-parser.cc (mark_exp_read_cond): New function.
+ 	(c_parser_unary_expression): Use mark_exp_read_cond.
+ 	(c_parser_postfix_expression_after_primary): Likewise.
+ 	* c-typeck.cc (build_unary_op): Remove dead code and
+ 	add checking assertion.
+ 
+ 2026-06-02  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c/121911
+ 	* c-decl.cc (push_file_scope): Add stack protection guard to
+ 	visible_builtins.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* c-fold.cc (c_disable_warnings): Likewise.
+ 	(c_enable_warnings): Likewise.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* c-decl.cc (pop_file_scope): Fix typos.
diff -Nrcpad gcc-17-20260531/gcc/c/c-decl.cc gcc-17-20260607/gcc/c/c-decl.cc
*** gcc-17-20260531/gcc/c/c-decl.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c/c-decl.cc	Sun Jun  7 22:32:06 2026
*************** push_file_scope (void)
*** 1495,1500 ****
--- 1495,1509 ----
    if (file_scope)
      return;
  
+   /* Call the target stack_protect_guard hook if the stack protection
+      guard is declared as a global symbol.  */
+   if (targetm.stack_protect_guard_symbol_p ())
+     {
+       tree decl = targetm.stack_protect_guard ();
+       DECL_CHAIN (decl) = visible_builtins;
+       visible_builtins = decl;
+     }
+ 
    push_scope ();
    file_scope = current_scope;
  
*************** grokdeclarator (const struct c_declarato
*** 7461,7467 ****
  		       an unsigned index type, which is what we'll
  		       get with build_index_type.  Create an
  		       open-ended range instead.  */
! 		    itype = build_range_type (sizetype, size, NULL_TREE);
  		  }
  		else
  		  {
--- 7470,7476 ----
  		       an unsigned index type, which is what we'll
  		       get with build_index_type.  Create an
  		       open-ended range instead.  */
! 		    itype = build_index_type (NULL_TREE);
  		  }
  		else
  		  {
*************** grokdeclarator (const struct c_declarato
*** 8145,8152 ****
  	      pedwarn_c90 (loc, OPT_Wpedantic, "ISO C90 does not "
  			   "support flexible array members");
  	    type = build_distinct_type_copy (TYPE_MAIN_VARIANT (type));
! 	    TYPE_DOMAIN (type) = build_range_type (sizetype, size_zero_node,
! 						   NULL_TREE);
  	    if (orig_qual_indirect == 0)
  	      orig_qual_type = NULL_TREE;
  	  }
--- 8154,8160 ----
  	      pedwarn_c90 (loc, OPT_Wpedantic, "ISO C90 does not "
  			   "support flexible array members");
  	    type = build_distinct_type_copy (TYPE_MAIN_VARIANT (type));
! 	    TYPE_DOMAIN (type) = build_index_type (NULL_TREE);
  	    if (orig_qual_indirect == 0)
  	      orig_qual_type = NULL_TREE;
  	  }
diff -Nrcpad gcc-17-20260531/gcc/c/c-parser.cc gcc-17-20260607/gcc/c/c-parser.cc
*** gcc-17-20260531/gcc/c/c-parser.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c/c-parser.cc	Sun Jun  7 22:32:06 2026
*************** c_parser_cast_expression (c_parser *pars
*** 10656,10661 ****
--- 10656,10681 ----
      return c_parser_unary_expression (parser);
  }
  
+ 
+ /* Like mark_exp_read but skip marking VAR_DECLs and PARM_DECLs
+    depending on the warning mode.  This helper function is
+    used in c_parser_unary_expression and
+    and c_parser_postfix_expression_after_primary for
+    pre/post-increment/decrement operations.
+  */
+ 
+ static void
+ mark_exp_read_cond (tree exp)
+ {
+   if ((VAR_P (exp) || TREE_CODE (exp) == PARM_DECL)
+       && (VAR_P (exp) ? warn_unused_but_set_variable
+ 		      : warn_unused_but_set_parameter) > 1)
+     return;
+ 
+   mark_exp_read (exp);
+ }
+ 
+ 
  /* Parse an unary expression (C90 6.3.3, C99 6.5.3, C11 6.5.3).
  
     unary-expression:
*************** c_parser_unary_expression (c_parser *par
*** 10713,10743 ****
        c_parser_consume_token (parser);
        exp_loc = c_parser_peek_token (parser)->location;
        op = c_parser_cast_expression (parser, NULL);
!       if ((VAR_P (op.value) || TREE_CODE (op.value) == PARM_DECL)
! 	  && !DECL_READ_P (op.value)
! 	  && (VAR_P (op.value) ? warn_unused_but_set_variable
! 			       : warn_unused_but_set_parameter) > 1)
! 	{
! 	  op = default_function_array_read_conversion (exp_loc, op);
! 	  DECL_READ_P (op.value) = 0;
! 	}
!       else
! 	op = default_function_array_read_conversion (exp_loc, op);
        return parser_build_unary_op (op_loc, PREINCREMENT_EXPR, op);
      case CPP_MINUS_MINUS:
        c_parser_consume_token (parser);
        exp_loc = c_parser_peek_token (parser)->location;
        op = c_parser_cast_expression (parser, NULL);
!       if ((VAR_P (op.value) || TREE_CODE (op.value) == PARM_DECL)
! 	  && !DECL_READ_P (op.value)
! 	  && (VAR_P (op.value) ? warn_unused_but_set_variable
! 			       : warn_unused_but_set_parameter) > 1)
! 	{
! 	  op = default_function_array_read_conversion (exp_loc, op);
! 	  DECL_READ_P (op.value) = 0;
! 	}
!       else
! 	op = default_function_array_read_conversion (exp_loc, op);
        return parser_build_unary_op (op_loc, PREDECREMENT_EXPR, op);
      case CPP_AND:
        c_parser_consume_token (parser);
--- 10733,10747 ----
        c_parser_consume_token (parser);
        exp_loc = c_parser_peek_token (parser)->location;
        op = c_parser_cast_expression (parser, NULL);
!       mark_exp_read_cond (op.value);
!       op = default_function_array_conversion (exp_loc, op);
        return parser_build_unary_op (op_loc, PREINCREMENT_EXPR, op);
      case CPP_MINUS_MINUS:
        c_parser_consume_token (parser);
        exp_loc = c_parser_peek_token (parser)->location;
        op = c_parser_cast_expression (parser, NULL);
!       mark_exp_read_cond (op.value);
!       op = default_function_array_conversion (exp_loc, op);
        return parser_build_unary_op (op_loc, PREDECREMENT_EXPR, op);
      case CPP_AND:
        c_parser_consume_token (parser);
*************** c_parser_postfix_expression (c_parser *p
*** 13530,13535 ****
--- 13534,13609 ----
  				       expr.value);
  	    break;
  	  }
+ 	case RID_BUILTIN_BSWAPG:
+ 	case RID_BUILTIN_BITREVERSEG:
+ 	  {
+ 	    vec<c_expr_t, va_gc> *cexpr_list;
+ 	    location_t close_paren_loc;
+ 	    internal_fn ifn
+ 	      = (c_parser_peek_token (parser)->keyword == RID_BUILTIN_BSWAPG
+ 		 ? IFN_BSWAP : IFN_BITREVERSE);
+ 	    const char *name
+ 	      = (ifn == IFN_BSWAP ? "__builtin_bswapg"
+ 		 : "__builtin_bitreverseg");
+ 
+ 	    c_parser_consume_token (parser);
+ 	    if (!c_parser_get_builtin_args (parser, name, &cexpr_list, false,
+ 					    &close_paren_loc))
+ 	      {
+ 		expr.set_error ();
+ 		break;
+ 	      }
+ 
+ 	    if (vec_safe_length (cexpr_list) != 1)
+ 	      {
+ 		error_at (loc, "wrong number of arguments to %qs", name);
+ 		expr.set_error ();
+ 		break;
+ 	      }
+ 
+ 	    c_expr_t *arg_p = &(*cexpr_list)[0];
+ 	    *arg_p = convert_lvalue_to_rvalue (loc, *arg_p, true, true);
+ 	    tree arg = arg_p->value;
+ 	    tree type = TYPE_MAIN_VARIANT (TREE_TYPE (arg));
+ 	    if (!INTEGRAL_TYPE_P (type))
+ 	      {
+ 		error_at (loc, "%qs operand not an integral type", name);
+ 		expr.set_error ();
+ 		break;
+ 	      }
+ 	    if (TREE_CODE (type) == ENUMERAL_TYPE)
+ 	      {
+ 		error_at (loc, "argument %u in call to function "
+ 			  "%qs has enumerated type", 1, name);
+ 		expr.set_error ();
+ 		break;
+ 	      }
+ 	    if (TREE_CODE (type) == BOOLEAN_TYPE)
+ 	      {
+ 		error_at (loc, "argument %u in call to function "
+ 			  "%qs has boolean type", 1, name);
+ 		expr.set_error ();
+ 		break;
+ 	      }
+ 	    if (!TYPE_UNSIGNED (type))
+ 	      {
+ 		error_at (loc, "argument 1 in call to function "
+ 			  "%qs has signed type", name);
+ 		expr.set_error ();
+ 		break;
+ 	      }
+ 	    if (ifn == IFN_BSWAP && (TYPE_PRECISION (type) % 8) != 0)
+ 	      {
+ 		error_at (loc, "precision %d of argument 1 to function "
+ 			  "%qs is not a multiple of 8",
+ 			  TYPE_PRECISION (type), name);
+ 		expr.set_error ();
+ 		break;
+ 	      }
+ 	    expr.value = fold_build_builtin_bswapg_bitreverseg (loc, ifn, arg);
+ 	    set_c_expr_source_range (&expr, loc, close_paren_loc);
+ 	    break;
+ 	  }
  	case RID_AT_SELECTOR:
  	  {
  	    gcc_assert (c_dialect_objc ());
*************** c_parser_postfix_expression_after_primar
*** 14207,14223 ****
  	  start = expr.get_start ();
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
! 	  if ((VAR_P (expr.value) || TREE_CODE (expr.value) == PARM_DECL)
! 	      && !DECL_READ_P (expr.value)
! 	      && (VAR_P (expr.value) ? warn_unused_but_set_variable
! 				     : warn_unused_but_set_parameter) > 1
! 	      && TREE_CODE (TREE_TYPE (expr.value)) != ARRAY_TYPE)
! 	    {
! 	      expr = default_function_array_read_conversion (expr_loc, expr);
! 	      DECL_READ_P (expr.value) = 0;
! 	    }
! 	  else
! 	    expr = default_function_array_read_conversion (expr_loc, expr);
  	  expr.value = build_unary_op (op_loc, POSTINCREMENT_EXPR,
  				       expr.value, false);
  	  set_c_expr_source_range (&expr, start, finish);
--- 14281,14288 ----
  	  start = expr.get_start ();
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
! 	  mark_exp_read_cond (expr.value);
! 	  expr = default_function_array_conversion (expr_loc, expr);
  	  expr.value = build_unary_op (op_loc, POSTINCREMENT_EXPR,
  				       expr.value, false);
  	  set_c_expr_source_range (&expr, start, finish);
*************** c_parser_postfix_expression_after_primar
*** 14229,14245 ****
  	  start = expr.get_start ();
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
! 	  if ((VAR_P (expr.value) || TREE_CODE (expr.value) == PARM_DECL)
! 	      && !DECL_READ_P (expr.value)
! 	      && (VAR_P (expr.value) ? warn_unused_but_set_variable
! 				     : warn_unused_but_set_parameter) > 1
! 	      && TREE_CODE (TREE_TYPE (expr.value)) != ARRAY_TYPE)
! 	    {
! 	      expr = default_function_array_read_conversion (expr_loc, expr);
! 	      DECL_READ_P (expr.value) = 0;
! 	    }
! 	  else
! 	    expr = default_function_array_read_conversion (expr_loc, expr);
  	  expr.value = build_unary_op (op_loc, POSTDECREMENT_EXPR,
  				       expr.value, false);
  	  set_c_expr_source_range (&expr, start, finish);
--- 14294,14301 ----
  	  start = expr.get_start ();
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
! 	  mark_exp_read_cond (expr.value);
! 	  expr = default_function_array_conversion (expr_loc, expr);
  	  expr.value = build_unary_op (op_loc, POSTDECREMENT_EXPR,
  				       expr.value, false);
  	  set_c_expr_source_range (&expr, start, finish);
diff -Nrcpad gcc-17-20260531/gcc/c/c-typeck.cc gcc-17-20260607/gcc/c/c-typeck.cc
*** gcc-17-20260531/gcc/c/c-typeck.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c/c-typeck.cc	Sun Jun  7 22:32:06 2026
*************** static bool comptypes_internal (const_tr
*** 141,146 ****
--- 141,148 ----
  				struct comptypes_data *data);
  static bool comptypes_check_for_composite (tree t1, tree t2);
  static bool handle_counted_by_p (tree);
+ static bool top_array_vla_p (const_tree type);
+ 
  
  /* Return true if EXP is a null pointer constant, false otherwise.  */
  
*************** c_verify_type (tree type)
*** 407,415 ****
        /* An array has variable size if and only if it has a non-constant
  	 dimensions or its element type has variable size.  */
        if ((C_TYPE_VARIABLE_SIZE (TREE_TYPE (type))
! 	   || (TYPE_DOMAIN (type) && TYPE_MAX_VALUE (TYPE_DOMAIN (type))
! 	       && TREE_CODE (TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
! 		  != INTEGER_CST))
  	  != C_TYPE_VARIABLE_SIZE (type))
  	return false;
        /* If the element type or the array has variable size, then the
--- 409,415 ----
        /* An array has variable size if and only if it has a non-constant
  	 dimensions or its element type has variable size.  */
        if ((C_TYPE_VARIABLE_SIZE (TREE_TYPE (type))
! 	   || top_array_vla_p (type))
  	  != C_TYPE_VARIABLE_SIZE (type))
  	return false;
        /* If the element type or the array has variable size, then the
*************** c_build_array_type (tree type, tree doma
*** 498,505 ****
  
    tree ret = build_array_type (type, domain, typeless);
  
!   if (domain && TYPE_MAX_VALUE (domain)
!       && TREE_CODE (TYPE_MAX_VALUE (domain)) != INTEGER_CST)
      {
        C_TYPE_VARIABLE_SIZE (ret) = 1;
        C_TYPE_VARIABLY_MODIFIED (ret) = 1;
--- 498,504 ----
  
    tree ret = build_array_type (type, domain, typeless);
  
!   if (top_array_vla_p (ret))
      {
        C_TYPE_VARIABLE_SIZE (ret) = 1;
        C_TYPE_VARIABLY_MODIFIED (ret) = 1;
*************** c_reconstruct_complex_type (tree type, t
*** 579,586 ****
  
  /* Helper function for c_canonical_type.  Check whether FIELD
     contains a pointer to a structure or union with tag,
!    possibly nested in other type derivations.  */
! static bool
  ptr_to_tagged_member (tree field)
  {
    gcc_assert (FIELD_DECL == TREE_CODE (field));
--- 578,586 ----
  
  /* Helper function for c_canonical_type.  Check whether FIELD
     contains a pointer to a structure or union with tag,
!    possibly nested in other type derivations, and return the
!    type of this nested structure or union.  */
! static tree
  ptr_to_tagged_member (tree field)
  {
    gcc_assert (FIELD_DECL == TREE_CODE (field));
*************** ptr_to_tagged_member (tree field)
*** 598,614 ****
    if (ptr_seen
        && RECORD_OR_UNION_TYPE_P (type)
        && NULL_TREE != c_type_tag (type))
!     return true;
  
!   return false;
  }
  
  /* For a record or union type, make necessary adaptations so that the
     type can be used as TYPE_CANONICAL.
  
     If the TYPE contains a pointer (possibly nested in other type
!    derivations) to a structure or union as a member, create a copy
!    and change such pointers to void pointers.  Otherwise, the middle-end
     gets confused when recording component aliases in the case where we
     have formed equivalency classes that include types for which these
     member pointers end up pointing to other structure or unions types
--- 598,614 ----
    if (ptr_seen
        && RECORD_OR_UNION_TYPE_P (type)
        && NULL_TREE != c_type_tag (type))
!     return type;
  
!   return NULL_TREE;
  }
  
  /* For a record or union type, make necessary adaptations so that the
     type can be used as TYPE_CANONICAL.
  
     If the TYPE contains a pointer (possibly nested in other type
!    derivations) to a structure or union as a member, create a copy and
!    change the nested type to an incomplete type.  Otherwise, the middle-end
     gets confused when recording component aliases in the case where we
     have formed equivalency classes that include types for which these
     member pointers end up pointing to other structure or unions types
*************** c_type_canonical (tree type)
*** 635,643 ****
    for (tree x = TYPE_FIELDS (type); x; x = DECL_CHAIN (x))
      {
        tree f = copy_node (x);
!       if (ptr_to_tagged_member (x))
! 	TREE_TYPE (f) = c_reconstruct_complex_type (TREE_TYPE (x),
! 						    ptr_type_node);
        *fields = f;
        fields = &DECL_CHAIN (f);
      }
--- 635,649 ----
    for (tree x = TYPE_FIELDS (type); x; x = DECL_CHAIN (x))
      {
        tree f = copy_node (x);
!       if (tree m = ptr_to_tagged_member (x))
! 	{
! 	  tree new_node = make_node (TREE_CODE (m));
! 	  TYPE_NAME (new_node) = TYPE_NAME (m);
! 	  SET_TYPE_STRUCTURAL_EQUALITY (new_node);
! 	  new_node = qualify_type (new_node, m);
! 	  TREE_TYPE (f) = c_reconstruct_complex_type (TREE_TYPE (x),
! 						      new_node);
! 	}
        *fields = f;
        fields = &DECL_CHAIN (f);
      }
*************** composite_type_internal (tree t1, tree t
*** 824,837 ****
  	bool d1_zero = d1 == NULL_TREE || !TYPE_MAX_VALUE (d1);
  	bool d2_zero = d2 == NULL_TREE || !TYPE_MAX_VALUE (d2);
  
! 	bool d1_variable, d2_variable;
! 
! 	d1_variable = (!d1_zero
! 		       && (TREE_CODE (TYPE_MIN_VALUE (d1)) != INTEGER_CST
! 			   || TREE_CODE (TYPE_MAX_VALUE (d1)) != INTEGER_CST));
! 	d2_variable = (!d2_zero
! 		       && (TREE_CODE (TYPE_MIN_VALUE (d2)) != INTEGER_CST
! 			   || TREE_CODE (TYPE_MAX_VALUE (d2)) != INTEGER_CST));
  
  	bool use1 = d1 && (d2_variable || d2_zero || !d1_variable);
  	bool use2 = d2 && (d1_variable || d1_zero || !d2_variable);
--- 830,837 ----
  	bool d1_zero = d1 == NULL_TREE || !TYPE_MAX_VALUE (d1);
  	bool d2_zero = d2 == NULL_TREE || !TYPE_MAX_VALUE (d2);
  
! 	bool d1_variable = top_array_vla_p (t1);
! 	bool d2_variable = top_array_vla_p (t2);
  
  	bool use1 = d1 && (d2_variable || d2_zero || !d1_variable);
  	bool use2 = d2 && (d1_variable || d1_zero || !d2_variable);
*************** comptypes_internal (const_tree type1, co
*** 1795,1802 ****
        {
  	tree d1 = TYPE_DOMAIN (t1);
  	tree d2 = TYPE_DOMAIN (t2);
- 	bool d1_variable, d2_variable;
- 	bool d1_zero, d2_zero;
  
  	/* Target types must match incl. qualifiers.  */
  	if (!comptypes_internal (TREE_TYPE (t1), TREE_TYPE (t2), data))
--- 1795,1800 ----
*************** comptypes_internal (const_tree type1, co
*** 1811,1825 ****
  	if (d1 == NULL_TREE || d2 == NULL_TREE || d1 == d2)
  	  return true;
  
! 	d1_zero = !TYPE_MAX_VALUE (d1);
! 	d2_zero = !TYPE_MAX_VALUE (d2);
  
! 	d1_variable = (!d1_zero
! 		       && (TREE_CODE (TYPE_MIN_VALUE (d1)) != INTEGER_CST
! 			   || TREE_CODE (TYPE_MAX_VALUE (d1)) != INTEGER_CST));
! 	d2_variable = (!d2_zero
! 		       && (TREE_CODE (TYPE_MIN_VALUE (d2)) != INTEGER_CST
! 			   || TREE_CODE (TYPE_MAX_VALUE (d2)) != INTEGER_CST));
  
  	if (d1_variable != d2_variable)
  	  data->different_types_p = true;
--- 1809,1819 ----
  	if (d1 == NULL_TREE || d2 == NULL_TREE || d1 == d2)
  	  return true;
  
! 	bool d1_zero = !TYPE_MAX_VALUE (d1);
! 	bool d2_zero = !TYPE_MAX_VALUE (d2);
  
! 	bool d1_variable = top_array_vla_p (t1);
! 	bool d2_variable = top_array_vla_p (t2);
  
  	if (d1_variable != d2_variable)
  	  data->different_types_p = true;
*************** c_expr_sizeof_type (location_t loc, stru
*** 4088,4111 ****
  }
  
  static bool
! is_top_array_vla (tree type)
  {
-   bool zero, var;
-   tree d;
- 
    if (TREE_CODE (type) != ARRAY_TYPE)
      return false;
    if (!COMPLETE_TYPE_P (type))
      return false;
  
!   d = TYPE_DOMAIN (type);
!   zero = !TYPE_MAX_VALUE (d);
!   if (zero)
      return false;
  
!   var = (TREE_CODE (TYPE_MIN_VALUE (d)) != INTEGER_CST
! 	 || TREE_CODE (TYPE_MAX_VALUE (d)) != INTEGER_CST);
!   return var;
  }
  
  /* Return the result of countof applied to EXPR.  */
--- 4082,4103 ----
  }
  
  static bool
! top_array_vla_p (const_tree type)
  {
    if (TREE_CODE (type) != ARRAY_TYPE)
      return false;
    if (!COMPLETE_TYPE_P (type))
      return false;
  
!   tree d = TYPE_DOMAIN (type);
! 
!   if (!d)
!     return false;
!   if (!TYPE_MAX_VALUE (d))
      return false;
  
!   return TREE_CODE (TYPE_MAX_VALUE (d)) != INTEGER_CST
! 	 || TREE_CODE (TYPE_MIN_VALUE (d)) != INTEGER_CST;
  }
  
  /* Return the result of countof applied to EXPR.  */
*************** c_expr_countof_expr (location_t loc, str
*** 4134,4140 ****
        ret.original_code = COUNTOF_EXPR;
        ret.original_type = NULL;
        ret.m_decimal = 0;
!       if (is_top_array_vla (TREE_TYPE (folded_expr)))
  	{
  	  /* countof is evaluated when given a vla.  */
  	  ret.value = build2 (C_MAYBE_CONST_EXPR, TREE_TYPE (ret.value),
--- 4126,4132 ----
        ret.original_code = COUNTOF_EXPR;
        ret.original_type = NULL;
        ret.m_decimal = 0;
!       if (top_array_vla_p (TREE_TYPE (folded_expr)))
  	{
  	  /* countof is evaluated when given a vla.  */
  	  ret.value = build2 (C_MAYBE_CONST_EXPR, TREE_TYPE (ret.value),
*************** c_expr_countof_expr (location_t loc, str
*** 4142,4148 ****
  	  C_MAYBE_CONST_EXPR_NON_CONST (ret.value) = !expr_const_operands;
  	  SET_EXPR_LOCATION (ret.value, loc);
  	}
!       pop_maybe_used (is_top_array_vla (TREE_TYPE (folded_expr)));
      }
    return ret;
  }
--- 4134,4140 ----
  	  C_MAYBE_CONST_EXPR_NON_CONST (ret.value) = !expr_const_operands;
  	  SET_EXPR_LOCATION (ret.value, loc);
  	}
!       pop_maybe_used (top_array_vla_p (TREE_TYPE (folded_expr)));
      }
    return ret;
  }
*************** c_expr_countof_type (location_t loc, str
*** 4172,4178 ****
      }
    else
    if ((type_expr || TREE_CODE (ret.value) == INTEGER_CST)
!       && is_top_array_vla (type))
      {
        /* If the type is a [*] array, it is a VLA but is represented as
  	 having a size of zero.  In such a case we must ensure that
--- 4164,4170 ----
      }
    else
    if ((type_expr || TREE_CODE (ret.value) == INTEGER_CST)
!       && top_array_vla_p (type))
      {
        /* If the type is a [*] array, it is a VLA but is represented as
  	 having a size of zero.  In such a case we must ensure that
*************** c_expr_countof_type (location_t loc, str
*** 4187,4193 ****
  			  type_expr, ret.value);
        C_MAYBE_CONST_EXPR_NON_CONST (ret.value) = !type_expr_const;
      }
!   pop_maybe_used (type != error_mark_node ? is_top_array_vla (type) : false);
    return ret;
  }
  
--- 4179,4185 ----
  			  type_expr, ret.value);
        C_MAYBE_CONST_EXPR_NON_CONST (ret.value) = !type_expr_const;
      }
!   pop_maybe_used (type != error_mark_node ? top_array_vla_p (type) : false);
    return ret;
  }
  
*************** build_unary_op (location_t location, enu
*** 5786,5794 ****
    tree ret = error_mark_node;
    tree eptype = NULL_TREE;
    const char *invalid_op_diag;
-   bool int_operands;
  
!   int_operands = EXPR_INT_CONST_OPERANDS (xarg);
    if (int_operands)
      arg = remove_c_maybe_const_expr (arg);
  
--- 5778,5787 ----
    tree ret = error_mark_node;
    tree eptype = NULL_TREE;
    const char *invalid_op_diag;
  
!   gcc_checking_assert (!is_access_with_size_p (arg));
! 
!   bool int_operands = EXPR_INT_CONST_OPERANDS (xarg);
    if (int_operands)
      arg = remove_c_maybe_const_expr (arg);
  
*************** build_unary_op (location_t location, enu
*** 6250,6259 ****
  	  goto return_build_unary_op;
  	}
  
!       /* Ordinary case; arg is a COMPONENT_REF or a decl, or a call to
! 	 .ACCESS_WITH_SIZE.  */
!       if (is_access_with_size_p (arg))
! 	arg = TREE_OPERAND (TREE_OPERAND (CALL_EXPR_ARG (arg, 0), 0), 0);
  
        argtype = TREE_TYPE (arg);
  
--- 6243,6249 ----
  	  goto return_build_unary_op;
  	}
  
!       /* Ordinary case; arg is a COMPONENT_REF or a decl.  */
  
        argtype = TREE_TYPE (arg);
  
diff -Nrcpad gcc-17-20260531/gcc/c-family/ChangeLog gcc-17-20260607/gcc/c-family/ChangeLog
*** gcc-17-20260531/gcc/c-family/ChangeLog	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c-family/ChangeLog	Sun Jun  7 22:32:06 2026
***************
*** 1,3 ****
--- 1,38 ----
+ 2026-06-02  Christopher Bazley  <chris.bazley@arm.com>
+ 
+ 	* c-attribs.cc (handle_optimize_attribute):
+ 	Save the global target options before modifying
+ 	them. If the function with the optimize attribute
+ 	already has a target option node then restore those
+ 	target options as the global options, so that they
+ 	are used as the basis for any new optimization and
+ 	target options attached to the function.
+ 
+ 2026-06-02  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c/121911
+ 	* c-common.cc (c_common_nodes_and_builtins): Don't declare stack
+ 	protection guard here.
+ 
+ 2026-06-01  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/98539
+ 	* c-warn.cc (warn_parm_array_mismatch): Check number of size
+ 	expressions.
+ 
+ 2026-06-01  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* c.opt.urls: Regenerate.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* c.opt: Removed Wstrict-overflow entry.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* c-common.cc (pointer_int_sum): Removed
+ 	fold_*_overflow_warnings uses.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* c-attribs.cc (append_access_attr): Fix typos.
diff -Nrcpad gcc-17-20260531/gcc/c-family/c-attribs.cc gcc-17-20260607/gcc/c-family/c-attribs.cc
*** gcc-17-20260531/gcc/c-family/c-attribs.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c-family/c-attribs.cc	Sun Jun  7 22:32:06 2026
*************** handle_optimize_attribute (tree *node, t
*** 6468,6479 ****
    else
      {
        struct cl_optimization cur_opts;
        tree old_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node);
  
        /* Save current options.  */
        cl_optimization_save (&cur_opts, &global_options, &global_options_set);
!       tree prev_target_node = build_target_option_node (&global_options,
! 							&global_options_set);
  
        /* If we previously had some optimization options, use them as the
  	 default.  */
--- 6468,6485 ----
    else
      {
        struct cl_optimization cur_opts;
+       struct cl_target_option cur_target;
        tree old_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node);
+       tree old_target = DECL_FUNCTION_SPECIFIC_TARGET (*node);
  
        /* Save current options.  */
        cl_optimization_save (&cur_opts, &global_options, &global_options_set);
!       cl_target_option_save (&cur_target, &global_options, &global_options_set);
! 
!       tree prev_target_node
! 	= old_target
! 	    ? old_target
! 	    : build_target_option_node (&global_options, &global_options_set);
  
        /* If we previously had some optimization options, use them as the
  	 default.  */
*************** handle_optimize_attribute (tree *node, t
*** 6492,6497 ****
--- 6498,6507 ----
  	cl_optimization_restore (&global_options, &global_options_set,
  				 TREE_OPTIMIZATION (old_opts));
  
+       if (old_target)
+ 	cl_target_option_restore (&global_options, &global_options_set,
+ 				  TREE_TARGET_OPTION (old_target));
+ 
        /* Parse options, and update the vector.  */
        parse_optimize_options (args, true);
        DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node)
*************** handle_optimize_attribute (tree *node, t
*** 6509,6515 ****
        cl_optimization_restore (&global_options, &global_options_set,
  			       &cur_opts);
        cl_target_option_restore (&global_options, &global_options_set,
! 				TREE_TARGET_OPTION (prev_target_node));
  
        if (saved_global_options != NULL)
  	{
--- 6519,6525 ----
        cl_optimization_restore (&global_options, &global_options_set,
  			       &cur_opts);
        cl_target_option_restore (&global_options, &global_options_set,
! 				&cur_target);
  
        if (saved_global_options != NULL)
  	{
diff -Nrcpad gcc-17-20260531/gcc/c-family/c-common.cc gcc-17-20260607/gcc/c-family/c-common.cc
*** gcc-17-20260531/gcc/c-family/c-common.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c-family/c-common.cc	Sun Jun  7 22:32:06 2026
*************** const struct c_common_resword c_common_r
*** 433,439 ****
--- 433,441 ----
    { "__auto_type",	RID_AUTO_TYPE,	D_CONLY },
    { "__builtin_addressof", RID_ADDRESSOF, D_CXXONLY },
    { "__builtin_assoc_barrier", RID_BUILTIN_ASSOC_BARRIER, 0 },
+   { "__builtin_bitreverseg", RID_BUILTIN_BITREVERSEG, 0 },
    { "__builtin_bit_cast", RID_BUILTIN_BIT_CAST, D_CXXONLY },
+   { "__builtin_bswapg", RID_BUILTIN_BSWAPG, 0 },
    { "__builtin_call_with_static_chain",
      RID_BUILTIN_CALL_WITH_STATIC_CHAIN, D_CONLY },
    { "__builtin_choose_expr", RID_CHOOSE_EXPR, D_CONLY },
*************** c_common_nodes_and_builtins (void)
*** 4920,4930 ****
  	}
      }
  
-   /* Call the target stack_protect_guard hook if the stack protection
-      guard is declared as a global symbol.  */
-   if (targetm.stack_protect_guard_symbol_p ())
-     lang_hooks.decls.pushdecl (targetm.stack_protect_guard ());
- 
    if (TREE_CODE (va_list_type_node) == ARRAY_TYPE)
      {
        va_list_arg_type_node = va_list_ref_type_node =
--- 4922,4927 ----
diff -Nrcpad gcc-17-20260531/gcc/c-family/c-common.h gcc-17-20260607/gcc/c-family/c-common.h
*** gcc-17-20260531/gcc/c-family/c-common.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c-family/c-common.h	Sun Jun  7 22:32:06 2026
*************** enum rid
*** 111,117 ****
    RID_TYPES_COMPATIBLE_P,      RID_BUILTIN_COMPLEX,	   RID_BUILTIN_SHUFFLE,
    RID_BUILTIN_SHUFFLEVECTOR,   RID_BUILTIN_CONVERTVECTOR,  RID_BUILTIN_TGMATH,
    RID_BUILTIN_HAS_ATTRIBUTE,   RID_BUILTIN_ASSOC_BARRIER,  RID_BUILTIN_STDC,
!   RID_BUILTIN_COUNTED_BY_REF,
    RID_DFLOAT32, RID_DFLOAT64, RID_DFLOAT128, RID_DFLOAT64X,
  
    /* TS 18661-3 keywords, in the same sequence as the TI_* values.  */
--- 111,118 ----
    RID_TYPES_COMPATIBLE_P,      RID_BUILTIN_COMPLEX,	   RID_BUILTIN_SHUFFLE,
    RID_BUILTIN_SHUFFLEVECTOR,   RID_BUILTIN_CONVERTVECTOR,  RID_BUILTIN_TGMATH,
    RID_BUILTIN_HAS_ATTRIBUTE,   RID_BUILTIN_ASSOC_BARRIER,  RID_BUILTIN_STDC,
!   RID_BUILTIN_COUNTED_BY_REF,  RID_BUILTIN_BSWAPG,
!   RID_BUILTIN_BITREVERSEG,
    RID_DFLOAT32, RID_DFLOAT64, RID_DFLOAT128, RID_DFLOAT64X,
  
    /* TS 18661-3 keywords, in the same sequence as the TI_* values.  */
diff -Nrcpad gcc-17-20260531/gcc/c-family/c-ubsan.cc gcc-17-20260607/gcc/c-family/c-ubsan.cc
*** gcc-17-20260531/gcc/c-family/c-ubsan.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c-family/c-ubsan.cc	Sun Jun  7 22:32:06 2026
*************** ubsan_instrument_bounds_pointer_address
*** 597,603 ****
    *index = save_expr (*index);
  
    /* Create an array_type for the corresponding pointer array.  */
!   tree itype = build_range_type (sizetype, size_zero_node, NULL_TREE);
    /* The array's element type can be get from the return type of the call to
       .ACCESS_WITH_SIZE.  */
    tree element_type = TREE_TYPE (TREE_TYPE (call));
--- 597,603 ----
    *index = save_expr (*index);
  
    /* Create an array_type for the corresponding pointer array.  */
!   tree itype = build_index_type (NULL_TREE);
    /* The array's element type can be get from the return type of the call to
       .ACCESS_WITH_SIZE.  */
    tree element_type = TREE_TYPE (TREE_TYPE (call));
*************** get_factors_from_mul_expr (tree mult_exp
*** 667,673 ****
  
  static tree
  get_index_from_offset (tree offset, tree *index_p,
! 		       int *index_n, tree element_size)
  {
    if (TREE_CODE (offset) != MULT_EXPR
        && TREE_CODE (offset) != INTEGER_CST)
--- 667,674 ----
  
  static tree
  get_index_from_offset (tree offset, tree *index_p,
! 		       int *index_n, tree *factor,
! 		       tree element_size)
  {
    if (TREE_CODE (offset) != MULT_EXPR
        && TREE_CODE (offset) != INTEGER_CST)
*************** get_index_from_offset (tree offset, tree
*** 679,686 ****
  
    if (TREE_CODE (offset) == INTEGER_CST
        && TREE_CODE (element_size) == INTEGER_CST)
!     return fold_build2 (EXACT_DIV_EXPR, TREE_TYPE (offset),
! 			offset, element_size);
  
    auto_vec<factor_t> e_factors, o_factors;
    get_factors_from_mul_expr (element_size, NULL, -1, &e_factors);
--- 680,690 ----
  
    if (TREE_CODE (offset) == INTEGER_CST
        && TREE_CODE (element_size) == INTEGER_CST)
!     {
!       *factor = element_size;
!       return fold_build2 (EXACT_DIV_EXPR, TREE_TYPE (offset),
! 			  offset, element_size);
!     }
  
    auto_vec<factor_t> e_factors, o_factors;
    get_factors_from_mul_expr (element_size, NULL, -1, &e_factors);
*************** get_index_from_offset (tree offset, tree
*** 730,736 ****
     If failed, return NULL_TREE.  */
  
  static tree
! get_index_from_pointer_addr_expr (tree pointer, tree *index_p, int *index_n)
  {
    *index_p = NULL_TREE;
    *index_n = -1;
--- 734,741 ----
     If failed, return NULL_TREE.  */
  
  static tree
! get_index_from_pointer_addr_expr (tree pointer, tree *index_p,
! 				  int *index_n, tree *factor)
  {
    *index_p = NULL_TREE;
    *index_n = -1;
*************** get_index_from_pointer_addr_expr (tree p
*** 761,767 ****
  	  index_exp = TREE_OPERAND (index_exp, 0);
  	}
        index_exp = get_index_from_offset (index_exp, index_p,
! 					 index_n, pointee_size);
  
        if (!index_exp)
  	return NULL_TREE;
--- 766,772 ----
  	  index_exp = TREE_OPERAND (index_exp, 0);
  	}
        index_exp = get_index_from_offset (index_exp, index_p,
! 					 index_n, factor, pointee_size);
  
        if (!index_exp)
  	return NULL_TREE;
*************** get_index_from_pointer_addr_expr (tree p
*** 791,797 ****
  static bool
  is_instrumentable_pointer_array_address (tree expr, tree *base,
  					 tree *index, tree *index_p,
! 					 int *index_n)
  {
    /* For a pointer array address as:
  	.ACCESS_WITH_SIZE (p->c, &p->b, 1, 0, -1, 0B)
--- 796,802 ----
  static bool
  is_instrumentable_pointer_array_address (tree expr, tree *base,
  					 tree *index, tree *index_p,
! 					 int *index_n, tree *factor)
  {
    /* For a pointer array address as:
  	.ACCESS_WITH_SIZE (p->c, &p->b, 1, 0, -1, 0B)
*************** is_instrumentable_pointer_array_address
*** 804,810 ****
    tree op0 = TREE_OPERAND (expr, 0);
    if (!is_access_with_size_p (op0))
      return false;
!   tree op1 = get_index_from_pointer_addr_expr (expr, index_p, index_n);
    if (op1 != NULL_TREE)
      {
        *base = op0;
--- 809,815 ----
    tree op0 = TREE_OPERAND (expr, 0);
    if (!is_access_with_size_p (op0))
      return false;
!   tree op1 = get_index_from_pointer_addr_expr (expr, index_p, index_n, factor);
    if (op1 != NULL_TREE)
      {
        *base = op0;
*************** ubsan_array_ref_instrumented_p (tree t)
*** 828,850 ****
    tree op0 = NULL_TREE;
    tree op1 = NULL_TREE;
    tree index_p = NULL_TREE;
    int index_n = 0;
    if (is_array)
      {
-       op1 = TREE_OPERAND (t, 1);
-       return TREE_CODE (op1) == COMPOUND_EXPR
- 	     && TREE_CODE (TREE_OPERAND (op1, 0)) == CALL_EXPR
- 	     && CALL_EXPR_FN (TREE_OPERAND (op1, 0)) == NULL_TREE
- 	     && CALL_EXPR_IFN (TREE_OPERAND (op1, 0)) == IFN_UBSAN_BOUNDS;
      }
-   else if (is_instrumentable_pointer_array_address (t, &op0, &op1,
- 						    &index_p, &index_n))
-     return TREE_CODE (op1) == COMPOUND_EXPR
- 	   && TREE_CODE (TREE_OPERAND (op1, 0)) == CALL_EXPR
- 	   && CALL_EXPR_FN (TREE_OPERAND (op1, 0)) == NULL_TREE
- 	   && CALL_EXPR_IFN (TREE_OPERAND (op1, 0)) == IFN_UBSAN_BOUNDS;
  
!   return false;
  }
  
  /* Instrument an ARRAY_REF or an address computation whose base address is
--- 833,854 ----
    tree op0 = NULL_TREE;
    tree op1 = NULL_TREE;
    tree index_p = NULL_TREE;
+   tree factor = NULL_TREE;
    int index_n = 0;
+ 
    if (is_array)
+     op1 = TREE_OPERAND (t, 1);
+   else if (is_instrumentable_pointer_array_address (t, &op0, &op1,
+ 						    &index_p, &index_n,
+ 						    &factor))
      {
      }
  
!   return op1 != NULL_TREE
! 	 && TREE_CODE (op1) == COMPOUND_EXPR
! 	 && TREE_CODE (TREE_OPERAND (op1, 0)) == CALL_EXPR
! 	 && CALL_EXPR_FN (TREE_OPERAND (op1, 0)) == NULL_TREE
! 	 && CALL_EXPR_IFN (TREE_OPERAND (op1, 0)) == IFN_UBSAN_BOUNDS;
  }
  
  /* Instrument an ARRAY_REF or an address computation whose base address is
*************** ubsan_array_ref_instrumented_p (tree t)
*** 855,864 ****
  void
  ubsan_maybe_instrument_array_ref (tree *expr_p, bool ignore_off_by_one)
  {
-   tree e = NULL_TREE;
    tree op0 = NULL_TREE;
    tree op1 = NULL_TREE;
    tree index_p = NULL_TREE;  /* the parent tree of INDEX.  */
    int index_n = 0;  /* the operand position of INDEX in the parent tree.  */
  
    if (!ubsan_array_ref_instrumented_p (*expr_p)
--- 859,868 ----
  void
  ubsan_maybe_instrument_array_ref (tree *expr_p, bool ignore_off_by_one)
  {
    tree op0 = NULL_TREE;
    tree op1 = NULL_TREE;
    tree index_p = NULL_TREE;  /* the parent tree of INDEX.  */
+   tree factor = NULL_TREE;
    int index_n = 0;  /* the operand position of INDEX in the parent tree.  */
  
    if (!ubsan_array_ref_instrumented_p (*expr_p)
*************** ubsan_maybe_instrument_array_ref (tree *
*** 869,889 ****
  	{
  	  op0 = TREE_OPERAND (*expr_p, 0);
  	  op1 = TREE_OPERAND (*expr_p, 1);
! 	  index_p = *expr_p;
! 	  index_n = 1;
! 	  e = ubsan_instrument_bounds (EXPR_LOCATION (*expr_p), op0,
! 				       &op1, ignore_off_by_one);
  	}
        else if (is_instrumentable_pointer_array_address (*expr_p, &op0, &op1,
! 							&index_p, &index_n))
! 	e = ubsan_instrument_bounds_pointer_address (EXPR_LOCATION (*expr_p),
! 						     op0, &op1,
! 						     ignore_off_by_one);
  
!       /* Replace the original INDEX with the instrumented INDEX.  */
!       if (e != NULL_TREE)
! 	TREE_OPERAND (index_p, index_n)
! 	  = build2 (COMPOUND_EXPR, TREE_TYPE (op1), e, op1);
      }
  }
  
--- 873,904 ----
  	{
  	  op0 = TREE_OPERAND (*expr_p, 0);
  	  op1 = TREE_OPERAND (*expr_p, 1);
! 	  tree e = ubsan_instrument_bounds (EXPR_LOCATION (*expr_p), op0,
! 					    &op1, ignore_off_by_one);
! 	  /* Replace the original INDEX with the instrumented INDEX.  */
! 	  if (e != NULL_TREE)
! 	    TREE_OPERAND (*expr_p, 1)
! 	      = build2 (COMPOUND_EXPR, TREE_TYPE (op1), e, op1);
  	}
        else if (is_instrumentable_pointer_array_address (*expr_p, &op0, &op1,
! 							&index_p, &index_n,
! 							&factor))
! 	{
! 	  tree e
! 	    = ubsan_instrument_bounds_pointer_address (EXPR_LOCATION (*expr_p),
! 						       op0, &op1,
! 						       ignore_off_by_one);
! 	   /* Replace the original INDEX with the instrumented INDEX.  */
! 	  if (e != NULL_TREE)
! 	    {
! 	      /* If we had to remove a constant factor, add it back.  */
! 	      if (factor != NULL_TREE)
! 		op1 = fold_build2 (MULT_EXPR, TREE_TYPE (op1), op1, factor);
  
! 	      TREE_OPERAND (index_p, index_n)
! 		= build2 (COMPOUND_EXPR, TREE_TYPE (op1), e, op1);
! 	    }
! 	}
      }
  }
  
diff -Nrcpad gcc-17-20260531/gcc/c-family/c-warn.cc gcc-17-20260607/gcc/c-family/c-warn.cc
*** gcc-17-20260531/gcc/c-family/c-warn.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c-family/c-warn.cc	Sun Jun  7 22:32:06 2026
*************** warn_parm_array_mismatch (location_t ori
*** 3479,3487 ****
        cura->ptrarg = parmpos;
      }
  
    /* Set if the parameter is [re]declared as a VLA.  */
!   const bool cur_vla_p = cura->size || cura->minsize == HOST_WIDE_INT_M1U;
!   const bool new_vla_p = newa->size || newa->minsize == HOST_WIDE_INT_M1U;
  
    if (DECL_P (curp))
      origloc = DECL_SOURCE_LOCATION (curp);
--- 3479,3506 ----
        cura->ptrarg = parmpos;
      }
  
+ 
+   unsigned newbnds = 0;
+   unsigned newunspec = 0;
+ 
+   if (newa->internal_p)
+     {
+       newbnds = newa->vla_bounds (&newunspec);
+       newbnds += newunspec;
+     }
+ 
+   unsigned curbnds = 0;
+   unsigned curunspec = 0;
+ 
+   if (cura->internal_p)
+     {
+       curbnds = cura->vla_bounds (&curunspec);
+       curbnds += curunspec;
+     }
+ 
    /* Set if the parameter is [re]declared as a VLA.  */
!   const bool cur_vla_p = cura->minsize == HOST_WIDE_INT_M1U || 0 < curbnds;
!   const bool new_vla_p = newa->minsize == HOST_WIDE_INT_M1U || 0 < newbnds;
  
    if (DECL_P (curp))
      origloc = DECL_SOURCE_LOCATION (curp);
*************** warn_parm_array_mismatch (location_t ori
*** 3560,3569 ****
  
    if (newa->size || cura->size)
      {
-       unsigned newunspec, curunspec;
-       unsigned newbnds = newa->vla_bounds (&newunspec) + newunspec;
-       unsigned curbnds = cura->vla_bounds (&curunspec) + curunspec;
- 
        if (newbnds != curbnds)
  	{
  	  if (warning_n (newloc, OPT_Wvla_parameter, newbnds,
--- 3579,3584 ----
diff -Nrcpad gcc-17-20260531/gcc/c-family/c.opt.urls gcc-17-20260607/gcc/c-family/c.opt.urls
*** gcc-17-20260531/gcc/c-family/c.opt.urls	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/c-family/c.opt.urls	Sun Jun  7 22:32:06 2026
*************** UrlSuffix(gcc/Warning-Options.html#index
*** 1008,1016 ****
  Wstrict-null-sentinel
  UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
  
- Wstrict-overflow=
- UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
- 
  Wstrict-prototypes
  UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
  
--- 1008,1013 ----
diff -Nrcpad gcc-17-20260531/gcc/calls.cc gcc-17-20260607/gcc/calls.cc
*** gcc-17-20260531/gcc/calls.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/calls.cc	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 61,66 ****
--- 61,68 ----
  #include "value-query.h"
  #include "tree-pretty-print.h"
  #include "tree-eh.h"
+ #include "regs.h"
+ #include "function-abi.h"
  
  /* Like PREFERRED_STACK_BOUNDARY but in units of bytes, not bits.  */
  #define STACK_BYTES (PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT)
*************** static void compute_argument_addresses (
*** 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 *,
--- 161,166 ----
*************** mark_stack_region_used (poly_uint64 lowe
*** 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.
--- 213,218 ----
*************** emit_call_1 (rtx funexp, tree fntree ATT
*** 536,541 ****
--- 514,520 ----
        cfun->calls_setjmp = 1;
      }
  
+   CALL_INSN_ABI_ID (call_insn) = (funtype ? fntype_abi (funtype).id () : 0);
    SIBLING_CALL_P (call_insn) = ((ecf_flags & ECF_SIBCALL) != 0);
  
    /* Restore this now, so that we do defer pops for this call's args
*************** initialize_argument_information (int num
*** 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);
  		}
--- 1484,1513 ----
  
  	      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);
  		}
*************** expand_call (tree exp, rtx target, int i
*** 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;
  	  }
        }
--- 2914,2921 ----
  	    /* 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;
  	  }
        }
diff -Nrcpad gcc-17-20260531/gcc/cfgcleanup.cc gcc-17-20260607/gcc/cfgcleanup.cc
*** gcc-17-20260531/gcc/cfgcleanup.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cfgcleanup.cc	Sun Jun  7 22:32:06 2026
*************** old_insns_match_p (int mode ATTRIBUTE_UN
*** 1204,1209 ****
--- 1204,1210 ----
  
        if (!rtx_equal_p (CALL_INSN_FUNCTION_USAGE (i1),
  			CALL_INSN_FUNCTION_USAGE (i2))
+ 	  || CALL_INSN_ABI_ID (i1) != CALL_INSN_ABI_ID (i2)
  	  || SIBLING_CALL_P (i1) != SIBLING_CALL_P (i2))
  	return dir_none;
  
diff -Nrcpad gcc-17-20260531/gcc/cobol/ChangeLog gcc-17-20260607/gcc/cobol/ChangeLog
*** gcc-17-20260531/gcc/cobol/ChangeLog	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/ChangeLog	Sun Jun  7 22:32:06 2026
***************
*** 1,3 ****
--- 1,22 ----
+ 2026-06-02  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* compare.cc (cobol_compare_relop): Rename the cobol_compare_relop
+ 	function.
+ 	(cobol_compare): Likewise.
+ 	* compare.h (cobol_compare_relop): Likewise.
+ 	(cobol_compare): Likewise.
+ 	* genapi.cc (parser_display): Refine the use of SYSPUNCH_e for
+ 	inserting debugging comments into the assembly language.
+ 	(parser_relop): Use "cobol_compare".
+ 	(handle_gg_trim): Break out SBC TRIM logic.
+ 	(parser_intrinsic_call_2): Likewise.
+ 	(parser_bsearch_when): Use "cobol_compare"
+ 	* genutil.cc (refer_is_super_clean): FldLiteralN is always "super
+ 	clean".
+ 	(is_pure_integer): Make binary_from_FldNumericBin5 "static bool".
+ 	(binary_from_FldLiteralN): New function.
+ 	(get_binary_value): Use the new function.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* compare.cc (alpha_compare): Fix typos.
diff -Nrcpad gcc-17-20260531/gcc/cobol/Make-lang.in gcc-17-20260607/gcc/cobol/Make-lang.in
*** gcc-17-20260531/gcc/cobol/Make-lang.in	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/Make-lang.in	Sun Jun  7 22:32:06 2026
*************** cobol_OBJS = \
*** 125,130 ****
--- 125,132 ----
  #
  CFLAGS-cobol/gcobolspec.o += $(DRIVER_DEFINES)
  
+ CFLAGS-cobol/cobol1.o += -DLIBSUBDIR=\"$(libsubdir)\"
+ 
  #
  # This controls the build of the gcobol "driver"
  #
diff -Nrcpad gcc-17-20260531/gcc/cobol/cobol1.cc gcc-17-20260607/gcc/cobol/cobol1.cc
*** gcc-17-20260531/gcc/cobol/cobol1.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/cobol1.cc	Sun Jun  7 22:32:06 2026
*************** struct GTY (()) language_function
*** 103,108 ****
--- 103,110 ----
      int dummy;
      };
  
+ static const char dir_separator[] = {DIR_SEPARATOR, 0};
+ 
  /*
   *  Language hooks.
   */
*************** enable_exceptions( bool enable ) {
*** 367,372 ****
--- 369,443 ----
    }
  }
  
+ static void
+ libcompat_copybook(const char *dir)
+   {
+   char *gnu = concat(dir, NULL);
+ 
+   if (gnu[strlen(gnu) - 1] != DIR_SEPARATOR)
+       gnu = concat(gnu, dir_separator, NULL);
+ 
+   gnu = concat(gnu, "compat", dir_separator, "gnu", NULL);
+ 
+   char *paths[] =
+       {
+           concat(gnu, dir_separator, "lib", NULL),
+           concat(gnu, dir_separator, "cpy", NULL),
+           concat(gnu, dir_separator, "udf", NULL)
+       };
+ 
+   for (size_t i = 0; i < sizeof paths / sizeof *paths; i++)
+       {
+       // Inject the installation prefix paths to the libcompat copybooks.
+       copybook_directory_add(paths[i]);
+       free(paths[i]);
+       }
+ 
+   free(gnu);
+   }
+ 
+ static void
+ libposix_copybook(const char *dir)
+   {
+   char *posix = concat(dir, NULL);
+ 
+   if (posix[strlen(posix) - 1] != DIR_SEPARATOR)
+     posix = concat(posix, dir_separator, NULL);
+ 
+   posix = concat(posix, "posix", NULL);
+ 
+   char *paths[] =
+       {
+       concat(posix, dir_separator, "cpy", NULL),
+       concat(posix, dir_separator, "udf", NULL),
+       };
+ 
+   for (size_t i = 0; i < sizeof paths / sizeof *paths; i++)
+       {
+       copybook_directory_add(paths[i]);
+       free(paths[i]);
+       }
+ 
+   free(posix);
+   }
+ 
+ static void
+ append_copybook_prefix(const char *prefix, void (*fn)(const char *))
+   {
+     char *opts[] =
+         {
+         concat(prefix, dir_separator, "cobol", NULL),
+         concat(prefix, NULL),
+         NULL
+         };
+ 
+     for (char **s = opts; *s; ++s)
+         {
+         fn(*s);
+         free(*s);
+         }
+   }
+ 
  void cobol_warning( cbl_diag_id_t id, int yn, bool );
  void cobol_warning_suppress( cbl_dialect_t dialect );
  
*************** cobol_langhook_handle_option (size_t sco
*** 386,391 ****
--- 457,466 ----
  
      switch(code)
          {
+         case OPT_B:
+             append_copybook_prefix(arg, libcompat_copybook);
+             append_copybook_prefix(arg, libposix_copybook);
+             return true;
          case OPT_D:
              defined_cmd(arg);
              return true;
*************** cobol_langhook_handle_option (size_t sco
*** 397,403 ****
              copybook_directory_add(arg);
              return true;
          case OPT_copyext:
!             copybook_extension_add(cobol_copyext);
              return true;
  
          case OPT_fexec_charset_:
--- 472,480 ----
              copybook_directory_add(arg);
              return true;
          case OPT_copyext:
!         case OPT_isystem:
!         case OPT_idirafter:
!             copybook_extension_add(arg);
              return true;
  
          case OPT_fexec_charset_:
*************** cobol_langhook_getdecls (void)
*** 804,809 ****
--- 881,894 ----
      return NULL;
      }
  
+ static bool
+ cobol_langhook_post_options (const char **pfilename ATTRIBUTE_UNUSED)
+     {
+     append_copybook_prefix(LIBSUBDIR, libcompat_copybook);
+     append_copybook_prefix(LIBSUBDIR, libposix_copybook);
+     return false;
+     }
+ 
  char *
  cobol_name_mangler(const char *cobol_name_)
      {
*************** cobol_get_sarif_source_language(const ch
*** 909,914 ****
--- 994,1000 ----
  #undef LANG_HOOKS_GETDECLS
  #undef LANG_HOOKS_GLOBAL_BINDINGS_P
  #undef LANG_HOOKS_HANDLE_OPTION
+ #undef LANG_HOOKS_POST_OPTIONS
  #undef LANG_HOOKS_INIT
  #undef LANG_HOOKS_INIT_OPTIONS_STRUCT
  #undef LANG_HOOKS_NAME
*************** cobol_get_sarif_source_language(const ch
*** 930,935 ****
--- 1016,1022 ----
  
  #define LANG_HOOKS_INIT_OPTIONS_STRUCT      cobol_langhook_init_options_struct
  #define LANG_HOOKS_HANDLE_OPTION            cobol_langhook_handle_option
+ #define LANG_HOOKS_POST_OPTIONS             cobol_langhook_post_options
  
  #define LANG_HOOKS_BUILTIN_FUNCTION         cobol_langhook_builtin_function
  #define LANG_HOOKS_GETDECLS                 cobol_langhook_getdecls
diff -Nrcpad gcc-17-20260531/gcc/cobol/compare.cc gcc-17-20260607/gcc/cobol/compare.cc
*** gcc-17-20260531/gcc/cobol/compare.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/compare.cc	Sun Jun  7 22:32:06 2026
*************** compare_class( tree        &left,
*** 1368,1377 ****
    }
  
  void
! cobol_compare_relop(tree        &left,
!                     tree        &right,
!               const cbl_refer_t &left_side,
!               const cbl_refer_t &right_side)
    {
    // This routine figures out how to compare left_side to right_side, and
    // returns the trees 'left' and 'right' in numeric form that can be turned
--- 1368,1377 ----
    }
  
  void
! cobol_compare(tree        &left,
!               tree        &right,
!         const cbl_refer_t &left_side,
!         const cbl_refer_t &right_side)
    {
    // This routine figures out how to compare left_side to right_side, and
    // returns the trees 'left' and 'right' in numeric form that can be turned
diff -Nrcpad gcc-17-20260531/gcc/cobol/compare.h gcc-17-20260607/gcc/cobol/compare.h
*** gcc-17-20260531/gcc/cobol/compare.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/compare.h	Sun Jun  7 22:32:06 2026
***************
*** 34,42 ****
      "left" and "right" var_decl trees, which can be fed directly into one of
      the six relational expressions like EQ_EXPR, LT_EXPR, and so on. */
  
! void cobol_compare_relop( tree        &left,
!                           tree        &right,
!                     const cbl_refer_t &left_side,
!                     const cbl_refer_t &right_side);
  
  #endif
--- 34,42 ----
      "left" and "right" var_decl trees, which can be fed directly into one of
      the six relational expressions like EQ_EXPR, LT_EXPR, and so on. */
  
! void cobol_compare( tree        &left,
!                     tree        &right,
!               const cbl_refer_t &left_side,
!               const cbl_refer_t &right_side);
  
  #endif
diff -Nrcpad gcc-17-20260531/gcc/cobol/gcobolspec.cc gcc-17-20260607/gcc/cobol/gcobolspec.cc
*** gcc-17-20260531/gcc/cobol/gcobolspec.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/gcobolspec.cc	Sun Jun  7 22:32:06 2026
*************** lang_specific_driver (struct cl_decoded_
*** 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
--- 507,512 ----
*************** lang_specific_driver (struct cl_decoded_
*** 543,563 ****
      }
    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 )
      {
--- 538,544 ----
*************** lang_specific_driver (struct cl_decoded_
*** 569,582 ****
      }
    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 )
--- 550,556 ----
*************** lang_specific_driver (struct cl_decoded_
*** 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
  
--- 559,564 ----
diff -Nrcpad gcc-17-20260531/gcc/cobol/genapi.cc gcc-17-20260607/gcc/cobol/genapi.cc
*** gcc-17-20260531/gcc/cobol/genapi.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/genapi.cc	Sun Jun  7 22:32:06 2026
*************** parser_enter_file(const char *filename)
*** 3012,3017 ****
--- 3012,3018 ----
      SET_VAR_DECL(var_decl_nop                     , INT                     , "__gg__nop"             );
      SET_VAR_DECL(var_decl_main_called             , INT                     , "__gg__main_called"     );
      SET_VAR_DECL(var_decl_entry_index             , SIZE_T                  , "__gg__entry_index"     );
+     SET_VAR_DECL(var_decl_dialects                , INT                     , "__gg__dialects"        );
      }
    }
  
*************** parser_display( const struct cbl_special
*** 5254,5260 ****
        case SYSOUT_e:
        case SYSLIST_e:
        case SYSLST_e:
-       case SYSPUNCH_e:
        case SYSPCH_e:
          // In the 21st century, when there are no longer valid assumptions to
          // be made about the existence of line printers, and where things
--- 5255,5260 ----
*************** parser_display( const struct cbl_special
*** 5269,5274 ****
--- 5269,5290 ----
          needs_closing = true;
          break;
  
+       case SYSPUNCH_e:
+         // With the ASSEMBLER environment variable, SYSPUNCH means "insert
+         // the text into the assembly language".  So, we don't need a file
+         // descriptor.
+         if( !getenv("ASSEMBLER") )
+           {
+           gg_assign(file_descriptor,
+                     gg_call_expr( INT,
+                                   "__gg__get_file_descriptor",
+                                   gg_string_literal(upon->os_filename),
+                                   NULL_TREE));
+           needs_closing = true;
+           }
+         break;
+ 
+ 
        case ARG_NUM_e:
          // Set the index number for a subsequent ACCEPT FROM ARG_VALUE_e
          gg_call(VOID,
*************** parser_division(cbl_division_t division,
*** 7382,7387 ****
--- 7398,7406 ----
  
          // And then flag one-time initialization as having been done.
          gg_assign(globals_are_initialized, integer_one_node);
+ 
+         // Let the library know what -dialect entries are in force:
+         gg_assign(var_decl_dialects, build_int_cst_type(INT, cbl_dialects));
          }
        ELSE
          ENDIF
*************** parser_relop(   cbl_field_t *tgt,
*** 7736,7742 ****
  
    tree left;
    tree right;
!   cobol_compare_relop(left, right, aref, bref);
    tgt->var_decl_node = gg_build_relational_expression(left,
                                                        relop,
                                                        right);
--- 7755,7761 ----
  
    tree left;
    tree right;
!   cobol_compare(left, right, aref, bref);
    tgt->var_decl_node = gg_build_relational_expression(left,
                                                        relop,
                                                        right);
*************** parser_intrinsic_call_1( cbl_field_t *tg
*** 11377,11382 ****
--- 11396,11515 ----
      }
    }
  
+ static bool
+ handle_gg_trim(cbl_field_t *tgt,
+                const cbl_refer_t& input,
+                size_t how,
+                const std::vector<cbl_refer_t>& args )
+   {
+   bool handled = false;
+   charmap_t *charmap = __gg__get_charmap(input.field->codeset.encoding);
+     {
+     if(charmap->stride() == 1 && !charmap->is_like_utf8() )
+       {
+       size_t array_size = args.size();
+       tree charstype = build_array_type_nelts(UCHAR, array_size);
+       tree chars     = gg_define_variable( charstype,
+                                            NULL,
+                                            vs_stack);
+       TREE_ADDRESSABLE (chars) = 1;
+       tree char_p    = gg_define_variable(UCHAR_P);
+       gg_assign(char_p, gg_pointer_to_array (chars));
+ 
+       for(const auto& arg : args)
+         {
+         cbl_figconst_t figconst = static_cast<cbl_figconst_t>
+                                             (arg.field->attr & FIGCONST_MASK);
+         if( figconst )
+           {
+           cbl_char_t figcst = charmap->figconst_character(figconst);
+           tree tfigcst = build_int_cst_type(UCHAR, figcst);
+           gg_assign(gg_indirect(char_p), tfigcst);
+           }
+         else
+           {
+           tree location;
+           get_location(location, arg);
+           gg_assign(gg_indirect(char_p), gg_indirect(location));
+           }
+         gg_increment(char_p);
+         }
+ 
+       gg_call(VOID,
+               "__gg__trim_1",
+               gg_get_address_of(tgt->var_decl_node),
+               gg_get_address_of(input.field->var_decl_node),
+               refer_offset(input),
+               refer_size_source(input),
+               gg_pointer_to_array(chars),
+               build_int_cst_type(INT, (args.size()<<8) + how),
+               NULL_TREE);
+       handled = true;
+       }
+     }
+   return handled;
+   }
+ 
+ void
+ parser_trim( cbl_field_t *tgt,
+              const cbl_refer_t& input,
+              size_t how,
+              const std::vector<cbl_refer_t>& args )
+   {
+   RETURN_IF_PARSE_ONLY;
+   gcc_assert(how >= 1 && how <= 3);
+   if( !handle_gg_trim(tgt, input, how, args) )
+     {
+     cbl_encoding_t encoding = input.field->codeset.encoding;
+     charmap_t *charmap = __gg__get_charmap(encoding);
+     int stride = charmap->stride();
+     tree tstride = build_int_cst_type(SIZE_T, stride);
+ 
+     size_t array_size = args.size() * stride;
+     tree charstype = build_array_type_nelts(CHAR, array_size);
+     tree chars     = gg_define_variable( charstype,
+                                          NULL,
+                                          vs_stack);
+     TREE_ADDRESSABLE (chars) = 1;
+     tree char_p    = gg_define_variable(CHAR_P);
+     gg_assign(char_p, gg_pointer_to_array (chars));
+ 
+     for(const auto& arg : args)
+       {
+       cbl_figconst_t figconst = static_cast<cbl_figconst_t>
+                                           (arg.field->attr & FIGCONST_MASK);
+       if( figconst )
+         {
+         cbl_char_t figcst = charmap->figconst_character(figconst);
+         tree tfigcst = build_int_cst_type(ULONG, figcst);
+ 
+         gg_memcpy(char_p,
+                   gg_get_address_of(tfigcst),
+                   tstride );
+         }
+       else
+         {
+         tree location;
+         get_location(location, arg);
+         gg_memcpy(char_p,
+                   location,
+                   tstride);
+         }
+       gg_assign(char_p, gg_add(char_p, tstride));
+       }
+     gg_call(VOID,
+             "__gg__trim_a",
+             gg_get_address_of(tgt->var_decl_node),
+             gg_get_address_of(input.field->var_decl_node),
+             refer_offset(input),
+             refer_size_source(input),
+             gg_pointer_to_array (chars),
+             build_int_cst_type(SIZE_T, array_size),
+             build_int_cst_type(INT, how),
+             NULL_TREE);
+     }
+   }
+ 
  void
  parser_intrinsic_call_2( cbl_field_t *tgt,
                         const char function_name[],
*************** parser_intrinsic_call_2( cbl_field_t *tg
*** 11415,11420 ****
--- 11548,11554 ----
            refer_offset(ref2),
            refer_size_source(ref2),
            NULL_TREE);
+ 
    TRACE1
      {
      TRACE1_INDENT
*************** parser_bsearch_when(cbl_label_t* name,
*** 12010,12020 ****
    tree right;
    if( ascending )
      {
!     cobol_compare_relop(left, right, key, sarg);
      }
    else
      {
!     cobol_compare_relop(left, right, sarg, key);
      }
  
    IF( left, lt_op, right )
--- 12144,12154 ----
    tree right;
    if( ascending )
      {
!     cobol_compare(left, right, key, sarg);
      }
    else
      {
!     cobol_compare(left, right, sarg, key);
      }
  
    IF( left, lt_op, right )
diff -Nrcpad gcc-17-20260531/gcc/cobol/genapi.h gcc-17-20260607/gcc/cobol/genapi.h
*** gcc-17-20260531/gcc/cobol/genapi.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/genapi.h	Sun Jun  7 22:32:06 2026
*************** void parser_statement_end( const std::li
*** 618,621 ****
--- 618,624 ----
  tree parser_compile_ecs( const std::vector<uint64_t>& ecs );
  tree parser_compile_dcls( const std::vector<uint64_t>& dcls );
  
+ void parser_trim( cbl_field_t *tgt, const cbl_refer_t& input,
+                   size_t how, const std::vector<cbl_refer_t>& args );
+ 
  #endif
diff -Nrcpad gcc-17-20260531/gcc/cobol/genutil.cc gcc-17-20260607/gcc/cobol/genutil.cc
*** gcc-17-20260531/gcc/cobol/genutil.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/genutil.cc	Sun Jun  7 22:32:06 2026
*************** tree var_decl_main_called;        // int
*** 101,106 ****
--- 101,109 ----
  // Indicates the target index of an ENTRY statement
  tree var_decl_entry_index; // void* __gg__entry_index
  
+ // Indicates the dialects the compiler was set to
+ tree var_decl_dialects; // void* __gg__dialects
+ 
  #if 0
  #define REFER(a)
  #else
*************** refer_is_super_clean(const cbl_refer_t &
*** 2024,2036 ****
    // otherwise in condition so that we can use refer.field->var_data_node for
    // GENERIC, thus getting rid the additional level of indirection through
    // the refer.field->var_decl_node::data pointer
!   return   refer_is_clean(refer)
!         && !(refer.field->attr & (  based_e
!                                   | linkage_e
!                                   | local_e
!                                   | intermediate_e
!                                   | any_length_e
!                                   | external_e)) ;
    }
  
  bool
--- 2027,2045 ----
    // otherwise in condition so that we can use refer.field->var_data_node for
    // GENERIC, thus getting rid the additional level of indirection through
    // the refer.field->var_decl_node::data pointer
! 
!   // Note: By rights, FldLiteralA should be super-clean, but errors ensue when
!   // it is made so.  This should be tracked down.  The disconnect might be in
!   // get_location().
!   return     // refer.field->type == FldLiteralA ||
!              refer.field->type == FldLiteralN
!            || (refer_is_clean(refer)
!               && !(refer.field->attr & (  based_e
!                                         | linkage_e
!                                         | local_e
!                                         | intermediate_e
!                                         | any_length_e
!                                         | external_e))) ;
    }
  
  bool
*************** is_pure_integer(const cbl_field_t *field
*** 2316,2322 ****
    return retval;
    }
  
! bool
  binary_from_FldNumericBin5(tree &value, const cbl_refer_t &refer, tree type)
    {
    bool retval = false;
--- 2325,2331 ----
    return retval;
    }
  
! static bool
  binary_from_FldNumericBin5(tree &value, const cbl_refer_t &refer, tree type)
    {
    bool retval = false;
*************** binary_from_FldNumericBin5(tree &value,
*** 2403,2408 ****
--- 2412,2435 ----
    return retval;
    }
  
+ static bool
+ binary_from_FldLiteralN(tree &value, const cbl_refer_t &refer, tree type)
+   {
+   // The data_decl_node has the value we need.
+ 
+   tree source_type = tree_type_from_field(refer.field);
+   if( !type )
+     {
+     type = source_type;
+     }
+ 
+   value = gg_define_variable(type);
+   gg_assign(value, gg_cast(type, refer.field->data_decl_node));
+ 
+   return true;
+   }
+ 
+ 
  bool
  binary_from_FldNumericBinary(tree &value, const cbl_refer_t &refer, tree type)
    {
*************** get_binary_value(tree &value, const cbl_
*** 3116,3123 ****
      // We know that the refer is a type that involves an integer binary value.
      switch(refer.field->type)
        {
-       case FldNumericBin5:
        case FldLiteralN:
        case FldIndex:
        case FldPointer:
          retval = binary_from_FldNumericBin5(value, refer, type);
--- 3143,3153 ----
      // We know that the refer is a type that involves an integer binary value.
      switch(refer.field->type)
        {
        case FldLiteralN:
+         retval = binary_from_FldLiteralN(value, refer, type);
+         break;
+ 
+       case FldNumericBin5:
        case FldIndex:
        case FldPointer:
          retval = binary_from_FldNumericBin5(value, refer, type);
diff -Nrcpad gcc-17-20260531/gcc/cobol/genutil.h gcc-17-20260607/gcc/cobol/genutil.h
*** gcc-17-20260531/gcc/cobol/genutil.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/genutil.h	Sun Jun  7 22:32:06 2026
*************** extern tree var_decl_call_parameter_leng
*** 60,65 ****
--- 60,66 ----
  extern tree var_decl_nop;         // int __gg__nop
  extern tree var_decl_main_called; // int __gg__main_called
  extern tree var_decl_entry_index; // void* __gg__entry_index
+ extern tree var_decl_dialects;    // void* __gg__dialects
  
  int       get_scaled_rdigits(cbl_field_t *field);
  int       get_scaled_digits(cbl_field_t *field);
diff -Nrcpad gcc-17-20260531/gcc/cobol/lang-specs.h gcc-17-20260607/gcc/cobol/lang-specs.h
*** gcc-17-20260531/gcc/cobol/lang-specs.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/lang-specs.h	Sun Jun  7 22:32:06 2026
***************
*** 34,40 ****
      {".CBL", "@cobol", 0, 0, 0},
      {"@cobol",
          "cobol1 %i %(cc1_options) "
!         "%{D*} %{E} %{I*} %{M} %{fmax-errors*} %{fsyntax-only*} "
          "%{fcobol-exceptions*} "
          "%{copyext} "
          "%{fdefaultbyte} "
--- 34,42 ----
      {".CBL", "@cobol", 0, 0, 0},
      {"@cobol",
          "cobol1 %i %(cc1_options) "
!         "%I "
!         "%{B*} %{D*} %{E} %{I*} %{M} %{fmax-errors*} %{fsyntax-only*} "
!         "%{idirafter}"
          "%{fcobol-exceptions*} "
          "%{copyext} "
          "%{fdefaultbyte} "
diff -Nrcpad gcc-17-20260531/gcc/cobol/lang.opt gcc-17-20260607/gcc/cobol/lang.opt
*** gcc-17-20260531/gcc/cobol/lang.opt	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/lang.opt	Sun Jun  7 22:32:06 2026
***************
*** 25,30 ****
--- 25,34 ----
  Language
  Cobol
  
+ B
+ Cobol
+ ; Documented in c.opt
+ 
  D
  Cobol Joined Separate
  ; Documented in c.opt
*************** isystem
*** 395,400 ****
--- 399,408 ----
  Cobol Joined Separate
  ; Documented in C
  
+ idirafter
+ Cobol Joined Separate
+ ; Documented in c.opt
+ 
  main
  Cobol
  -main	The first program-id in the next source file is called by a generated main() entry point.
diff -Nrcpad gcc-17-20260531/gcc/cobol/lang.opt.urls gcc-17-20260607/gcc/cobol/lang.opt.urls
*** gcc-17-20260531/gcc/cobol/lang.opt.urls	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/lang.opt.urls	Sun Jun  7 22:32:06 2026
***************
*** 1,5 ****
--- 1,8 ----
  ; Autogenerated by regenerate-opt-urls.py from gcc/cobol/lang.opt and generated HTML
  
+ B
+ UrlSuffix(gcc/Directory-Options.html#index-B) LangUrlSuffix_D(gdc/Directory-Options.html#index-B)
+ 
  D
  UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
  
*************** UrlSuffix(gcc/Directory-Options.html#ind
*** 37,39 ****
--- 40,45 ----
  isystem
  UrlSuffix(gcc/Directory-Options.html#index-isystem) LangUrlSuffix_Fortran(gfortran/Preprocessing-Options.html#index-isystem)
  
+ idirafter
+ UrlSuffix(gcc/Directory-Options.html#index-idirafter) LangUrlSuffix_Fortran(gfortran/Preprocessing-Options.html#index-idirafter)
+ 
diff -Nrcpad gcc-17-20260531/gcc/cobol/parse.y gcc-17-20260607/gcc/cobol/parse.y
*** gcc-17-20260531/gcc/cobol/parse.y	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/parse.y	Sun Jun  7 22:32:06 2026
*************** class locale_tgt_t {
*** 749,755 ****
  			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
--- 749,755 ----
  			perform_inline perform_except
  
  %type   <refer>         eval_subject1
! %type   <vargs>         vargs disp_vargs trim_expr
  %type   <field>         level_name
  %type   <number>        fd_name
  %type   <string>        picture_sym name66 paragraph_name
*************** class locale_tgt_t {
*** 783,789 ****
  %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
  %type   <field>         search_varying
  %type   <field>         search_term search_terms
--- 783,789 ----
  %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
  %type   <field>         search_varying
  %type   <field>         search_term search_terms
*************** class locale_tgt_t {
*** 820,827 ****
  %type   <number>        intrinsic_v intrinsic_I intrinsic_N intrinsic_X
  %type   <number>        intrinsic_I2 intrinsic_N2 intrinsic_X2
  %type   <number>        lopper_case 
! %type   <number>        return_body return_file
! %type   <field>         trim_trailing function_udf
  
  %type   <refer>         str_input str_size
  %type   <refer2>        str_into
--- 820,827 ----
  %type   <number>        intrinsic_v intrinsic_I intrinsic_N intrinsic_X
  %type   <number>        intrinsic_I2 intrinsic_N2 intrinsic_X2
  %type   <number>        lopper_case 
! %type   <number>        return_body return_file trim_trailing 
! %type   <field>         function_udf
  
  %type   <refer>         str_input str_size
  %type   <refer2>        str_into
*************** intrinsic:      function_udf
*** 11469,11475 ****
                    error_msg(@error, "invalid TRIM argument");
                    YYERROR;
                  }
!         |       TRIM '(' expr[r1] trim_trailing ')'
                  {
                    location_set(@1);
                     switch( $r1->field->type ) {
--- 11469,11479 ----
                    error_msg(@error, "invalid TRIM argument");
                    YYERROR;
                  }
!                 /*
!                  * TRIM (arg-1 arg-2a arg-2b) is the same as 
!                  * TRIM (TRIM (arg-1 arg-2a) arg-2b).
!                  */
!         |       TRIM '(' expr[r1] trim_trailing[how] trim_expr[args2] ')'
                  {
                    location_set(@1);
                     switch( $r1->field->type ) {
*************** intrinsic:      function_udf
*** 11482,11487 ****
--- 11486,11493 ----
                     default:
                       // BLANK WHEN ZERO implies numeric-edited, so OK
                       if( $r1->field->has_attr(blank_zero_e) ) {
+                        dbgmsg("logic error: must be numeric-edited");
+                        gcc_unreachable();
                         break;
                       }
                       error_msg(@r1, "TRIM argument must be alphanumeric");
*************** intrinsic:      function_udf
*** 11489,11497 ****
                       break;
                    }
                    $$ = new_alphanumeric("TRIM", $r1->field->codeset.encoding);
!                   cbl_refer_t * how = new_reference($trim_trailing);
!                   if( ! intrinsic_call_2($$, TRIM, $r1, how) ) YYERROR;
!                 }
  
          |       USUBSTR '(' alpha_val[r1] expr[r2] expr[r3]  ')' {
                    location_set(@1);
--- 11495,11504 ----
                       break;
                    }
                    $$ = new_alphanumeric("TRIM", $r1->field->codeset.encoding);
!                   std::vector<cbl_refer_t> args($args2->args.begin(),
!                                                 $args2->args.end());
!                   parser_trim($$, *$r1, $how, args);
!                 }  
  
          |       USUBSTR '(' alpha_val[r1] expr[r2] expr[r3]  ')' {
                    location_set(@1);
*************** lopper_case:    LOWER_CASE      { $$ = L
*** 11811,11821 ****
          |       UPPER_CASE      { $$ = UPPER_CASE; }
                  ;
  
! trim_trailing:  %empty          { $$ = new_constant("0"); }  // Remove both
!         |       LEADING         { $$ = new_constant("1"); }  // Remove leading  spaces
!         |       TRAILING        { $$ = new_constant("2"); }  // Remove trailing spaces
          ;
  
  intrinsic0:     CURRENT_DATE {
                    location_set(@1);
                    $$ = new_alphanumeric("CURRENT-DATE");
--- 11818,11854 ----
          |       UPPER_CASE      { $$ = UPPER_CASE; }
                  ;
  
! trim_trailing:  %empty          { $$ = 3; }  // Remove both
!         |       LEADING         { $$ = 1; }  // Remove leading  spaces
!         |       TRAILING        { $$ = 2; }  // Remove trailing spaces
          ;
  
+ trim_expr:      %empty {
+                   cbl_field_t *space = constant_of(constant_index(SPACES));
+                   $$ = new vargs_t( new_reference(space) );
+                 }
+         |       vargs {
+                   $$ = new vargs_t;
+                   std::copy_if( $vargs->args.begin(),
+                                 $vargs->args.end(),
+                                 std::back_inserter($$->args), 
+                                 []( const auto& arg ) {
+                      bool is_alpha =
+                        arg.field->type == FldAlphanumeric ||
+                        arg.field->type == FldLiteralA;
+                     if( arg.addr_of || ! is_alpha ) {
+                       error_msg(arg.loc, "invalid TRIM character");
+                       return false;
+                     }
+                     if( arg.field->char_capacity() != 1 ) {
+                       error_msg(arg.loc, "TRIM argument may be only 1 character");
+                       return false;
+                     }
+                     return true;
+                   } );
+                 }
+                 ;
+ 
  intrinsic0:     CURRENT_DATE {
                    location_set(@1);
                    $$ = new_alphanumeric("CURRENT-DATE");
diff -Nrcpad gcc-17-20260531/gcc/cobol/symbols.h gcc-17-20260607/gcc/cobol/symbols.h
*** gcc-17-20260531/gcc/cobol/symbols.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cobol/symbols.h	Sun Jun  7 22:32:06 2026
***************
*** 50,63 ****
  
  extern const char *numed_message;
  
- enum cbl_dialect_t {
-   dialect_iso_e = 0x00,
-   dialect_gcc_e = 0x01,
-   dialect_ibm_e = 0x02,
-   dialect_mf_e  = 0x04,
-   dialect_gnu_e = 0x08,
- };
- 
  static inline const char *
  cbl_dialect_str(cbl_dialect_t dialect)  {
    switch(dialect) {
--- 50,55 ----
diff -Nrcpad gcc-17-20260531/gcc/common/config/aarch64/aarch64-common.cc gcc-17-20260607/gcc/common/config/aarch64/aarch64-common.cc
*** gcc-17-20260531/gcc/common/config/aarch64/aarch64-common.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/common/config/aarch64/aarch64-common.cc	Sun Jun  7 22:32:06 2026
*************** aarch64_parse_cpu (const char *to_parse,
*** 465,471 ****
  	      if (ext_res != AARCH_PARSE_OK)
  		return ext_res;
  	    }
! 	  /* Extension parsing was successfull.  Confirm the result
  	     cpu and ISA flags.  */
  	  *res_cpu = cpu->processor;
  	  *res_flags = isa_flags;
--- 465,471 ----
  	      if (ext_res != AARCH_PARSE_OK)
  		return ext_res;
  	    }
! 	  /* Extension parsing was successful.  Confirm the result
  	     cpu and ISA flags.  */
  	  *res_cpu = cpu->processor;
  	  *res_flags = isa_flags;
*************** aarch64_get_extension_string_for_isa_fla
*** 711,717 ****
    for (auto alias: all_extensions)
      {
        /* Only allow "+nocrypto" when "sm4" is not already enabled
! 	 (to avoid dependending on whether "+nocrypto" also disables "sm4").  */
        if (alias.flag_canonical == AARCH64_FL_CRYPTO
  	  && (current_flags & AARCH64_FL_SM4))
  	continue;
--- 711,717 ----
    for (auto alias: all_extensions)
      {
        /* Only allow "+nocrypto" when "sm4" is not already enabled
! 	 (to avoid depending on whether "+nocrypto" also disables "sm4").  */
        if (alias.flag_canonical == AARCH64_FL_CRYPTO
  	  && (current_flags & AARCH64_FL_SM4))
  	continue;
diff -Nrcpad gcc-17-20260531/gcc/common/config/aarch64/cpuinfo.h gcc-17-20260607/gcc/common/config/aarch64/cpuinfo.h
*** gcc-17-20260531/gcc/common/config/aarch64/cpuinfo.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/common/config/aarch64/cpuinfo.h	Sun Jun  7 22:32:06 2026
***************
*** 24,30 ****
  
  /* This enum is used in libgcc feature detection, and in the function
     multiversioning implementation in aarch64.cc.  The enum should use the same
!    values as the corresponding enum in LLVM's compiler-rt, to faciliate
     compatibility between compilers.  */
  
  enum CPUFeatures {
--- 24,30 ----
  
  /* This enum is used in libgcc feature detection, and in the function
     multiversioning implementation in aarch64.cc.  The enum should use the same
!    values as the corresponding enum in LLVM's compiler-rt, to facilitate
     compatibility between compilers.  */
  
  enum CPUFeatures {
diff -Nrcpad gcc-17-20260531/gcc/common/config/arm/arm-common.cc gcc-17-20260607/gcc/common/config/arm/arm-common.cc
*** gcc-17-20260531/gcc/common/config/arm/arm-common.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/common/config/arm/arm-common.cc	Sun Jun  7 22:32:06 2026
*************** arm_config_default (const char *name)
*** 272,281 ****
  
  /* Called by the driver to check whether the target denoted by current
     command line options is a Thumb-only, or ARM-only, target.  ARGV is
!    an array of tupples (normally only one) where the first element of
!    the tupple is 'cpu' or 'arch' and the second is the option passed
!    to the compiler for that.  An architecture tupple is always taken
!    in preference to a cpu tupple and the last of each type always
     overrides any earlier setting.  */
  
  const char *
--- 272,281 ----
  
  /* Called by the driver to check whether the target denoted by current
     command line options is a Thumb-only, or ARM-only, target.  ARGV is
!    an array of tuples (normally only one) where the first element of
!    the tuple is 'cpu' or 'arch' and the second is the option passed
!    to the compiler for that.  An architecture tuple is always taken
!    in preference to a cpu tuple and the last of each type always
     overrides any earlier setting.  */
  
  const char *
*************** arm_canon_arch_option_1 (int argc, const
*** 794,806 ****
    /* If we have a soft-float ABI, disable the FPU.  */
    if (abi && strcmp (abi, "soft") == 0)
      {
!       /* Clearing the VFPv2 bit is sufficient to stop any extention that
  	 builds on the FPU from matching.  */
        bitmap_clear_bit (target_isa, isa_bit_vfpv2);
      }
  
    /* Here we remove feature isa bits from -mlibarch string which are not
!      necessary for multilib string comparsion.  */
    if ((arch || cpu) && arch_for_multilib)
      {
        const enum isa_feature removable_bits[] = {ISA_IGNORE_FOR_MULTILIB,
--- 794,806 ----
    /* If we have a soft-float ABI, disable the FPU.  */
    if (abi && strcmp (abi, "soft") == 0)
      {
!       /* Clearing the VFPv2 bit is sufficient to stop any extension that
  	 builds on the FPU from matching.  */
        bitmap_clear_bit (target_isa, isa_bit_vfpv2);
      }
  
    /* Here we remove feature isa bits from -mlibarch string which are not
!      necessary for multilib string comparison.  */
    if ((arch || cpu) && arch_for_multilib)
      {
        const enum isa_feature removable_bits[] = {ISA_IGNORE_FOR_MULTILIB,
diff -Nrcpad gcc-17-20260531/gcc/common/config/avr/avr-common.cc gcc-17-20260607/gcc/common/config/avr/avr-common.cc
*** gcc-17-20260531/gcc/common/config/avr/avr-common.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/common/config/avr/avr-common.cc	Sun Jun  7 22:32:06 2026
***************
*** 30,36 ****
  static const struct default_options avr_option_optimization_table[] =
    {
      // There is no way to filter out unwanted cswtch transformations:
!     // - Code bload as mentioned in PR81540.
      // - When tree-switch-conversion.cc::build_one_array() finds a
      //   linear function, it will use a formula that involves a
      //   multiplication without even trying to work out the costs.
--- 30,36 ----
  static const struct default_options avr_option_optimization_table[] =
    {
      // There is no way to filter out unwanted cswtch transformations:
!     // - Code bloat as mentioned in PR81540.
      // - When tree-switch-conversion.cc::build_one_array() finds a
      //   linear function, it will use a formula that involves a
      //   multiplication without even trying to work out the costs.
diff -Nrcpad gcc-17-20260531/gcc/common/config/nds32/nds32-common.cc gcc-17-20260607/gcc/common/config/nds32/nds32-common.cc
*** gcc-17-20260531/gcc/common/config/nds32/nds32-common.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/common/config/nds32/nds32-common.cc	Sun Jun  7 22:32:06 2026
*************** static const struct default_options nds3
*** 94,100 ****
    { OPT_LEVELS_ALL,               OPT_fomit_frame_pointer, NULL, 1 },
    /* Enable -mrelax-hint by default at all optimization levels.  */
    { OPT_LEVELS_ALL,               OPT_mrelax_hint,         NULL, 1 },
!   /* Enalbe -malways-align by default at -O1 and above, but not -Os or -Og.  */
    { OPT_LEVELS_1_PLUS_SPEED_ONLY, OPT_malways_align,       NULL, 1 },
    /* Enable -mv3push by default at -Os, but it is useless under V2 ISA.  */
    { OPT_LEVELS_SIZE,              OPT_mv3push,             NULL, 1 },
--- 94,100 ----
    { OPT_LEVELS_ALL,               OPT_fomit_frame_pointer, NULL, 1 },
    /* Enable -mrelax-hint by default at all optimization levels.  */
    { OPT_LEVELS_ALL,               OPT_mrelax_hint,         NULL, 1 },
!   /* Enable -malways-align by default at -O1 and above, but not -Os or -Og.  */
    { OPT_LEVELS_1_PLUS_SPEED_ONLY, OPT_malways_align,       NULL, 1 },
    /* Enable -mv3push by default at -Os, but it is useless under V2 ISA.  */
    { OPT_LEVELS_SIZE,              OPT_mv3push,             NULL, 1 },
*************** nds32_except_unwind_info (struct gcc_opt
*** 129,137 ****
     Other MASK_XXX flags are set individually.
     By default we enable
       TARGET_16_BIT     : Generate 16/32 bit mixed length instruction.
!      TARGET_EXT_PERF   : Generate performance extention instrcution.
!      TARGET_EXT_PERF2  : Generate performance extention version 2 instrcution.
!      TARGET_EXT_STRING : Generate string extention instrcution.
       TARGET_HW_ABS     : Generate hardware abs instruction.
       TARGET_CMOV       : Generate conditional move instruction.  */
  #undef TARGET_DEFAULT_TARGET_FLAGS
--- 129,137 ----
     Other MASK_XXX flags are set individually.
     By default we enable
       TARGET_16_BIT     : Generate 16/32 bit mixed length instruction.
!      TARGET_EXT_PERF   : Generate performance extension instruction.
!      TARGET_EXT_PERF2  : Generate performance extension version 2 instruction.
!      TARGET_EXT_STRING : Generate string extension instruction.
       TARGET_HW_ABS     : Generate hardware abs instruction.
       TARGET_CMOV       : Generate conditional move instruction.  */
  #undef TARGET_DEFAULT_TARGET_FLAGS
diff -Nrcpad gcc-17-20260531/gcc/common/config/riscv/riscv-common.cc gcc-17-20260607/gcc/common/config/riscv/riscv-common.cc
*** gcc-17-20260531/gcc/common/config/riscv/riscv-common.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/common/config/riscv/riscv-common.cc	Sun Jun  7 22:32:06 2026
*************** riscv_subset_list::~riscv_subset_list ()
*** 352,358 ****
      }
  }
  
! /* Compute the match score of two arch string, return 0 if incompatible.  */
  int
  riscv_subset_list::match_score (riscv_subset_list *list) const
  {
--- 352,358 ----
      }
  }
  
! /* Compute the match score of two arch strings, return 0 if incompatible.  */
  int
  riscv_subset_list::match_score (riscv_subset_list *list) const
  {
*************** multi_letter_subset_rank (const std::str
*** 442,448 ****
        break;
      default:
        gcc_unreachable ();
-       return -1;
      }
  
    if (multiletter_class == 'z')
--- 442,447 ----
*************** subset_cmp (const std::string &a, const
*** 495,504 ****
      }
    else
      {
!       int rank_a = multi_letter_subset_rank(a);
!       int rank_b = multi_letter_subset_rank(b);
  
!       /* Using alphabetical/lexicographical order if they have same rank.  */
        if (rank_a == rank_b)
  	/* The return value of strcmp has opposite meaning.  */
  	return -strcmp (a.c_str (), b.c_str ());
--- 494,503 ----
      }
    else
      {
!       int rank_a = multi_letter_subset_rank (a);
!       int rank_b = multi_letter_subset_rank (b);
  
!       /* Use alphabetical/lexicographical order if they have the same rank.  */
        if (rank_a == rank_b)
  	/* The return value of strcmp has opposite meaning.  */
  	return -strcmp (a.c_str (), b.c_str ());
*************** riscv_subset_list::add (const char *subs
*** 529,535 ****
      {
        if (ext->implied_p)
  	{
! 	  /* We won't add impiled `ext` if it already in list. */
  	  gcc_assert (!implied_p);
  	  ext->implied_p = implied_p;
  	  ext->major_version = major_version;
--- 528,534 ----
      {
        if (ext->implied_p)
  	{
! 	  /* We won't add implied `ext` if it is already in list.  */
  	  gcc_assert (!implied_p);
  	  ext->implied_p = implied_p;
  	  ext->major_version = major_version;
*************** riscv_subset_list::to_string (bool versi
*** 749,755 ****
        if (!first &&
  	  (version_p
  	   || subset->explicit_version_p
! 	   || subset->name.length() > 1))
  	oss << '_';
        first = false;
  
--- 748,754 ----
        if (!first &&
  	  (version_p
  	   || subset->explicit_version_p
! 	   || subset->name.length () > 1))
  	oss << '_';
        first = false;
  
*************** riscv_subset_list::lookup (const char *s
*** 799,805 ****
  static const char *
  riscv_supported_std_ext (void)
  {
!   return "mafdqlcbkjtpvnh";
  }
  
  /* Parsing subset version.
--- 798,804 ----
  static const char *
  riscv_supported_std_ext (void)
  {
!   return "mafdqlcbkjtvph";
  }
  
  /* Parsing subset version.
*************** riscv_subset_list::parse_profiles (const
*** 894,912 ****
      2. Mixed Profiles with other extensions
  
      Use '_' to split Profiles and other extension.  */
!     std::string p(arch);
!     const size_t p_len = p.size();
  
      for (int i = 0; riscv_profiles_table[i].profile_name != nullptr; ++i)
      {
        const std::string& p_name = riscv_profiles_table[i].profile_name;
        const std::string& p_str = riscv_profiles_table[i].profile_string;
!       size_t pos = p.find(p_name);
        /* Find profile at the begin.  */
!       if (pos == 0 && pos + p_name.size() <= p_len)
  	{
! 	  size_t after_pos = pos + p_name.size();
! 	  std::string after_part = p.substr(after_pos);
  
  	  /* If there're only profile, return the profile_string directly.  */
  	  if (after_part[0] == '\0')
--- 893,911 ----
      2. Mixed Profiles with other extensions
  
      Use '_' to split Profiles and other extension.  */
!     std::string p (arch);
!     const size_t p_len = p.size ();
  
      for (int i = 0; riscv_profiles_table[i].profile_name != nullptr; ++i)
      {
        const std::string& p_name = riscv_profiles_table[i].profile_name;
        const std::string& p_str = riscv_profiles_table[i].profile_string;
!       size_t pos = p.find (p_name);
        /* Find profile at the begin.  */
!       if (pos == 0 && pos + p_name.size () <= p_len)
  	{
! 	  size_t after_pos = pos + p_name.size ();
! 	  std::string after_part = p.substr (after_pos);
  
  	  /* If there're only profile, return the profile_string directly.  */
  	  if (after_part[0] == '\0')
*************** riscv_subset_list::handle_combine_ext ()
*** 1135,1141 ****
        /* Add combine extensions */
        if (is_combined)
  	{
! 	  riscv_version_t ver = ext_info.default_version();
  	  add (ext_name.c_str (), ver.major_version,
  	       ver.minor_version, false, true);
  	}
--- 1134,1140 ----
        /* Add combine extensions */
        if (is_combined)
  	{
! 	  riscv_version_t ver = ext_info.default_version ();
  	  add (ext_name.c_str (), ver.major_version,
  	       ver.minor_version, false, true);
  	}
*************** riscv_subset_list::check_conflict_ext ()
*** 1151,1157 ****
    if (lookup ("zcf") && m_xlen == 64)
      error_at (*m_loc, "%<-march=%s%>: zcf extension supports in rv32 only",
  	      m_arch);
!   
    if (lookup ("zilsd") && m_xlen == 64)
      error_at (*m_loc, "%<-march=%s%>: zilsd extension supports in rv32 only",
  	      m_arch);
--- 1150,1156 ----
    if (lookup ("zcf") && m_xlen == 64)
      error_at (*m_loc, "%<-march=%s%>: zcf extension supports in rv32 only",
  	      m_arch);
! 
    if (lookup ("zilsd") && m_xlen == 64)
      error_at (*m_loc, "%<-march=%s%>: zilsd extension supports in rv32 only",
  	      m_arch);
*************** riscv_subset_list::parse_single_multilet
*** 1266,1272 ****
  	  found_any_number = true;
  	  continue;
  	}
!       /* Might be version seperator, but need to check one more char,
  	 we only allow <major>p<minor>, so we could stop parsing if found
  	 any more `p`.  */
        if (subset[i] == 'p' &&
--- 1265,1271 ----
  	  found_any_number = true;
  	  continue;
  	}
!       /* Might be version separator, but need to check one more char,
  	 we only allow <major>p<minor>, so we could stop parsing if found
  	 any more `p`.  */
        if (subset[i] == 'p' &&
*************** riscv_subset_list::parse (const char *ar
*** 1367,1374 ****
    riscv_subset_list *subset_list = new riscv_subset_list (arch, loc);
  
    const char *p = arch;
!   std::string a = subset_list->parse_profiles(p);
!   p = subset_list->parse_base_ext (a.c_str());
    if (p == NULL)
      goto fail;
  
--- 1366,1373 ----
    riscv_subset_list *subset_list = new riscv_subset_list (arch, loc);
  
    const char *p = arch;
!   std::string a = subset_list->parse_profiles (p);
!   p = subset_list->parse_base_ext (a.c_str ());
    if (p == NULL)
      goto fail;
  
*************** riscv_subset_list::set_loc (location_t *
*** 1425,1431 ****
  }
  
  /* Make sure the implied or combined extension is included after add
!    a new std extension to subset list or likewise.  For exmaple as below,
  
     void __attribute__((target("arch=+v"))) func () with -march=rv64gc.
  
--- 1424,1430 ----
  }
  
  /* Make sure the implied or combined extension is included after add
!    a new std extension to subset list or likewise.  For example as below,
  
     void __attribute__((target("arch=+v"))) func () with -march=rv64gc.
  
*************** riscv_arch_str (bool version_p)
*** 1458,1471 ****
    if (cmdline_subset_list)
      return cmdline_subset_list->to_string (version_p);
    else
!     return std::string();
  }
  
  #define RISCV_EXT_FLAG_ENTRY(NAME, VAR, MASK) \
    {NAME, &gcc_options::VAR, &cl_target_option::VAR, MASK}
  
  /* Mapping table between extension to internal flag,
!    this table is not needed to add manually unless there is speical rule.  */
  static const riscv_extra_ext_flag_table_t riscv_extra_ext_flag_table[] =
  {
    RISCV_EXT_FLAG_ENTRY ("zve32x", x_riscv_isa_flags, MASK_VECTOR),
--- 1457,1470 ----
    if (cmdline_subset_list)
      return cmdline_subset_list->to_string (version_p);
    else
!     return std::string ();
  }
  
  #define RISCV_EXT_FLAG_ENTRY(NAME, VAR, MASK) \
    {NAME, &gcc_options::VAR, &cl_target_option::VAR, MASK}
  
  /* Mapping table between extension to internal flag,
!    this table is not needed to add manually unless there is special rule.  */
  static const riscv_extra_ext_flag_table_t riscv_extra_ext_flag_table[] =
  {
    RISCV_EXT_FLAG_ENTRY ("zve32x", x_riscv_isa_flags, MASK_VECTOR),
*************** static const riscv_extra_ext_flag_table_
*** 1485,1490 ****
--- 1484,1491 ----
    RISCV_EXT_FLAG_ENTRY ("zvfbfwma", x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_BF_16),
    RISCV_EXT_FLAG_ENTRY ("zvfhmin",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16),
    RISCV_EXT_FLAG_ENTRY ("zvfh",     x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_FP_16),
+   RISCV_EXT_FLAG_ENTRY ("zvfofp8min", x_riscv_vector_elen_flags,
+ 			MASK_VECTOR_ELEN_FP_32),
  
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_32),
    RISCV_EXT_FLAG_ENTRY ("xtheadvector",  x_riscv_vector_elen_flags, MASK_VECTOR_ELEN_64),
*************** riscv_expand_arch_from_cpu (int argc ATT
*** 1825,1831 ****
  
    riscv_parse_arch_string (arch_str, NULL, loc);
    const std::string arch = riscv_arch_str (false);
!   return xasprintf ("-march=%s", arch.c_str());
  }
  
  /* Report error if not found suitable multilib.  */
--- 1826,1832 ----
  
    riscv_parse_arch_string (arch_str, NULL, loc);
    const std::string arch = riscv_arch_str (false);
!   return xasprintf ("-march=%s", arch.c_str ());
  }
  
  /* Report error if not found suitable multilib.  */
*************** riscv_compute_multilib (
*** 2109,2115 ****
      return multilib_dir;
  
    /* Parsing MULTILIB_SELECT, ignore MULTILIB_REUSE here, we have our own rules.
!      TODO: most codes are grab from gcc.c, maybe we should refine that?  */
    p = multilib_select;
  
    while (*p != '\0')
--- 2110,2116 ----
      return multilib_dir;
  
    /* Parsing MULTILIB_SELECT, ignore MULTILIB_REUSE here, we have our own rules.
!      TODO: most code is grabbed from gcc.c, maybe we should refine that?  */
    p = multilib_select;
  
    while (*p != '\0')
*************** riscv_arch_help (int, const char **)
*** 2248,2254 ****
    /* Collect all exts, and sort it in canonical order.  */
    struct extension_comparator {
      bool operator()(const std::string& a, const std::string& b) const {
!       return subset_cmp(a, b) >= 1;
      }
    };
    std::map<std::string, std::set<unsigned>, extension_comparator> all_exts;
--- 2249,2255 ----
    /* Collect all exts, and sort it in canonical order.  */
    struct extension_comparator {
      bool operator()(const std::string& a, const std::string& b) const {
!       return subset_cmp (a, b) >= 1;
      }
    };
    std::map<std::string, std::set<unsigned>, extension_comparator> all_exts;
*************** riscv_arch_help (int, const char **)
*** 2263,2286 ****
  	}
      }
  
!   printf("All available -march extensions for RISC-V:\n");
!   printf("\t%-20sVersion\n", "Name");
    for (auto const &ext_info : all_exts)
      {
!       printf("\t%-20s\t", ext_info.first.c_str());
        bool first = true;
        for (auto version : ext_info.second)
  	{
  	  if (first)
  	    first = false;
  	  else
! 	    printf(", ");
  	  unsigned major = version / RISCV_MAJOR_VERSION_BASE;
  	  unsigned minor = (version % RISCV_MAJOR_VERSION_BASE)
  			    / RISCV_MINOR_VERSION_BASE;
! 	  printf("%u.%u", major, minor);
  	}
!       printf("\n");
      }
    exit (0);
  }
--- 2264,2287 ----
  	}
      }
  
!   printf ("All available -march extensions for RISC-V:\n");
!   printf ("\t%-20sVersion\n", "Name");
    for (auto const &ext_info : all_exts)
      {
!       printf ("\t%-20s\t", ext_info.first.c_str ());
        bool first = true;
        for (auto version : ext_info.second)
  	{
  	  if (first)
  	    first = false;
  	  else
! 	    printf (", ");
  	  unsigned major = version / RISCV_MAJOR_VERSION_BASE;
  	  unsigned minor = (version % RISCV_MAJOR_VERSION_BASE)
  			    / RISCV_MINOR_VERSION_BASE;
! 	  printf ("%u.%u", major, minor);
  	}
!       printf ("\n");
      }
    exit (0);
  }
diff -Nrcpad gcc-17-20260531/gcc/common.opt gcc-17-20260607/gcc/common.opt
*** gcc-17-20260531/gcc/common.opt	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/common.opt	Sun Jun  7 22:32:06 2026
*************** Common Joined RejectNegative UInteger Va
*** 781,790 ****
  Warn about code which might break strict aliasing rules.
  
  Wstrict-overflow
! Common Warning
  Does nothing.  Preserved for backward compatibility.
  
  Wstrict-overflow=
  Does nothing.  Preserved for backward compatibility.
  
  Wsuggest-attribute=cold
--- 781,791 ----
  Warn about code which might break strict aliasing rules.
  
  Wstrict-overflow
! Common Ignore Warning
  Does nothing.  Preserved for backward compatibility.
  
  Wstrict-overflow=
+ Common Ignore Joined RejectNegative UInteger Warning
  Does nothing.  Preserved for backward compatibility.
  
  Wsuggest-attribute=cold
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-builtins.cc gcc-17-20260607/gcc/config/aarch64/aarch64-builtins.cc
*** gcc-17-20260531/gcc/config/aarch64/aarch64-builtins.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-builtins.cc	Sun Jun  7 22:32:06 2026
*************** static aarch64_simd_builtin_datum aarch6
*** 593,599 ****
    CRC32_BUILTIN (crc32cw, SI) \
    CRC32_BUILTIN (crc32cx, DI)
  
! /* The next 8 FCMLA instrinsics require some special handling compared the
     normal simd intrinsics.  */
  #define AARCH64_SIMD_FCMLA_LANEQ_BUILTINS \
    FCMLA_LANEQ_BUILTIN (0, v2sf, fcmla, V2SF, false) \
--- 593,599 ----
    CRC32_BUILTIN (crc32cw, SI) \
    CRC32_BUILTIN (crc32cx, DI)
  
! /* The next 8 FCMLA intrinsics require some special handling compared the
     normal simd intrinsics.  */
  #define AARCH64_SIMD_FCMLA_LANEQ_BUILTINS \
    FCMLA_LANEQ_BUILTIN (0, v2sf, fcmla, V2SF, false) \
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-c.cc gcc-17-20260607/gcc/config/aarch64/aarch64-c.cc
*** gcc-17-20260531/gcc/config/aarch64/aarch64-c.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-c.cc	Sun Jun  7 22:32:06 2026
*************** aarch64_pragma_target_parse (tree args,
*** 386,392 ****
  
    cpp_opts->warn_unused_macros = saved_warn_unused_macros;
  
!   /* If we're popping or reseting make sure to update the globals so that
       the optab availability predicates get recomputed.  */
    if (pop_target)
      aarch64_save_restore_target_globals (pop_target);
--- 386,392 ----
  
    cpp_opts->warn_unused_macros = saved_warn_unused_macros;
  
!   /* If we're popping or resetting make sure to update the globals so that
       the optab availability predicates get recomputed.  */
    if (pop_target)
      aarch64_save_restore_target_globals (pop_target);
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-early-ra.cc gcc-17-20260607/gcc/config/aarch64/aarch64-early-ra.cc
*** gcc-17-20260531/gcc/config/aarch64/aarch64-early-ra.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-early-ra.cc	Sun Jun  7 22:32:06 2026
*************** early_ra::get_allocno_subgroup (rtx reg)
*** 1520,1526 ****
        group->has_flexible_stride = ((flags & HAS_FLEXIBLE_STRIDE) != 0
  				    && (flags & HAS_FIXED_STRIDE) == 0);
  
!       group->fpr_size = (maybe_gt (fpr_bits, 128) ? FPR_Z
  			 : maybe_gt (fpr_bits, 64) ? FPR_Q : FPR_D);
  
        entry = group;
--- 1520,1534 ----
        group->has_flexible_stride = ((flags & HAS_FLEXIBLE_STRIDE) != 0
  				    && (flags & HAS_FIXED_STRIDE) == 0);
  
!       // SVE modes always occupy the full Z register, even for partial modes
!       // like VNx2SF whose mode size is only 64 bits.  Treating such modes
!       // as FPR_D would let partial_fpr_clobbers ignore the fact that
!       // V8-V15 are only partially callee-saved under AAPCS64 -- the high
!       // bits of the Z register are clobbered by calls.  Always classify
!       // SVE modes as FPR_Z so that V8-V15 are excluded as candidates for
!       // pseudos that are live across calls.
!       group->fpr_size = ((aarch64_sve_mode_p (GET_MODE (reg))
! 			  || maybe_gt (fpr_bits, 128)) ? FPR_Z
  			 : maybe_gt (fpr_bits, 64) ? FPR_Q : FPR_D);
  
        entry = group;
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-modes.def gcc-17-20260607/gcc/config/aarch64/aarch64-modes.def
*** gcc-17-20260531/gcc/config/aarch64/aarch64-modes.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-modes.def	Sun Jun  7 22:32:06 2026
*************** FLOAT_MODE (TF, 16, ieee_quad_format);
*** 265,271 ****
  /* A 4-tuple of SVE vectors with the maximum -msve-vector-bits= setting.
     Note that this is a limit only on the compile-time sizes of modes;
     it is not a limit on the runtime sizes, since VL-agnostic code
!    must work with arbitary vector lengths.  */
  #define MAX_BITSIZE_MODE_ANY_MODE (2048 * 4)
  
  /* Coefficient 1 is multiplied by the number of 128-bit chunks in an
--- 265,271 ----
  /* A 4-tuple of SVE vectors with the maximum -msve-vector-bits= setting.
     Note that this is a limit only on the compile-time sizes of modes;
     it is not a limit on the runtime sizes, since VL-agnostic code
!    must work with arbitrary vector lengths.  */
  #define MAX_BITSIZE_MODE_ANY_MODE (2048 * 4)
  
  /* Coefficient 1 is multiplied by the number of 128-bit chunks in an
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-protos.h gcc-17-20260607/gcc/config/aarch64/aarch64-protos.h
*** gcc-17-20260531/gcc/config/aarch64/aarch64-protos.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-protos.h	Sun Jun  7 22:32:06 2026
*************** bool aarch64_emit_approx_div (rtx, rtx,
*** 888,894 ****
  bool aarch64_emit_approx_sqrt (rtx, rtx, bool);
  bool aarch64_emit_opt_vec_rotate (rtx, rtx, rtx);
  tree aarch64_vector_load_decl (tree);
! rtx aarch64_gen_callee_cookie (aarch64_isa_mode, arm_pcs, bool);
  void aarch64_expand_call (rtx, rtx, rtx, bool);
  bool aarch64_expand_cpymem_mops (rtx *, bool);
  bool aarch64_expand_cpymem (rtx *, bool);
--- 888,894 ----
  bool aarch64_emit_approx_sqrt (rtx, rtx, bool);
  bool aarch64_emit_opt_vec_rotate (rtx, rtx, rtx);
  tree aarch64_vector_load_decl (tree);
! rtx aarch64_gen_callee_cookie (aarch64_isa_mode, bool);
  void aarch64_expand_call (rtx, rtx, rtx, bool);
  bool aarch64_expand_cpymem_mops (rtx *, bool);
  bool aarch64_expand_cpymem (rtx *, bool);
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-simd.md gcc-17-20260607/gcc/config/aarch64/aarch64-simd.md
*** gcc-17-20260531/gcc/config/aarch64/aarch64-simd.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-simd.md	Sun Jun  7 22:32:06 2026
***************
*** 159,164 ****
--- 159,186 ----
    }
  )
  
+ (define_insn "*aarch64_simd_dup_subvector<vcons><mode>"
+   [(set (match_operand:<VCONS> 0 "register_operand")
+ 	(vec_duplicate:<VCONS>
+ 	  (match_operand:VSDUP 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_simd_dup_subvectorv2qiqi"
+   [(set (match_operand:V2QI 0 "register_operand")
+ 	(vec_duplicate:V2QI
+ 	  (match_operand:QI 1 "register_operand")))]
+   "TARGET_SIMD"
+   {@ [ cons: =0 , 1 ; attrs: type  ]
+      [ w        , w ; neon_dup     ] dup\t%0.8b, %1.b[0]
+      [ w        , r ; neon_from_gp ] dup\t%0.8b, %w1
+   }
+ )
+ 
  (define_insn "@aarch64_dup_lane<mode>"
    [(set (match_operand:VALL_F16 0 "register_operand" "=w")
  	(vec_duplicate:VALL_F16
***************
*** 659,665 ****
  })
  
  ;; These expands map to the Dot Product optab the vectorizer checks for
! ;; and to the intrinsics patttern.
  ;; The auto-vectorizer expects a dot product builtin that also does an
  ;; accumulation into the provided register.
  ;; Given the following pattern
--- 681,687 ----
  })
  
  ;; These expands map to the Dot Product optab the vectorizer checks for
! ;; and to the intrinsics pattern.
  ;; The auto-vectorizer expects a dot product builtin that also does an
  ;; accumulation into the provided register.
  ;; Given the following pattern
***************
*** 4615,4621 ****
  	   Example: UN<cc> (a, b) -> UNORDERED (a, b) |
  				     (cm<cc> (isnan (a) ? 0.0 : a,
  					      isnan (b) ? 0.0 : b))
! 	   We use the following transformations for doing the comparisions:
  	   a UNGE b -> a GE b
  	   a UNGT b -> a GT b
  	   a UNLE b -> b GE a
--- 4637,4643 ----
  	   Example: UN<cc> (a, b) -> UNORDERED (a, b) |
  				     (cm<cc> (isnan (a) ? 0.0 : a,
  					      isnan (b) ? 0.0 : b))
! 	   We use the following transformations for doing the comparisons:
  	   a UNGE b -> a GE b
  	   a UNGT b -> a GT b
  	   a UNLE b -> b GE a
***************
*** 4666,4672 ****
        break;
  
      case LTGT:
!       /* LTGT is not guranteed to not generate a FP exception.  So let's
  	 go the faster way : ((a > b) || (b > a)).  */
        emit_insn (gen_aarch64_cmgt<mode> (operands[0],
  					 operands[2], operands[3]));
--- 4688,4694 ----
        break;
  
      case LTGT:
!       /* LTGT is not guaranteed to not generate a FP exception.  So let's
  	 go the faster way : ((a > b) || (b > a)).  */
        emit_insn (gen_aarch64_cmgt<mode> (operands[0],
  					 operands[2], operands[3]));
***************
*** 8107,8113 ****
  
  ;; ADDP with two registers semantically concatenates them and performs
  ;; a pairwise addition on the result.  For 128-bit input modes represent this
! ;; as a concatentation of the pairwise addition results of the two input
  ;; registers.  This allow us to avoid using intermediate 256-bit modes.
  (define_insn "aarch64_addp<mode>_insn"
    [(set (match_operand:VQ_I 0 "register_operand" "=w")
--- 8129,8135 ----
  
  ;; ADDP with two registers semantically concatenates them and performs
  ;; a pairwise addition on the result.  For 128-bit input modes represent this
! ;; as a concatenation of the pairwise addition results of the two input
  ;; registers.  This allow us to avoid using intermediate 256-bit modes.
  (define_insn "aarch64_addp<mode>_insn"
    [(set (match_operand:VQ_I 0 "register_operand" "=w")
***************
*** 8131,8137 ****
    [(set_attr "type" "neon_reduc_add<q>")]
  )
  
! ;; For 64-bit input modes an ADDP is represented as a concatentation
  ;; of the input registers into an 128-bit register which is then fed
  ;; into a pairwise add.  That way we avoid having to create intermediate
  ;; 32-bit vector modes.
--- 8153,8159 ----
    [(set_attr "type" "neon_reduc_add<q>")]
  )
  
! ;; For 64-bit input modes an ADDP is represented as a concatenation
  ;; of the input registers into an 128-bit register which is then fed
  ;; into a pairwise add.  That way we avoid having to create intermediate
  ;; 32-bit vector modes.
***************
*** 9622,9628 ****
  
  ;; When AESE/AESMC fusion is enabled we really want to keep the two together
  ;; and enforce the register dependency without scheduling or register
! ;; allocation messing up the order or introducing moves inbetween.
  ;;  Mash the two together during combine.
  
  (define_insn "*aarch64_crypto_aese_fused"
--- 9644,9650 ----
  
  ;; When AESE/AESMC fusion is enabled we really want to keep the two together
  ;; and enforce the register dependency without scheduling or register
! ;; allocation messing up the order or introducing moves in between.
  ;;  Mash the two together during combine.
  
  (define_insn "*aarch64_crypto_aese_fused"
***************
*** 9643,9649 ****
  
  ;; When AESD/AESIMC fusion is enabled we really want to keep the two together
  ;; and enforce the register dependency without scheduling or register
! ;; allocation messing up the order or introducing moves inbetween.
  ;;  Mash the two together during combine.
  
  (define_insn "*aarch64_crypto_aesd_fused"
--- 9665,9671 ----
  
  ;; When AESD/AESIMC fusion is enabled we really want to keep the two together
  ;; and enforce the register dependency without scheduling or register
! ;; allocation messing up the order or introducing moves in between.
  ;;  Mash the two together during combine.
  
  (define_insn "*aarch64_crypto_aesd_fused"
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-speculation.cc gcc-17-20260607/gcc/config/aarch64/aarch64-speculation.cc
*** gcc-17-20260531/gcc/config/aarch64/aarch64-speculation.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-speculation.cc	Sun Jun  7 22:32:06 2026
***************
*** 148,154 ****
     mutually exclusive gates, with the normal pass being chosen wherever
     possible.  */
  
! /* Generate a code sequence to clobber SP if speculating incorreclty.  */
  static rtx_insn *
  aarch64_speculation_clobber_sp ()
  {
--- 148,154 ----
     mutually exclusive gates, with the normal pass being chosen wherever
     possible.  */
  
! /* Generate a code sequence to clobber SP if speculating incorrectly.  */
  static rtx_insn *
  aarch64_speculation_clobber_sp ()
  {
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-functions.h gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins-functions.h
*** gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Sun Jun  7 22:32:06 2026
*************** typedef unspec_based_function_exact_insn
*** 371,377 ****
  typedef unspec_based_function_exact_insn<code_for_aarch64_sve_lane>
    unspec_based_lane_function;
  
! /* A functon that uses aarch64_pred* patterns regardless of the
     predication type.  */
  typedef unspec_based_function_exact_insn<code_for_aarch64_pred>
    unspec_based_pred_function;
--- 371,377 ----
  typedef unspec_based_function_exact_insn<code_for_aarch64_sve_lane>
    unspec_based_lane_function;
  
! /* A function that uses aarch64_pred* patterns regardless of the
     predication type.  */
  typedef unspec_based_function_exact_insn<code_for_aarch64_pred>
    unspec_based_pred_function;
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
*** gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Sun Jun  7 22:32:06 2026
*************** struct binary_za_m_def : public binary_z
*** 2059,2065 ****
    build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
!     /* Allow the overloaded form to be specified seperately, with just
         a single suffix.  This is necessary for the 64-bit SME MOP intrinsics,
         which have some forms dependent on FEAT_SME_I16I64 and some forms
         dependent on FEAT_SME_F64F64.  The resolver needs to be defined
--- 2059,2065 ----
    build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
!     /* Allow the overloaded form to be specified separately, with just
         a single suffix.  This is necessary for the 64-bit SME MOP intrinsics,
         which have some forms dependent on FEAT_SME_I16I64 and some forms
         dependent on FEAT_SME_F64F64.  The resolver needs to be defined
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins.cc gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins.cc
*** gcc-17-20260531/gcc/config/aarch64/aarch64-sve-builtins.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-sve-builtins.cc	Sun Jun  7 22:32:06 2026
*************** function_builder::add_function (const fu
*** 1519,1525 ****
  {
    unsigned int length = vec_safe_length (registered_functions);
    unsigned int code = (m_function_index << AARCH64_BUILTIN_SHIFT) | AARCH64_BUILTIN_SVE;
!   /* We need to be able to generate placeholders to enusre that we have a
       consistent numbering scheme for function codes between the C and C++
       frontends, so that everything ties up in LTO.
  
--- 1519,1525 ----
  {
    unsigned int length = vec_safe_length (registered_functions);
    unsigned int code = (m_function_index << AARCH64_BUILTIN_SHIFT) | AARCH64_BUILTIN_SVE;
!   /* We need to be able to generate placeholders to ensure that we have a
       consistent numbering scheme for function codes between the C and C++
       frontends, so that everything ties up in LTO.
  
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-sve.md gcc-17-20260607/gcc/config/aarch64/aarch64-sve.md
*** gcc-17-20260531/gcc/config/aarch64/aarch64-sve.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-sve.md	Sun Jun  7 22:32:06 2026
***************
*** 27,33 ****
  ;; ---- Note on the handling of big-endian SVE
  ;; ---- Description of UNSPEC_PTEST
  ;; ---- Description of UNSPEC_PRED_Z
! ;; ---- Note on predicated integer arithemtic and UNSPEC_PRED_X
  ;; ---- Note on predicated FP arithmetic patterns and GP "strictness"
  ;; ---- Note on FFR handling
  ;;
--- 27,33 ----
  ;; ---- Note on the handling of big-endian SVE
  ;; ---- Description of UNSPEC_PTEST
  ;; ---- Description of UNSPEC_PRED_Z
! ;; ---- Note on predicated integer arithmetic and UNSPEC_PRED_X
  ;; ---- Note on predicated FP arithmetic patterns and GP "strictness"
  ;; ---- Note on FFR handling
  ;;
***************
*** 305,311 ****
  ;;
  ;; For example, when applying a separate PTEST to the result of a full-vector
  ;; .H comparison, the PTEST must be predicated on a .H PTRUE instead of a
! ;; .B PTRUE.  In constrast, the comparison might be predicated on either
  ;; a .H PTRUE or a .B PTRUE, since the values of odd-indexed predicate
  ;; bits don't matter for .H operations.
  ;;
--- 305,311 ----
  ;;
  ;; For example, when applying a separate PTEST to the result of a full-vector
  ;; .H comparison, the PTEST must be predicated on a .H PTRUE instead of a
! ;; .B PTRUE.  In contrast, the comparison might be predicated on either
  ;; a .H PTRUE or a .B PTRUE, since the values of odd-indexed predicate
  ;; bits don't matter for .H operations.
  ;;
***************
*** 336,342 ****
  ;; The "Z" in UNSPEC_PRED_Z indicates that inactive lanes are zero.
  ;;
  ;; -------------------------------------------------------------------------
! ;; ---- Note on predicated integer arithemtic and UNSPEC_PRED_X
  ;; -------------------------------------------------------------------------
  ;;
  ;; Many SVE integer operations are predicated.  We can generate them
--- 336,342 ----
  ;; The "Z" in UNSPEC_PRED_Z indicates that inactive lanes are zero.
  ;;
  ;; -------------------------------------------------------------------------
! ;; ---- Note on predicated integer arithmetic and UNSPEC_PRED_X
  ;; -------------------------------------------------------------------------
  ;;
  ;; Many SVE integer operations are predicated.  We can generate them
***************
*** 8592,8598 ****
  ;; it would would copy the upper (undefined) bits of each container along
  ;; with the corresponding defined bits.  If SEL used the element size,
  ;; it would use separate predicate bits to select between the undefined
! ;; elements in each input vector; these seperate predicate bits might
  ;; themselves be undefined, depending on the mode of the predicate.
  ;;
  ;; Thus the only difference is whether the undefined bits in a container
--- 8592,8598 ----
  ;; it would would copy the upper (undefined) bits of each container along
  ;; with the corresponding defined bits.  If SEL used the element size,
  ;; it would use separate predicate bits to select between the undefined
! ;; elements in each input vector; these separate predicate bits might
  ;; themselves be undefined, depending on the mode of the predicate.
  ;;
  ;; Thus the only difference is whether the undefined bits in a container
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64-sve2.md gcc-17-20260607/gcc/config/aarch64/aarch64-sve2.md
*** gcc-17-20260531/gcc/config/aarch64/aarch64-sve2.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64-sve2.md	Sun Jun  7 22:32:06 2026
***************
*** 4734,4740 ****
  ;; When AESE/AESMC and AESD/AESIMC fusion is enabled, we really want
  ;; to keep the two together and enforce the register dependency without
  ;; scheduling or register allocation messing up the order or introducing
! ;; moves inbetween.  Mash the two together during combine.
  
  (define_insn "*aarch64_sve2_aese_fused"
    [(set (match_operand:VNx16QI 0 "register_operand" "=w")
--- 4734,4740 ----
  ;; When AESE/AESMC and AESD/AESIMC fusion is enabled, we really want
  ;; to keep the two together and enforce the register dependency without
  ;; scheduling or register allocation messing up the order or introducing
! ;; moves in between.  Mash the two together during combine.
  
  (define_insn "*aarch64_sve2_aese_fused"
    [(set (match_operand:VNx16QI 0 "register_operand" "=w")
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64.cc gcc-17-20260607/gcc/config/aarch64/aarch64.cc
*** gcc-17-20260531/gcc/config/aarch64/aarch64.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64.cc	Sun Jun  7 22:32:06 2026
*************** aarch64_init_sysregs (void)
*** 579,585 ****
  }
  
  /* No direct access to the sysreg hash-map should be made.  Doing so
!    risks trying to acess an unitialized hash-map and dereferencing the
     returned double pointer without due care risks dereferencing a
     null-pointer.  */
  const sysreg_t *
--- 579,585 ----
  }
  
  /* No direct access to the sysreg hash-map should be made.  Doing so
!    risks trying to access an uninitialized hash-map and dereferencing the
     returned double pointer without due care risks dereferencing a
     null-pointer.  */
  const sysreg_t *
*************** aarch64_reg_save_mode (unsigned int regn
*** 2841,2869 ****
  /* Return the CONST_INT that should be placed in an UNSPEC_CALLEE_ABI rtx.
     This value encodes the following information:
      - the ISA mode on entry to a callee (ISA_MODE)
-     - the ABI of the callee (PCS_VARIANT)
      - whether the callee has an indirect_return
        attribute (INDIRECT_RETURN).  */
  
  rtx
! aarch64_gen_callee_cookie (aarch64_isa_mode isa_mode, arm_pcs pcs_variant,
! 			   bool indirect_return)
  {
    unsigned int im = (unsigned int) isa_mode;
    unsigned int ir = (indirect_return ? 1 : 0) << AARCH64_NUM_ISA_MODES;
!   unsigned int pv = (unsigned int) pcs_variant
! 		     << (AARCH64_NUM_ABI_ATTRIBUTES + AARCH64_NUM_ISA_MODES);
!   return gen_int_mode (im | ir | pv, DImode);
! }
! 
! /* COOKIE is a CONST_INT from an UNSPEC_CALLEE_ABI rtx.  Return the
!    callee's ABI.  */
! 
! static const predefined_function_abi &
! aarch64_callee_abi (rtx cookie)
! {
!   return function_abis[UINTVAL (cookie)
! 	 >> (AARCH64_NUM_ABI_ATTRIBUTES + AARCH64_NUM_ISA_MODES)];
  }
  
  /* COOKIE is a CONST_INT from an UNSPEC_CALLEE_ABI rtx.  Return the
--- 2841,2855 ----
  /* Return the CONST_INT that should be placed in an UNSPEC_CALLEE_ABI rtx.
     This value encodes the following information:
      - the ISA mode on entry to a callee (ISA_MODE)
      - whether the callee has an indirect_return
        attribute (INDIRECT_RETURN).  */
  
  rtx
! aarch64_gen_callee_cookie (aarch64_isa_mode isa_mode, bool indirect_return)
  {
    unsigned int im = (unsigned int) isa_mode;
    unsigned int ir = (indirect_return ? 1 : 0) << AARCH64_NUM_ISA_MODES;
!   return gen_int_mode (im | ir, DImode);
  }
  
  /* COOKIE is a CONST_INT from an UNSPEC_CALLEE_ABI rtx.  Return the
*************** aarch_fun_is_indirect_return (rtx_insn *
*** 2909,2922 ****
    return aarch64_callee_indirect_return (cookie);
  }
  
- /* Implement TARGET_INSN_CALLEE_ABI.  */
- 
- const predefined_function_abi &
- aarch64_insn_callee_abi (const rtx_insn *insn)
- {
-   return aarch64_callee_abi (aarch64_insn_callee_cookie (insn));
- }
- 
  /* INSN is a call instruction.  Return the required ISA mode on entry to
     the callee, which is also the ISA mode on return from the callee.  */
  
--- 2895,2900 ----
*************** aarch64_hard_regno_call_part_clobbered (
*** 2939,2948 ****
        && abi_id != ARM_PCS_SVE
        && abi_id != ARM_PCS_PRESERVE_NONE)
      {
!       poly_int64 per_register_size = GET_MODE_SIZE (mode);
!       unsigned int nregs = hard_regno_nregs (regno, mode);
!       if (nregs > 1)
! 	per_register_size = exact_div (per_register_size, nregs);
        if (abi_id == ARM_PCS_SIMD || abi_id == ARM_PCS_TLSDESC)
  	return maybe_gt (per_register_size, 16);
        return maybe_gt (per_register_size, 8);
--- 2917,2939 ----
        && abi_id != ARM_PCS_SVE
        && abi_id != ARM_PCS_PRESERVE_NONE)
      {
!       poly_int64 per_register_size;
!       if (aarch64_sve_mode_p (mode))
! 	/* SVE instructions operate on the full SVE register, even for
! 	   partial modes like VNx2SF whose GET_MODE_SIZE is only 8 bytes
! 	   under -msve-vector-bits=128.  The elements of such partial
! 	   modes are strided across the register and can lie outside the
! 	   callee-preserved low 64 bits.  Compare against the full SVE
! 	   vector size so that V8-V15 are correctly recognised as
! 	   partially clobbered for any SVE mode under AAPCS64/AAPCS_SIMD.  */
! 	per_register_size = BYTES_PER_SVE_VECTOR;
!       else
! 	{
! 	  per_register_size = GET_MODE_SIZE (mode);
! 	  unsigned int nregs = hard_regno_nregs (regno, mode);
! 	  if (nregs > 1)
! 	    per_register_size = exact_div (per_register_size, nregs);
! 	}
        if (abi_id == ARM_PCS_SIMD || abi_id == ARM_PCS_TLSDESC)
  	return maybe_gt (per_register_size, 16);
        return maybe_gt (per_register_size, 8);
*************** aarch64_load_symref_appropriately (rtx d
*** 3612,3618 ****
  	   while the got entry is always of SImode size.  The mode of
  	   dest depends on how dest is used: if dest is assigned to a
  	   pointer (e.g. in the memory), it has SImode; it may have
! 	   DImode if dest is dereferenced to access the memeory.
  	   This is why we have to handle three different tlsie_small
  	   patterns here (two patterns for ILP32).  */
  	machine_mode mode = GET_MODE (dest);
--- 3603,3609 ----
  	   while the got entry is always of SImode size.  The mode of
  	   dest depends on how dest is used: if dest is assigned to a
  	   pointer (e.g. in the memory), it has SImode; it may have
! 	   DImode if dest is dereferenced to access the memory.
  	   This is why we have to handle three different tlsie_small
  	   patterns here (two patterns for ILP32).  */
  	machine_mode mode = GET_MODE (dest);
*************** aarch64_output_sve_cnt_immediate (const
*** 4449,4455 ****
    if (nelts_per_vq == 0)
      /* There is some overlap in the ranges of the four CNT instructions.
         Here we always use the smallest possible element size, so that the
!        multiplier is 1 whereever possible.  */
      nelts_per_vq = factor & -factor;
    int shift = std::min (exact_log2 (nelts_per_vq), 4);
    gcc_assert (IN_RANGE (shift, 1, 4));
--- 4440,4446 ----
    if (nelts_per_vq == 0)
      /* There is some overlap in the ranges of the four CNT instructions.
         Here we always use the smallest possible element size, so that the
!        multiplier is 1 wherever possible.  */
      nelts_per_vq = factor & -factor;
    int shift = std::min (exact_log2 (nelts_per_vq), 4);
    gcc_assert (IN_RANGE (shift, 1, 4));
*************** aarch64_replace_reg_mode (rtx x, machine
*** 7057,7063 ****
    return x;
  }
  
! /* Return the SVE REV[BHW] unspec for reversing quantites of mode MODE
     stored in wider integer containers.  */
  
  static unsigned int
--- 7048,7054 ----
    return x;
  }
  
! /* Return the SVE REV[BHW] unspec for reversing quantities of mode MODE
     stored in wider integer containers.  */
  
  static unsigned int
*************** aarch64_pass_by_reference_1 (CUMULATIVE_
*** 7191,7197 ****
      return false;
  
    /* Arguments which are variable sized or larger than 2 registers are
!      passed by reference unless they are a homogenous floating point
       aggregate.  */
    return size > 2 * UNITS_PER_WORD;
  }
--- 7182,7188 ----
      return false;
  
    /* Arguments which are variable sized or larger than 2 registers are
!      passed by reference unless they are a homogeneous floating point
       aggregate.  */
    return size > 2 * UNITS_PER_WORD;
  }
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7760,7766 ****
       - Types bigger than 16 bytes are passed indirectly.
  
       - If an argument of type T is passed indirectly, TYPE and MODE describe
!        a pointer to T rather than T iself.
  
       It follows that the AAPCS64 alignment of TYPE must be no greater
       than 16 bytes.
--- 7751,7757 ----
       - Types bigger than 16 bytes are passed indirectly.
  
       - If an argument of type T is passed indirectly, TYPE and MODE describe
!        a pointer to T rather than T itself.
  
       It follows that the AAPCS64 alignment of TYPE must be no greater
       than 16 bytes.
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7877,7884 ****
  
    nvrn = pcum->aapcs_nvrn;
  
!   /* C1 - C5 for floating point, homogenous floating point aggregates (HFA)
!      and homogenous short-vector aggregates (HVA).  */
    if (allocate_nvrn)
      {
        /* aarch64_function_arg_alignment has never had an effect on
--- 7868,7875 ----
  
    nvrn = pcum->aapcs_nvrn;
  
!   /* C1 - C5 for floating point, homogeneous floating point aggregates (HFA)
!      and homogeneous short-vector aggregates (HVA).  */
    if (allocate_nvrn)
      {
        /* aarch64_function_arg_alignment has never had an effect on
*************** aarch64_function_arg (cumulative_args_t
*** 8101,8107 ****
    if (arg.end_marker_p ())
      {
        rtx abi_cookie = aarch64_gen_callee_cookie (pcum->isa_mode,
- 						  pcum->pcs_variant,
  						  pcum->indirect_return);
        rtx sme_mode_switch_args = aarch64_finish_sme_mode_switch_args (pcum);
        rtx shared_za_flags = gen_int_mode (pcum->shared_za_flags, SImode);
--- 8092,8097 ----
*************** aarch64_allocate_and_probe_stack_space (
*** 10312,10318 ****
  	 The non-loop part won't be entered because if our allocation amount
  	 doesn't require a loop, the case above would handle it.
  
! 	 The residual amount won't be entered because TEMP1 is a mutliple of
  	 the allocation size.  The residual will always be 0.  As such, the only
  	 part we are actually using from that code is the loop setup.  The
  	 actual probing is done in aarch64_output_probe_stack_range.  */
--- 10302,10308 ----
  	 The non-loop part won't be entered because if our allocation amount
  	 doesn't require a loop, the case above would handle it.
  
! 	 The residual amount won't be entered because TEMP1 is a multiple of
  	 the allocation size.  The residual will always be 0.  As such, the only
  	 part we are actually using from that code is the loop setup.  The
  	 actual probing is done in aarch64_output_probe_stack_range.  */
*************** aarch64_output_mi_thunk (FILE *file, tre
*** 11131,11138 ****
    auto pcs_variant = aarch64_fndecl_abi (function);
    bool ir = lookup_attribute ("indirect_return",
  			      TYPE_ATTRIBUTES (TREE_TYPE (function)));
!   rtx callee_abi = aarch64_gen_callee_cookie (isa_mode, pcs_variant, ir);
    insn = emit_call_insn (gen_sibcall (funexp, const0_rtx, callee_abi));
    SIBLING_CALL_P (insn) = 1;
  
    insn = get_insns ();
--- 11121,11129 ----
    auto pcs_variant = aarch64_fndecl_abi (function);
    bool ir = lookup_attribute ("indirect_return",
  			      TYPE_ATTRIBUTES (TREE_TYPE (function)));
!   rtx callee_abi = aarch64_gen_callee_cookie (isa_mode, ir);
    insn = emit_call_insn (gen_sibcall (funexp, const0_rtx, callee_abi));
+   CALL_INSN_ABI_ID (insn) = pcs_variant;
    SIBLING_CALL_P (insn) = 1;
  
    insn = get_insns ();
*************** aarch64_legitimize_address_displacement
*** 11883,11889 ****
        if (vec_flags & VEC_SVE_DATA)
  	/* LDR supports a 9-bit range, but the move patterns for
  	   structure modes require all vectors to be in range of the
! 	   same base.  The simplest way of accomodating that while still
  	   promoting reuse of anchor points between different modes is
  	   to use an 8-bit range unconditionally.  */
  	vnum = ((vnum + 128) & 255) - 128;
--- 11874,11880 ----
        if (vec_flags & VEC_SVE_DATA)
  	/* LDR supports a 9-bit range, but the move patterns for
  	   structure modes require all vectors to be in range of the
! 	   same base.  The simplest way of accommodating that while still
  	   promoting reuse of anchor points between different modes is
  	   to use an 8-bit range unconditionally.  */
  	vnum = ((vnum + 128) & 255) - 128;
*************** aarch64_output_casesi (rtx *operands)
*** 14231,14237 ****
  
    gcc_assert (index >= 0 && index <= 3);
  
!   /* Need to implement table size reduction, by chaning the code below.  */
    output_asm_insn (patterns[index][0], operands);
    ASM_GENERATE_INTERNAL_LABEL (label, "Lrtx", CODE_LABEL_NUMBER (operands[2]));
    snprintf (buf, sizeof (buf),
--- 14222,14228 ----
  
    gcc_assert (index >= 0 && index <= 3);
  
!   /* Need to implement table size reduction, by changing the code below.  */
    output_asm_insn (patterns[index][0], operands);
    ASM_GENERATE_INTERNAL_LABEL (label, "Lrtx", CODE_LABEL_NUMBER (operands[2]));
    snprintf (buf, sizeof (buf),
*************** cost_plus:
*** 16185,16191 ****
      case UMOD:
        if (speed)
  	{
! 	  /* Slighly prefer UMOD over SMOD.  */
  	  if (VECTOR_MODE_P (mode))
  	    *cost += extra_cost->vect.alu;
  	  else if (GET_MODE_CLASS (mode) == MODE_INT)
--- 16176,16182 ----
      case UMOD:
        if (speed)
  	{
! 	  /* Slightly prefer UMOD over SMOD.  */
  	  if (VECTOR_MODE_P (mode))
  	    *cost += extra_cost->vect.alu;
  	  else if (GET_MODE_CLASS (mode) == MODE_INT)
*************** cost_plus:
*** 16206,16212 ****
  	    /* There is no integer SQRT, so only DIV and UDIV can get
  	       here.  */
  	    *cost += (extra_cost->mult[mode == DImode].idiv
! 		     /* Slighly prefer UDIV over SDIV.  */
  		     + (code == DIV ? 1 : 0));
  	  else
  	    *cost += extra_cost->fp[mode == DFmode].div;
--- 16197,16203 ----
  	    /* There is no integer SQRT, so only DIV and UDIV can get
  	       here.  */
  	    *cost += (extra_cost->mult[mode == DImode].idiv
! 		     /* Slightly prefer UDIV over SDIV.  */
  		     + (code == DIV ? 1 : 0));
  	  else
  	    *cost += extra_cost->fp[mode == DFmode].div;
*************** aarch64_stp_sequence_cost (unsigned int
*** 18563,18569 ****
      }
  }
  
! /* Determine probabilistically whether the STMT is one tht could possible be
     made into a by lane operation later on.  We can't be sure, but certain
     operations have a higher chance.  */
  
--- 18554,18560 ----
      }
  }
  
! /* Determine probabilistically whether the STMT is one that could possible be
     made into a by lane operation later on.  We can't be sure, but certain
     operations have a higher chance.  */
  
*************** aarch64_vector_costs::add_stmt_cost (int
*** 18892,18898 ****
  
        /* If we're applying the SVE vs. Advanced SIMD unrolling heuristic,
  	 estimate the number of statements in the unrolled Advanced SIMD
! 	 loop.  For simplicitly, we assume that one iteration of the
  	 Advanced SIMD loop would need the same number of statements
  	 as one iteration of the SVE loop.  */
        if (where == vect_body && m_unrolled_advsimd_niters)
--- 18883,18889 ----
  
        /* If we're applying the SVE vs. Advanced SIMD unrolling heuristic,
  	 estimate the number of statements in the unrolled Advanced SIMD
! 	 loop.  For simplicity, we assume that one iteration of the
  	 Advanced SIMD loop would need the same number of statements
  	 as one iteration of the SVE loop.  */
        if (where == vect_body && m_unrolled_advsimd_niters)
*************** aarch64_override_options (void)
*** 20214,20220 ****
      {
        /* If both -mcpu and -march are specified, warn if they are not
  	 feature compatible.  feature compatible means that the inclusion of the
! 	 cpu features would end up disabling an achitecture feature.  In
  	 otherwords the cpu features need to be a strict superset of the arch
  	 features and if so prefer the -march ISA flags.  */
        if (~cpu_isa & arch_isa)
--- 20205,20211 ----
      {
        /* If both -mcpu and -march are specified, warn if they are not
  	 feature compatible.  feature compatible means that the inclusion of the
! 	 cpu features would end up disabling an architecture feature.  In
  	 otherwords the cpu features need to be a strict superset of the arch
  	 features and if so prefer the -march ISA flags.  */
        if (~cpu_isa & arch_isa)
*************** aarch64_functions_b_resolvable_from_a (t
*** 21420,21426 ****
    if (b_version.is_valid ())
      aarch64_parse_fmv_features (b_version, &isa_b, NULL, NULL, NULL);
  
!   /* Are there any bits of b that arent in a.  */
    if (isa_b & (~isa_a))
      return false;
  
--- 21411,21417 ----
    if (b_version.is_valid ())
      aarch64_parse_fmv_features (b_version, &isa_b, NULL, NULL, NULL);
  
!   /* Are there any bits of b that aren't in a.  */
    if (isa_b & (~isa_a))
      return false;
  
*************** dispatch_function_versions (tree dispatc
*** 21734,21740 ****
  
    gseq = bb_seq (*empty_bb);
    /* Function version dispatch is via IFUNC.  IFUNC resolvers fire before
!      constructors, so explicity call __init_cpu_features_resolver here.  */
    tree init_fn_type = build_function_type_list (void_type_node,
  						long_unsigned_type_node,
  						build_ifunc_arg_type(),
--- 21725,21731 ----
  
    gseq = bb_seq (*empty_bb);
    /* Function version dispatch is via IFUNC.  IFUNC resolvers fire before
!      constructors, so explicitly call __init_cpu_features_resolver here.  */
    tree init_fn_type = build_function_type_list (void_type_node,
  						long_unsigned_type_node,
  						build_ifunc_arg_type(),
*************** aarch64_can_inline_p (tree caller, tree
*** 22170,22176 ****
      return false;
  
    /* If the user explicitly specified -momit-leaf-frame-pointer for the
!      caller and calle and they don't match up, reject inlining.  */
    if (!aarch64_tribools_ok_for_inlining_p (
  	  caller_opts->x_flag_omit_leaf_frame_pointer,
  	  callee_opts->x_flag_omit_leaf_frame_pointer,
--- 22161,22167 ----
      return false;
  
    /* If the user explicitly specified -momit-leaf-frame-pointer for the
!      caller and callee and they don't match up, reject inlining.  */
    if (!aarch64_tribools_ok_for_inlining_p (
  	  caller_opts->x_flag_omit_leaf_frame_pointer,
  	  callee_opts->x_flag_omit_leaf_frame_pointer,
*************** aarch64_classify_symbol (rtx x, HOST_WID
*** 22312,22318 ****
  	     the offset does not cause overflow of the final address.  But
  	     we have no way of knowing the address of symbol at compile time
  	     so we can't accurately say if the distance between the PC and
! 	     symbol + offset is outside the addressible range of +/-1MB in the
  	     TINY code model.  So we limit the maximum offset to +/-64KB and
  	     assume the offset to the symbol is not larger than +/-(1MB - 64KB).
  	     If offset_within_block_p is true we allow larger offsets.  */
--- 22303,22309 ----
  	     the offset does not cause overflow of the final address.  But
  	     we have no way of knowing the address of symbol at compile time
  	     so we can't accurately say if the distance between the PC and
! 	     symbol + offset is outside the addressable range of +/-1MB in the
  	     TINY code model.  So we limit the maximum offset to +/-64KB and
  	     assume the offset to the symbol is not larger than +/-(1MB - 64KB).
  	     If offset_within_block_p is true we allow larger offsets.  */
*************** aarch64_build_builtin_va_list (void)
*** 22541,22547 ****
  			integer_type_node);
  
    /* Tell tree-stdarg pass about our internal offset fields.
!      NOTE: va_list_gpr/fpr_counter_field are only used for tree comparision
       purpose to identify whether the code is updating va_list internal
       offset fields through irregular way.  */
    va_list_gpr_counter_field = f_groff;
--- 22532,22538 ----
  			integer_type_node);
  
    /* Tell tree-stdarg pass about our internal offset fields.
!      NOTE: va_list_gpr/fpr_counter_field are only used for tree comparison
       purpose to identify whether the code is updating va_list internal
       offset fields through irregular way.  */
    va_list_gpr_counter_field = f_groff;
*************** aarch64_sve_pred_valid_immediate (rtx x,
*** 24476,24482 ****
       'r' is an integer in the range -3 <= r <= 4.
  
     Return true iff R represents a vale encodable into an AArch64 floating point
!    move instruction as an immediate.  Othewise false.  */
  
  static bool
  aarch64_real_float_const_representable_p (REAL_VALUE_TYPE r)
--- 24467,24473 ----
       'r' is an integer in the range -3 <= r <= 4.
  
     Return true iff R represents a vale encodable into an AArch64 floating point
!    move instruction as an immediate.  Otherwise false.  */
  
  static bool
  aarch64_real_float_const_representable_p (REAL_VALUE_TYPE r)
*************** aarch64_simd_lane_bounds (rtx operand, H
*** 25216,25222 ****
    }
  }
  
! /* Peform endian correction on lane number N, which indexes a vector
     of mode MODE, and return the result as an SImode rtx.  */
  
  rtx
--- 25207,25213 ----
    }
  }
  
! /* Perform endian correction on lane number N, which indexes a vector
     of mode MODE, and return the result as an SImode rtx.  */
  
  rtx
*************** aarch64_expand_vector_init_fallback (rtx
*** 25674,25680 ****
  
    /* 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)))
--- 25665,25671 ----
  
    /* 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 concatenation into TARGET.  */
    if (n_elts == 2 && (VECTOR_MODE_P (v0mode)
  				 || SCALAR_INT_MODE_P (v0mode)
  				 || SCALAR_FLOAT_MODE_P (v0mode)))
*************** aarch64_modes_compatible_p (machine_mode
*** 28861,28867 ****
  
  /* Implement TARGET_MODES_TIEABLE_P.  In principle we should always defer
     to aarch64_modes_compatible_p.  However due to issues with register
!    allocation it is preferable to avoid tieing integer scalar and FP
     scalar modes.  Executing integer operations in general registers is
     better than treating them as scalar vector operations.  This reduces
     latency and avoids redundant int<->FP moves.  So tie modes if they
--- 28852,28858 ----
  
  /* Implement TARGET_MODES_TIEABLE_P.  In principle we should always defer
     to aarch64_modes_compatible_p.  However due to issues with register
!    allocation it is preferable to avoid tying integer scalar and FP
     scalar modes.  Executing integer operations in general registers is
     better than treating them as scalar vector operations.  This reduces
     latency and avoids redundant int<->FP moves.  So tie modes if they
*************** aarch64_ldrstr_offset_compare (const voi
*** 30247,30253 ****
       stp  w1, w1, [scratch, 0x8]
  
     The peephole patterns detecting this opportunity should guarantee
!    the scratch register is avaliable.  */
  
  bool
  aarch64_operands_adjust_ok_for_ldpstp (rtx *operands, bool load,
--- 30238,30244 ----
       stp  w1, w1, [scratch, 0x8]
  
     The peephole patterns detecting this opportunity should guarantee
!    the scratch register is available.  */
  
  bool
  aarch64_operands_adjust_ok_for_ldpstp (rtx *operands, bool load,
*************** aarch64_speculation_safe_value (machine_
*** 30870,30876 ****
  				rtx result, rtx val, rtx failval)
  {
    /* Maybe we should warn if falling back to hard barriers.  They are
!      likely to be noticably more expensive than the alternative below.  */
    if (!aarch64_track_speculation)
      return default_speculation_safe_value (mode, result, val, failval);
  
--- 30861,30867 ----
  				rtx result, rtx val, rtx failval)
  {
    /* Maybe we should warn if falling back to hard barriers.  They are
!      likely to be noticeably more expensive than the alternative below.  */
    if (!aarch64_track_speculation)
      return default_speculation_safe_value (mode, result, val, failval);
  
*************** aarch64_libgcc_floating_mode_supported_p
*** 34224,34232 ****
  #define TARGET_HARD_REGNO_CALL_PART_CLOBBERED \
    aarch64_hard_regno_call_part_clobbered
  
- #undef TARGET_INSN_CALLEE_ABI
- #define TARGET_INSN_CALLEE_ABI aarch64_insn_callee_abi
- 
  #undef TARGET_CONSTANT_ALIGNMENT
  #define TARGET_CONSTANT_ALIGNMENT aarch64_constant_alignment
  
--- 34215,34220 ----
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64.h gcc-17-20260607/gcc/config/aarch64/aarch64.h
*** gcc-17-20260531/gcc/config/aarch64/aarch64.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64.h	Sun Jun  7 22:32:06 2026
*************** extern enum aarch64_cpu aarch64_tune;
*** 1033,1039 ****
  
  #define DEFAULT_PCC_STRUCT_RETURN 0
  
! /* The set of available Procedure Call Stardards.  */
  
  enum arm_pcs
  {
--- 1033,1039 ----
  
  #define DEFAULT_PCC_STRUCT_RETURN 0
  
! /* The set of available Procedure Call Standards.  */
  
  enum arm_pcs
  {
*************** struct GTY (()) aarch64_frame
*** 1094,1105 ****
    poly_int64 bytes_below_hard_fp;
  
    /* The number of bytes between the top of the locals area and the top
!      of the frame (the incomming SP).  This value is always a multiple of
       STACK_BOUNDARY.  */
    poly_int64 bytes_above_locals;
  
    /* The number of bytes between the hard_frame_pointer and the top of
!      the frame (the incomming SP).  This value is always a multiple of
       STACK_BOUNDARY.  */
    poly_int64 bytes_above_hard_fp;
  
--- 1094,1105 ----
    poly_int64 bytes_below_hard_fp;
  
    /* The number of bytes between the top of the locals area and the top
!      of the frame (the incoming SP).  This value is always a multiple of
       STACK_BOUNDARY.  */
    poly_int64 bytes_above_locals;
  
    /* The number of bytes between the hard_frame_pointer and the top of
!      the frame (the incoming SP).  This value is always a multiple of
       STACK_BOUNDARY.  */
    poly_int64 bytes_above_hard_fp;
  
*************** typedef struct
*** 1494,1500 ****
  
  /* This definition should be relocated to aarch64-elf-raw.h.  This macro
     should be undefined in aarch64-linux.h and a clear_cache pattern
!    implmented to emit either the call to __aarch64_sync_cache_range()
     directly or preferably the appropriate sycall or cache clear
     instructions inline.  */
  #define CLEAR_INSN_CACHE(beg, end)				\
--- 1494,1500 ----
  
  /* This definition should be relocated to aarch64-elf-raw.h.  This macro
     should be undefined in aarch64-linux.h and a clear_cache pattern
!    implemented to emit either the call to __aarch64_sync_cache_range()
     directly or preferably the appropriate sycall or cache clear
     instructions inline.  */
  #define CLEAR_INSN_CACHE(beg, end)				\
*************** extern poly_uint16 aarch64_sve_vg;
*** 1639,1645 ****
     vectors in a structure mode (4).
  
     This limit must not be used for variable-size vectors, since
!    VL-agnostic code must work with arbitary vector lengths.  */
  #define MAX_COMPILE_TIME_VEC_BYTES (256 * 4)
  #endif
  
--- 1639,1645 ----
     vectors in a structure mode (4).
  
     This limit must not be used for variable-size vectors, since
!    VL-agnostic code must work with arbitrary vector lengths.  */
  #define MAX_COMPILE_TIME_VEC_BYTES (256 * 4)
  #endif
  
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64.md gcc-17-20260607/gcc/config/aarch64/aarch64.md
*** gcc-17-20260531/gcc/config/aarch64/aarch64.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64.md	Sun Jun  7 22:32:06 2026
***************
*** 4538,4544 ****
  
  ;; umax (a, add (a, b)) => [sum, ovf] = adds (a, b); !ovf ? sum : a
  ;; umin (a, add (a, b)) => [sum, ovf] = adds (a, b); !ovf ? a : sum
! ;; ... and the commutated versions:
  ;; umax (a, add (b, a)) => [sum, ovf] = adds (b, a); !ovf ? sum : a
  ;; umin (a, add (b, a)) => [sum, ovf] = adds (b, a); !ovf ? a : sum
  (define_insn_and_split "*aarch64_plus_within_<optab><mode>3_<ovf_commutate>"
--- 4538,4544 ----
  
  ;; umax (a, add (a, b)) => [sum, ovf] = adds (a, b); !ovf ? sum : a
  ;; umin (a, add (a, b)) => [sum, ovf] = adds (a, b); !ovf ? a : sum
! ;; ... and the commuted versions:
  ;; umax (a, add (b, a)) => [sum, ovf] = adds (b, a); !ovf ? sum : a
  ;; umin (a, add (b, a)) => [sum, ovf] = adds (b, a); !ovf ? a : sum
  (define_insn_and_split "*aarch64_plus_within_<optab><mode>3_<ovf_commutate>"
***************
*** 8127,8137 ****
    {
      if (TARGET_SVE)
        {
! 	rtx abi = aarch64_gen_callee_cookie (AARCH64_ISA_MODE,
! 					     aarch64_tlsdesc_abi_id (),
! 					     false);
  	rtx_insn *call
  	  = emit_call_insn (gen_tlsdesc_small_sve_<mode> (operands[0], abi));
  	RTL_CONST_CALL_P (call) = 1;
        }
      else
--- 8127,8136 ----
    {
      if (TARGET_SVE)
        {
! 	rtx abi = aarch64_gen_callee_cookie (AARCH64_ISA_MODE, false);
  	rtx_insn *call
  	  = emit_call_insn (gen_tlsdesc_small_sve_<mode> (operands[0], abi));
+ 	CALL_INSN_ABI_ID (call) = aarch64_tlsdesc_abi_id ();
  	RTL_CONST_CALL_P (call) = 1;
        }
      else
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/aarch64.opt gcc-17-20260607/gcc/config/aarch64/aarch64.opt
*** gcc-17-20260531/gcc/config/aarch64/aarch64.opt	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/aarch64.opt	Sun Jun  7 22:32:06 2026
*************** trailing destructive updates of the base
*** 463,469 ****
  
  -param=aarch64-tag-memory-loop-threshold=
  Target Joined UInteger Var(aarch64_tag_memory_loop_threshold) Init(10) IntegerRange(0, 65536) Param
! Param to control the treshold in number of granules beyond which an
  explicit loop for tagging a memory block is emitted.
  
  Wexperimental-fmv-target
--- 463,469 ----
  
  -param=aarch64-tag-memory-loop-threshold=
  Target Joined UInteger Var(aarch64_tag_memory_loop_threshold) Init(10) IntegerRange(0, 65536) Param
! Param to control the threshold in number of granules beyond which an
  explicit loop for tagging a memory block is emitted.
  
  Wexperimental-fmv-target
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/arm_bf16.h gcc-17-20260607/gcc/config/aarch64/arm_bf16.h
*** gcc-17-20260531/gcc/config/aarch64/arm_bf16.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/arm_bf16.h	Sun Jun  7 22:32:06 2026
***************
*** 1,4 ****
! /* Arm BF16 instrinsics include file.
  
     Copyright (C) 2019-2026 Free Software Foundation, Inc.
     Contributed by Arm.
--- 1,4 ----
! /* Arm BF16 intrinsics include file.
  
     Copyright (C) 2019-2026 Free Software Foundation, Inc.
     Contributed by Arm.
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/arm_neon.h gcc-17-20260607/gcc/config/aarch64/arm_neon.h
*** gcc-17-20260531/gcc/config/aarch64/arm_neon.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/arm_neon.h	Sun Jun  7 22:32:06 2026
*************** vbslq_u64 (uint64x2_t __a, uint64x2_t __
*** 7003,7009 ****
    return __builtin_aarch64_simd_bslv2di_uuuu (__a, __b, __c);
  }
  
! /* ARMv8.1-A instrinsics.  */
  #pragma GCC push_options
  #pragma GCC target ("+nothing+rdma")
  
--- 7003,7009 ----
    return __builtin_aarch64_simd_bslv2di_uuuu (__a, __b, __c);
  }
  
! /* ARMv8.1-A intrinsics.  */
  #pragma GCC push_options
  #pragma GCC target ("+nothing+rdma")
  
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/constraints.md gcc-17-20260607/gcc/config/aarch64/constraints.md
*** gcc-17-20260531/gcc/config/aarch64/constraints.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/constraints.md	Sun Jun  7 22:32:06 2026
***************
*** 22,31 ****
    "@internal The stack register.")
  
  (define_register_constraint "Uci" "W8_W11_REGS"
!   "@internal r8-r11, which can be used to index ZA.")
  
  (define_register_constraint "Ucj" "W12_W15_REGS"
!   "@internal r12-r15, which can be used to index ZA.")
  
  (define_register_constraint "Ucs" "TAILCALL_ADDR_REGS"
    "@internal Registers suitable for an indirect tail call")
--- 22,31 ----
    "@internal The stack register.")
  
  (define_register_constraint "Uci" "W8_W11_REGS"
!   "GPRs r8-r11, can be used to index ZA.")
  
  (define_register_constraint "Ucj" "W12_W15_REGS"
!   "GPRs r12-r15, can be used to index ZA.")
  
  (define_register_constraint "Ucs" "TAILCALL_ADDR_REGS"
    "@internal Registers suitable for an indirect tail call")
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/cortex-a57-fma-steering.cc gcc-17-20260607/gcc/config/aarch64/cortex-a57-fma-steering.cc
*** gcc-17-20260531/gcc/config/aarch64/cortex-a57-fma-steering.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/cortex-a57-fma-steering.cc	Sun Jun  7 22:32:06 2026
***************
*** 44,50 ****
  /* For better performance, the destination of FMADD/FMSUB instructions should
     have the same parity as their accumulator register if the accumulator
     contains the result of a previous FMUL or FMADD/FMSUB instruction if
!    targetting Cortex-A57 processors.  Performance is also increased by
     otherwise keeping a good balance in the parity of the destination register
     of FMUL or FMADD/FMSUB.
  
--- 44,50 ----
  /* For better performance, the destination of FMADD/FMSUB instructions should
     have the same parity as their accumulator register if the accumulator
     contains the result of a previous FMUL or FMADD/FMSUB instruction if
!    targeting Cortex-A57 processors.  Performance is also increased by
     otherwise keeping a good balance in the parity of the destination register
     of FMUL or FMADD/FMSUB.
  
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/driver-aarch64.cc gcc-17-20260607/gcc/config/aarch64/driver-aarch64.cc
*** gcc-17-20260531/gcc/config/aarch64/driver-aarch64.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/driver-aarch64.cc	Sun Jun  7 22:32:06 2026
*************** get_cpu_from_id (const char* name)
*** 120,126 ****
    return NULL;
  }
  
! /* Check wether the CORE array is the same as the big.LITTLE BL_CORE.
     For an example CORE={0xd08, 0xd03} and
     BL_CORE=AARCH64_BIG_LITTLE (0xd08, 0xd03) will return true.  */
  
--- 120,126 ----
    return NULL;
  }
  
! /* Check whether the CORE array is the same as the big.LITTLE BL_CORE.
     For an example CORE={0xd08, 0xd03} and
     BL_CORE=AARCH64_BIG_LITTLE (0xd08, 0xd03) will return true.  */
  
*************** host_detect_local_cpu (int argc, const c
*** 436,442 ****
  				 : DEFAULT_ARCH);
  	  auto arch_info = get_arch_from_id (arch_id);
  
! 	  /* We got some arch indentifier that's not in aarch64-arches.def?  */
  	  if (!arch_info)
  	    goto not_found;
  
--- 436,442 ----
  				 : DEFAULT_ARCH);
  	  auto arch_info = get_arch_from_id (arch_id);
  
! 	  /* We got some arch identifier that's not in aarch64-arches.def?  */
  	  if (!arch_info)
  	    goto not_found;
  
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/iterators.md gcc-17-20260607/gcc/config/aarch64/iterators.md
*** gcc-17-20260531/gcc/config/aarch64/iterators.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/iterators.md	Sun Jun  7 22:32:06 2026
***************
*** 139,144 ****
--- 139,147 ----
  ;; VQMOV without 2-element modes.
  (define_mode_iterator VQMOV_NO2E [V16QI V8HI V4SI V8HF V8BF V4SF])
  
+ ;; Modes that can be duplicated into a 32-bit quantity.
+ (define_mode_iterator VSDUP [V2QI QI HI BF HF])
+ 
  ;; 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])
***************
*** 200,206 ****
  				  (HF "TARGET_SIMD_F16INST")
  				  SF DF])
  
! ;; Scalar and vetor modes for SF, DF.
  (define_mode_iterator VSFDF [V2SF V4SF V2DF DF SF])
  
  ;; Advanced SIMD single Float modes.
--- 203,209 ----
  				  (HF "TARGET_SIMD_F16INST")
  				  SF DF])
  
! ;; Scalar and vector modes for SF, DF.
  (define_mode_iterator VSFDF [V2SF V4SF V2DF DF SF])
  
  ;; Advanced SIMD single Float modes.
***************
*** 1935,1940 ****
--- 1938,1953 ----
  
  (define_mode_attr vnx [(V4SI "vnx4si") (V2DI "vnx2di")])
  
+ ;; 32-bit container modes the inner or scalar source mode.
+ (define_mode_attr VCONS [(HI "V2HI") (QI "V4QI") (V2QI "V4QI")
+ 			 (HF "V2HF")
+ 			 (BF "V2BF")])
+ 
+ ;; Same as above, but in lowercase.
+ (define_mode_attr vcons [(HI "v2hi") (QI "v4qi") (V2QI "v4qi")
+ 			 (HF "v2hf")
+ 			 (BF "v2bf")])
+ 
  ;; 64-bit container modes the inner or scalar source mode.
  (define_mode_attr VCOND [(HI "V4HI") (SI "V2SI")
  			 (V2HI "V4HI")
***************
*** 2693,2699 ****
  			      (V4x1DF "16") (V4x2DF "16")
  			      (V4x4BF "16") (V4x8BF "16")])
  
! ;; -fpic small model GOT reloc modifers: gotpage_lo15/lo14 for ILP64/32.
  ;; No need of iterator for -fPIC as it use got_lo12 for both modes.
  (define_mode_attr got_modifier [(SI "gotpage_lo14") (DI "gotpage_lo15")])
  
--- 2706,2712 ----
  			      (V4x1DF "16") (V4x2DF "16")
  			      (V4x4BF "16") (V4x8BF "16")])
  
! ;; -fpic small model GOT reloc modifiers: gotpage_lo15/lo14 for ILP64/32.
  ;; No need of iterator for -fPIC as it use got_lo12 for both modes.
  (define_mode_attr got_modifier [(SI "gotpage_lo14") (DI "gotpage_lo15")])
  
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/thunderx.md gcc-17-20260607/gcc/config/aarch64/thunderx.md
*** gcc-17-20260531/gcc/config/aarch64/thunderx.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/thunderx.md	Sun Jun  7 22:32:06 2026
***************
*** 59,65 ****
         (eq_attr "type" "csel"))
    "thunderx_pipe0 | thunderx_pipe1")
  
! ;; Multiply and mulitply accumulate and count leading zeros can only happen on pipe 1
  
  (define_insn_reservation "thunderx_mul" 4
    (and (eq_attr "tune" "thunderx")
--- 59,65 ----
         (eq_attr "type" "csel"))
    "thunderx_pipe0 | thunderx_pipe1")
  
! ;; Multiply and multiply accumulate and count leading zeros can only happen on pipe 1
  
  (define_insn_reservation "thunderx_mul" 4
    (and (eq_attr "tune" "thunderx")
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/thunderx3t110.md gcc-17-20260607/gcc/config/aarch64/thunderx3t110.md
*** gcc-17-20260531/gcc/config/aarch64/thunderx3t110.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/thunderx3t110.md	Sun Jun  7 22:32:06 2026
***************
*** 535,541 ****
  ; necessarily accurate (because insns are split into uops, and those
  ; may be issued out-of-order).
  
! ; the LDP/LDNP imm-offset S/D/Q suppplies the first arg with latency 4
  ; and the 2nd at 5 (Q form) or 8 (S/D form). Can this be modeled? These
  ;forms, as documented, do not use the I0/I1/I2 units (no I3), but the
  ; other LDP ones do.
--- 535,541 ----
  ; necessarily accurate (because insns are split into uops, and those
  ; may be issued out-of-order).
  
! ; the LDP/LDNP imm-offset S/D/Q supplies the first arg with latency 4
  ; and the 2nd at 5 (Q form) or 8 (S/D form). Can this be modeled? These
  ;forms, as documented, do not use the I0/I1/I2 units (no I3), but the
  ; other LDP ones do.
diff -Nrcpad gcc-17-20260531/gcc/config/aarch64/tuning_models/olympus.h gcc-17-20260607/gcc/config/aarch64/tuning_models/olympus.h
*** gcc-17-20260531/gcc/config/aarch64/tuning_models/olympus.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/aarch64/tuning_models/olympus.h	Sun Jun  7 22:32:06 2026
*************** static sve_vec_cost olympus_sve_vector_c
*** 95,101 ****
  
  static aarch64_scalar_vec_issue_info olympus_scalar_issue_info =
  {
!   4, /* loads_stores_per_cycle  */
    2, /* stores_per_cycle  */
    8, /* general_ops_per_cycle  */
    0, /* fp_simd_load_general_ops  */
--- 95,101 ----
  
  static aarch64_scalar_vec_issue_info olympus_scalar_issue_info =
  {
!   6, /* loads_stores_per_cycle  */
    2, /* stores_per_cycle  */
    8, /* general_ops_per_cycle  */
    0, /* fp_simd_load_general_ops  */
*************** static aarch64_scalar_vec_issue_info oly
*** 105,111 ****
  static aarch64_advsimd_vec_issue_info olympus_advsimd_issue_info =
  {
    {
!     3, /* loads_stores_per_cycle  */
      2, /* stores_per_cycle  */
      6, /* general_ops_per_cycle  */
      0, /* fp_simd_load_general_ops  */
--- 105,111 ----
  static aarch64_advsimd_vec_issue_info olympus_advsimd_issue_info =
  {
    {
!     6, /* loads_stores_per_cycle  */
      2, /* stores_per_cycle  */
      6, /* general_ops_per_cycle  */
      0, /* fp_simd_load_general_ops  */
*************** static aarch64_sve_vec_issue_info olympu
*** 120,126 ****
  {
    {
      {
!       3, /* loads_stores_per_cycle  */
        2, /* stores_per_cycle  */
        6, /* general_ops_per_cycle  */
        0, /* fp_simd_load_general_ops  */
--- 120,126 ----
  {
    {
      {
!       6, /* loads_stores_per_cycle  */
        2, /* stores_per_cycle  */
        6, /* general_ops_per_cycle  */
        0, /* fp_simd_load_general_ops  */
*************** static struct tune_params olympus_tuning
*** 545,553 ****
    }, /* memmov_cost.  */
    10, /* issue_rate  */
    AARCH64_FUSE_NEOVERSE_BASE, /* fusible_ops  */
!   "32:16",	/* function_align.  */
!   "4",		/* jump_align.  */
!   "64:16",	/* loop_align.  */
    8,	/* int_reassoc_width.  */
    6,	/* fp_reassoc_width.  */
    4,	/* fma_reassoc_width.  */
--- 545,553 ----
    }, /* memmov_cost.  */
    10, /* issue_rate  */
    AARCH64_FUSE_NEOVERSE_BASE, /* fusible_ops  */
!   "32:25",	/* function_align.  */
!   "16:9",		/* jump_align.  */
!   "64:33:32",	/* loop_align.  */
    8,	/* int_reassoc_width.  */
    6,	/* fp_reassoc_width.  */
    4,	/* fma_reassoc_width.  */
diff -Nrcpad gcc-17-20260531/gcc/config/alpha/alpha.cc gcc-17-20260607/gcc/config/alpha/alpha.cc
*** gcc-17-20260531/gcc/config/alpha/alpha.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/alpha/alpha.cc	Sun Jun  7 22:32:06 2026
*************** alpha_pass_by_reference (cumulative_args
*** 6415,6421 ****
  
       This introduces sort of ABI incompatibility, but until _Float32 was
       introduced, C-family languages promoted 32-bit float variable arg to
!      a 64-bit double, and it was not allowed to pass float as a varible
       argument.  Passing _Complex float as a variable argument never
       worked on alpha.  Thus, we have no backward compatibility issues
       to worry about, and passing unpromoted _Float32 and _Complex float
--- 6415,6421 ----
  
       This introduces sort of ABI incompatibility, but until _Float32 was
       introduced, C-family languages promoted 32-bit float variable arg to
!      a 64-bit double, and it was not allowed to pass float as a variable
       argument.  Passing _Complex float as a variable argument never
       worked on alpha.  Thus, we have no backward compatibility issues
       to worry about, and passing unpromoted _Float32 and _Complex float
*************** static void
*** 10099,10105 ****
  alpha_reorg (void)
  {
    /* Workaround for a linker error that triggers when an exception
!      handler immediatelly follows a sibcall or a noreturn function.
  
  In the sibcall case:
  
--- 10099,10105 ----
  alpha_reorg (void)
  {
    /* Workaround for a linker error that triggers when an exception
!      handler immediately follows a sibcall or a noreturn function.
  
  In the sibcall case:
  
diff -Nrcpad gcc-17-20260531/gcc/config/alpha/predicates.md gcc-17-20260607/gcc/config/alpha/predicates.md
*** gcc-17-20260531/gcc/config/alpha/predicates.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/alpha/predicates.md	Sun Jun  7 22:32:06 2026
***************
*** 169,175 ****
      case CONST:
        if (TARGET_EXPLICIT_RELOCS)
  	{
! 	  /* We don't split symbolic operands into something unintelligable
  	     until after reload, but we do not wish non-small, non-global
  	     symbolic operands to be reconstructed from their high/lo_sum
  	     form.  */
--- 169,175 ----
      case CONST:
        if (TARGET_EXPLICIT_RELOCS)
  	{
! 	  /* We don't split symbolic operands into something unintelligible
  	     until after reload, but we do not wish non-small, non-global
  	     symbolic operands to be reconstructed from their high/lo_sum
  	     form.  */
diff -Nrcpad gcc-17-20260531/gcc/config/arc/arc-arch.h gcc-17-20260607/gcc/config/arc/arc-arch.h
*** gcc-17-20260531/gcc/config/arc/arc-arch.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arc/arc-arch.h	Sun Jun  7 22:32:06 2026
*************** enum base_architecture
*** 47,53 ****
      BASE_ARCH_END
    };
  
! /* Architecture specific propoerties.  */
  
  typedef struct
  {
--- 47,53 ----
      BASE_ARCH_END
    };
  
! /* Architecture specific properties.  */
  
  typedef struct
  {
diff -Nrcpad gcc-17-20260531/gcc/config/arc/arc-cpus.def gcc-17-20260607/gcc/config/arc/arc-cpus.def
*** gcc-17-20260531/gcc/config/arc/arc-cpus.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arc/arc-cpus.def	Sun Jun  7 22:32:06 2026
***************
*** 42,48 ****
     FLAGS  Specific hardware flags that are enabled by this CPU configuration,
  	  as defined in arc-options.def file, and allowed by arc-arches.def
  	  file.  The specific hardware flags are enumerated without using
! 	  spaces between the '|' character and consequtive flags.
     EXTRA  Extra hardware flags, different than the ones in
  	  arc-arches.def.  Here we can specify the width of lp_count,
  	  for example.
--- 42,48 ----
     FLAGS  Specific hardware flags that are enabled by this CPU configuration,
  	  as defined in arc-options.def file, and allowed by arc-arches.def
  	  file.  The specific hardware flags are enumerated without using
! 	  spaces between the '|' character and consecutive flags.
     EXTRA  Extra hardware flags, different than the ones in
  	  arc-arches.def.  Here we can specify the width of lp_count,
  	  for example.
diff -Nrcpad gcc-17-20260531/gcc/config/arc/arc.cc gcc-17-20260607/gcc/config/arc/arc.cc
*** gcc-17-20260531/gcc/config/arc/arc.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arc/arc.cc	Sun Jun  7 22:32:06 2026
*************** typedef struct GTY (()) _arc_jli_section
*** 83,89 ****
  
  static arc_jli_section *arc_jli_sections = NULL;
  
! /* Track which regs are set fixed/call saved/call used from commnad line.  */
  HARD_REG_SET overrideregs;
  
  /* Maximum size of a loop.  */
--- 83,89 ----
  
  static arc_jli_section *arc_jli_sections = NULL;
  
! /* Track which regs are set fixed/call saved/call used from command line.  */
  HARD_REG_SET overrideregs;
  
  /* Maximum size of a loop.  */
*************** legitimate_scaled_address_p (machine_mod
*** 473,479 ****
        return false;
      }
  
!   /* Scalled addresses for sdata is done other places.  */
    if (legitimate_small_data_address_p (op, mode))
      return false;
  
--- 473,479 ----
        return false;
      }
  
!   /* Scaled addresses for sdata is done other places.  */
    if (legitimate_small_data_address_p (op, mode))
      return false;
  
*************** get_arc_condition_code (rtx comparison)
*** 1539,1545 ****
    return (42);
  }
  
! /* Return true if COMPARISON has a short form that can accomodate OFFSET.  */
  
  bool
  arc_short_comparison_p (rtx comparison, int offset)
--- 1539,1545 ----
    return (42);
  }
  
! /* Return true if COMPARISON has a short form that can accommodate OFFSET.  */
  
  bool
  arc_short_comparison_p (rtx comparison, int offset)
*************** arc_setup_incoming_varargs (cumulative_a
*** 2404,2410 ****
      }
  }
  
! /* Return TRUE if reg is ok for short instrcutions.  */
  
  static bool
  arc_check_short_reg_p (rtx op)
--- 2404,2410 ----
      }
  }
  
! /* Return TRUE if reg is ok for short instructions.  */
  
  static bool
  arc_check_short_reg_p (rtx op)
*************** pop_reg (rtx reg)
*** 3064,3071 ****
    return GET_MODE_SIZE (GET_MODE (reg));
  }
  
! /* Check if we have a continous range to be save/restored with the
!    help of enter/leave instructions.  A vaild register range starts
     from $r13 and is up to (including) $r26.  */
  
  static bool
--- 3064,3071 ----
    return GET_MODE_SIZE (GET_MODE (reg));
  }
  
! /* Check if we have a continuous range to be save/restored with the
!    help of enter/leave instructions.  A valid register range starts
     from $r13 and is up to (including) $r26.  */
  
  static bool
*************** arc_restore_callee_leave (uint64_t gmask
*** 3389,3395 ****
  
    if (offset && !restore_fp)
      {
!       /* This add is only emmited when we do not restore fp with leave
  	 instruction.  */
        frame_stack_add (offset);
        frame_allocated += offset;
--- 3389,3395 ----
  
    if (offset && !restore_fp)
      {
!       /* This add is only emitted when we do not restore fp with leave
  	 instruction.  */
        frame_stack_add (offset);
        frame_allocated += offset;
*************** arc_asm_trampoline_template (FILE *f)
*** 4811,4817 ****
     that no executable code but trampolines is on the stack, no icache
     entries linger for the area of the stack from when before the stack
     was allocated, and allocating trampolines in trampoline-only cache
!    lines or allocate trampolines fram a special pool of pre-allocated
     trampolines.  */
  
  static void
--- 4811,4817 ----
     that no executable code but trampolines is on the stack, no icache
     entries linger for the area of the stack from when before the stack
     was allocated, and allocating trampolines in trampoline-only cache
!    lines or allocate trampolines from a special pool of pre-allocated
     trampolines.  */
  
  static void
*************** arc_add_jli_section (rtx pat)
*** 4869,4875 ****
    arc_jli_sections = new_section;
  }
  
! /* This is set briefly to 1 when we output a ".as" address modifer, and then
     reset when we output the scaled address.  */
  static int output_scaled = 0;
  
--- 4869,4875 ----
    arc_jli_sections = new_section;
  }
  
! /* This is set briefly to 1 when we output a ".as" address modifier, and then
     reset when we output the scaled address.  */
  static int output_scaled = 0;
  
*************** arc_invalid_within_doloop (const rtx_ins
*** 7635,7641 ****
    return NULL;
  }
  
! /* Return the next active insn, skiping the inline assembly code.  */
  
  static rtx_insn *
  arc_active_insn (rtx_insn *insn)
--- 7635,7641 ----
    return NULL;
  }
  
! /* Return the next active insn, skipping the inline assembly code.  */
  
  static rtx_insn *
  arc_active_insn (rtx_insn *insn)
*************** arc_reorg (void)
*** 8462,8470 ****
     delay slot scheduling:
  
     - If a delay slot is filled with a nocond/set insn from above, the previous
!      basic block can become elegible for conditional execution.
     - If a delay slot is filled with a nocond insn from the fall-through path,
!      the branch with that delay slot can become eligble for conditional
       execution (however, with the same sort of data flow analysis that dbr
       does, we could have figured out before that we don't need to
       conditionalize this insn.)
--- 8462,8470 ----
     delay slot scheduling:
  
     - If a delay slot is filled with a nocond/set insn from above, the previous
!      basic block can become eligible for conditional execution.
     - If a delay slot is filled with a nocond insn from the fall-through path,
!      the branch with that delay slot can become eligible for conditional
       execution (however, with the same sort of data flow analysis that dbr
       does, we could have figured out before that we don't need to
       conditionalize this insn.)
*************** conditionalize_nonjump (rtx pat, rtx con
*** 9489,9496 ****
       what to do with COND_EXEC.  */
    if (RTX_FRAME_RELATED_P (insn))
      {
!       /* If this is the delay slot insn of an anulled branch,
! 	 dwarf2out.cc:scan_trace understands the anulling semantics
  	 without the COND_EXEC.  */
        gcc_assert (annulled);
        rtx note = alloc_reg_note (REG_FRAME_RELATED_EXPR, pat,
--- 9489,9496 ----
       what to do with COND_EXEC.  */
    if (RTX_FRAME_RELATED_P (insn))
      {
!       /* If this is the delay slot insn of an annulled branch,
! 	 dwarf2out.cc:scan_trace understands the annulling semantics
  	 without the COND_EXEC.  */
        gcc_assert (annulled);
        rtx note = alloc_reg_note (REG_FRAME_RELATED_EXPR, pat,
*************** arc_eh_uses (int regno)
*** 10184,10190 ****
    return false;
  }
  
! /* ??? Should we define TARGET_REGISTER_PRIORITY?  We might perfer to
     use q registers, because some insn are shorter with them.  OTOH we
     already have separate alternatives for this purpose, and other
     insns don't mind, so maybe we should rather prefer the other
--- 10184,10190 ----
    return false;
  }
  
! /* ??? Should we define TARGET_REGISTER_PRIORITY?  We might prefer to
     use q registers, because some insn are shorter with them.  OTOH we
     already have separate alternatives for this purpose, and other
     insns don't mind, so maybe we should rather prefer the other
*************** arc_memory_move_cost (machine_mode mode,
*** 11298,11304 ****
     one OR instruction:
     OR rA, rB, mask -> OR rA,rB,mask1/BSET_S rA,mask2
  
!    3. otherwise an OR with limm will be emmitted.  */
  
  void
  arc_split_ior (rtx *operands)
--- 11298,11304 ----
     one OR instruction:
     OR rA, rB, mask -> OR rA,rB,mask1/BSET_S rA,mask2
  
!    3. otherwise an OR with limm will be emitted.  */
  
  void
  arc_split_ior (rtx *operands)
diff -Nrcpad gcc-17-20260531/gcc/config/arc/arc.h gcc-17-20260607/gcc/config/arc/arc.h
*** gcc-17-20260531/gcc/config/arc/arc.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arc/arc.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 53,59 ****
  #define TARGET_CPU_CPP_BUILTINS() arc_cpu_cpp_builtins (pfile)
  
  /* Macros enabled by specific command line option.  FIXME: to be
!    deprecatd.  */
  #define CPP_SPEC "\
  %{msimd:-D__Xsimd} %{mno-mpy:-D__Xno_mpy} %{mswap:-D__Xswap} \
  %{mmin-max:-D__Xmin_max} %{mEA:-D__Xea} \
--- 53,59 ----
  #define TARGET_CPU_CPP_BUILTINS() arc_cpu_cpp_builtins (pfile)
  
  /* Macros enabled by specific command line option.  FIXME: to be
!    deprecated.  */
  #define CPP_SPEC "\
  %{msimd:-D__Xsimd} %{mno-mpy:-D__Xno_mpy} %{mswap:-D__Xswap} \
  %{mmin-max:-D__Xmin_max} %{mEA:-D__Xea} \
*************** extern const char *arc_cpu_to_as (int ar
*** 147,153 ****
  /* Should we add padding before a return insn to avoid mispredict?  */
  #define TARGET_PAD_RETURN (TARGET_ARC700 && !optimize_size)
  
! /* For an anulled-true delay slot insn for a delayed branch, should we only
     use conditional execution?  */
  #define TARGET_AT_DBR_CONDEXEC  (!TARGET_ARC700 && !TARGET_V2)
  
--- 147,153 ----
  /* Should we add padding before a return insn to avoid mispredict?  */
  #define TARGET_PAD_RETURN (TARGET_ARC700 && !optimize_size)
  
! /* For an annulled-true delay slot insn for a delayed branch, should we only
     use conditional execution?  */
  #define TARGET_AT_DBR_CONDEXEC  (!TARGET_ARC700 && !TARGET_V2)
  
*************** arc_select_cc_mode (OP, X, Y)
*** 971,977 ****
     These extra instructions - and the second comparison - will also be
     an extra cost if the first comparison would have been decisive.
     So get an average saving, with a probability of the first branch
!    beging decisive of p0, we want:
     p0 * (branch_cost - 4) > (1 - p0) * 5
     ??? We don't get to see that probability to evaluate, so we can
     only wildly guess that it might be 50%.  */
--- 971,977 ----
     These extra instructions - and the second comparison - will also be
     an extra cost if the first comparison would have been decisive.
     So get an average saving, with a probability of the first branch
!    being decisive of p0, we want:
     p0 * (branch_cost - 4) > (1 - p0) * 5
     ??? We don't get to see that probability to evaluate, so we can
     only wildly guess that it might be 50%.  */
*************** enum
*** 1596,1602 ****
     because that would lead to infinite recursion as the attribute test
     needs to recognize the insn.  So, instead we have a clause for
     the pattern condition of all sfunc patterns which is only relevant for
!    the predicated varaint.  */
  #define SFUNC_CHECK_PREDICABLE \
    (GET_CODE (PATTERN (insn)) != COND_EXEC || !flag_pic || !TARGET_MEDIUM_CALLS)
  
--- 1596,1602 ----
     because that would lead to infinite recursion as the attribute test
     needs to recognize the insn.  So, instead we have a clause for
     the pattern condition of all sfunc patterns which is only relevant for
!    the predicated variant.  */
  #define SFUNC_CHECK_PREDICABLE \
    (GET_CODE (PATTERN (insn)) != COND_EXEC || !flag_pic || !TARGET_MEDIUM_CALLS)
  
diff -Nrcpad gcc-17-20260531/gcc/config/arc/arc.md gcc-17-20260607/gcc/config/arc/arc.md
*** gcc-17-20260531/gcc/config/arc/arc.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arc/arc.md	Sun Jun  7 22:32:06 2026
***************
*** 557,563 ****
  
  ;; Delay slot definition for ARCompact ISA
  ;; ??? FIXME:
! ;; When outputting an annul-true insn elegible for cond-exec
  ;; in a cbranch delay slot, unless optimizing for size, we use cond-exec
  ;; for ARC600; we could also use this for ARC700 if the branch can't be
  ;; unaligned and is at least somewhat likely (add parameter for this).
--- 557,563 ----
  
  ;; Delay slot definition for ARCompact ISA
  ;; ??? FIXME:
! ;; When outputting an annul-true insn eligible for cond-exec
  ;; in a cbranch delay slot, unless optimizing for size, we use cond-exec
  ;; for ARC600; we could also use this for ARC700 if the branch can't be
  ;; unaligned and is at least somewhat likely (add parameter for this).
*************** archs4x, archs4xd"
*** 3928,3934 ****
  })
  
  ;; ??? Could add a peephole to generate compare with swapped operands and
! ;; modifed cc user if second, but not first operand is a compact register.
  (define_insn "cmpsi_cc_insn_mixed"
    [(set (reg:CC CC_REG)
  	(compare:CC (match_operand:SI 0 "register_operand"   "q, q,  h, c, c,  q,c")
--- 3928,3934 ----
  })
  
  ;; ??? Could add a peephole to generate compare with swapped operands and
! ;; modified cc user if second, but not first operand is a compact register.
  (define_insn "cmpsi_cc_insn_mixed"
    [(set (reg:CC CC_REG)
  	(compare:CC (match_operand:SI 0 "register_operand"   "q, q,  h, c, c,  q,c")
*************** archs4x, archs4xd"
*** 4170,4176 ****
  ; are three reasons why we need to consider branches to be length 6:
  ; - annull-false delay slot insns are implemented using conditional execution,
  ;   thus preventing short insn formation where used.
! ; - for ARC600: annull-true delay slot isnns are implemented where possile
  ;   using conditional execution, preventing short insn formation where used.
  ; - for ARC700: likely or somewhat likely taken branches are made long and
  ;   unaligned if possible to avoid branch penalty.
--- 4170,4176 ----
  ; are three reasons why we need to consider branches to be length 6:
  ; - annull-false delay slot insns are implemented using conditional execution,
  ;   thus preventing short insn formation where used.
! ; - for ARC600: annull-true delay slot isnns are implemented where possible
  ;   using conditional execution, preventing short insn formation where used.
  ; - for ARC700: likely or somewhat likely taken branches are made long and
  ;   unaligned if possible to avoid branch penalty.
*************** archs4x, archs4xd"
*** 5190,5196 ****
   ;; Comment in final.cc (insn_current_reference_address) says
   ;; forward branch addresses are calculated from the next insn after branch
   ;; and for backward branches, it is calculated from the branch insn start.
!  ;; The shortening logic here is tuned to accomodate this behavior
  ;; ??? This should be grokked by the ccfsm machinery.
  (define_insn "cbranchsi4_scratch"
    [(set (pc)
--- 5190,5196 ----
   ;; Comment in final.cc (insn_current_reference_address) says
   ;; forward branch addresses are calculated from the next insn after branch
   ;; and for backward branches, it is calculated from the branch insn start.
!  ;; The shortening logic here is tuned to accommodate this behavior
  ;; ??? This should be grokked by the ccfsm machinery.
  (define_insn "cbranchsi4_scratch"
    [(set (pc)
*************** archs4x, archs4xd"
*** 6082,6088 ****
  			 (match_operand:SI 3 "const_int_operand" "")))]
    "TARGET_NPS_BITOPS")
  
! ; We need a sanity check in the instuction predicate because combine
  ; will throw any old rubbish at us and see what sticks.
  (define_insn "*extzv_i"
    [(set (match_operand:SI 0 "register_operand" "=Rrq")
--- 6082,6088 ----
  			 (match_operand:SI 3 "const_int_operand" "")))]
    "TARGET_NPS_BITOPS")
  
! ; We need a sanity check in the instruction predicate because combine
  ; will throw any old rubbish at us and see what sticks.
  (define_insn "*extzv_i"
    [(set (match_operand:SI 0 "register_operand" "=Rrq")
diff -Nrcpad gcc-17-20260531/gcc/config/arc/arc.opt gcc-17-20260607/gcc/config/arc/arc.opt
*** gcc-17-20260531/gcc/config/arc/arc.opt	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arc/arc.opt	Sun Jun  7 22:32:06 2026
*************** mmixed-code
*** 141,147 ****
  Target Ignore Undocumented
  Does nothing.  Preserved for backward compatibility.
  
! ; We use an explict definition for the negative form because that is the
  ; actually interesting option, and we want that to have its own comment.
  mvolatile-cache
  Target RejectNegative Mask(VOLATILE_CACHE_SET)
--- 141,147 ----
  Target Ignore Undocumented
  Does nothing.  Preserved for backward compatibility.
  
! ; We use an explicit definition for the negative form because that is the
  ; actually interesting option, and we want that to have its own comment.
  mvolatile-cache
  Target RejectNegative Mask(VOLATILE_CACHE_SET)
diff -Nrcpad gcc-17-20260531/gcc/config/arc/arc700.md gcc-17-20260607/gcc/config/arc/arc700.md
*** gcc-17-20260531/gcc/config/arc/arc700.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arc/arc700.md	Sun Jun  7 22:32:06 2026
***************
*** 137,143 ****
  
  (define_bypass 1 "compare_700" "branch_700,core_insn,data_store,data_load")
  
! ; we could shedule the cmove immediately after the compare, but then
  ; the cmove would have higher latency... so just keep the cmove apart
  ; from the compare.
  (define_bypass 2 "compare_700" "cmove")
--- 137,143 ----
  
  (define_bypass 1 "compare_700" "branch_700,core_insn,data_store,data_load")
  
! ; we could schedule the cmove immediately after the compare, but then
  ; the cmove would have higher latency... so just keep the cmove apart
  ; from the compare.
  (define_bypass 2 "compare_700" "cmove")
diff -Nrcpad gcc-17-20260531/gcc/config/arc/elf.h gcc-17-20260607/gcc/config/arc/elf.h
*** gcc-17-20260531/gcc/config/arc/elf.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arc/elf.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 74,80 ****
  #undef TARGET_ASM_FILE_END
  #define TARGET_ASM_FILE_END arc_file_end
  
! /* If no specs file is enforced, default to nosys libarary.  */
  #undef LINK_GCC_C_SEQUENCE_SPEC
  #define LINK_GCC_C_SEQUENCE_SPEC				\
    "--start-group %G %{!specs=*:%{!nolibc:-lc -lnosys}} --end-group"
--- 74,80 ----
  #undef TARGET_ASM_FILE_END
  #define TARGET_ASM_FILE_END arc_file_end
  
! /* If no specs file is enforced, default to nosys library.  */
  #undef LINK_GCC_C_SEQUENCE_SPEC
  #define LINK_GCC_C_SEQUENCE_SPEC				\
    "--start-group %G %{!specs=*:%{!nolibc:-lc -lnosys}} --end-group"
diff -Nrcpad gcc-17-20260531/gcc/config/arm/aarch-bti-insert.cc gcc-17-20260607/gcc/config/arm/aarch-bti-insert.cc
*** gcc-17-20260531/gcc/config/arm/aarch-bti-insert.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/aarch-bti-insert.cc	Sun Jun  7 22:32:06 2026
*************** rest_of_insert_bti (void)
*** 138,144 ****
  	    }
  
  	  /* There could still be more labels that are valid targets of a
! 	     BTI J instuction.  To find them we start looking through the
  	     JUMP_INSN.  If it jumps to a jump table, then we find all labels
  	     of the jump table to protect with a BTI J.  */
  	  if (JUMP_P (insn))
--- 138,144 ----
  	    }
  
  	  /* There could still be more labels that are valid targets of a
! 	     BTI J instruction.  To find them we start looking through the
  	     JUMP_INSN.  If it jumps to a jump table, then we find all labels
  	     of the jump table to protect with a BTI J.  */
  	  if (JUMP_P (insn))
diff -Nrcpad gcc-17-20260531/gcc/config/arm/arm-builtins.cc gcc-17-20260607/gcc/config/arm/arm-builtins.cc
*** gcc-17-20260531/gcc/config/arm/arm-builtins.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/arm-builtins.cc	Sun Jun  7 22:32:06 2026
*************** arm_mac_lane_pair_qualifiers[SIMD_MAX_BU
*** 139,145 ****
        qualifier_none, qualifier_lane_pair_index };
  #define MAC_LANE_PAIR_QUALIFIERS (arm_mac_lane_pair_qualifiers)
  
! /* unsigned T (unsigned T, unsigned T, unsigend T, lane index).  */
  static enum arm_type_qualifiers
  arm_umac_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
    = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned,
--- 139,145 ----
        qualifier_none, qualifier_lane_pair_index };
  #define MAC_LANE_PAIR_QUALIFIERS (arm_mac_lane_pair_qualifiers)
  
! /* unsigned T (unsigned T, unsigned T, unsigned T, lane index).  */
  static enum arm_type_qualifiers
  arm_umac_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
    = { qualifier_unsigned, qualifier_unsigned, qualifier_unsigned,
*************** arm_usmac_lane_quadtup_qualifiers[SIMD_M
*** 153,159 ****
        qualifier_none, qualifier_lane_quadtup_index };
  #define USMAC_LANE_QUADTUP_QUALIFIERS (arm_usmac_lane_quadtup_qualifiers)
  
! /* T (T, T, unsigend T, lane index).  */
  static enum arm_type_qualifiers
  arm_sumac_lane_quadtup_qualifiers[SIMD_MAX_BUILTIN_ARGS]
    = { qualifier_none, qualifier_none, qualifier_none,
--- 153,159 ----
        qualifier_none, qualifier_lane_quadtup_index };
  #define USMAC_LANE_QUADTUP_QUALIFIERS (arm_usmac_lane_quadtup_qualifiers)
  
! /* T (T, T, unsigned T, lane index).  */
  static enum arm_type_qualifiers
  arm_sumac_lane_quadtup_qualifiers[SIMD_MAX_BUILTIN_ARGS]
    = { qualifier_none, qualifier_none, qualifier_none,
diff -Nrcpad gcc-17-20260531/gcc/config/arm/arm-modes.def gcc-17-20260607/gcc/config/arm/arm-modes.def
*** gcc-17-20260531/gcc/config/arm/arm-modes.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/arm-modes.def	Sun Jun  7 22:32:06 2026
*************** ADJUST_FLOAT_FORMAT (HF, ((arm_fp16_form
*** 43,49 ****
       (eg after an unsigned borrow with carry-in propagation).
     (used for DImode signed comparisons).
     CC_ADCmode is used when the carry is formed from the output of ADC for an
!      addtion.  In this case we cannot use the trick of comparing the sum
       against one of the other operands.
     CCmode should be used otherwise.  */
  
--- 43,49 ----
       (eg after an unsigned borrow with carry-in propagation).
     (used for DImode signed comparisons).
     CC_ADCmode is used when the carry is formed from the output of ADC for an
!      addition.  In this case we cannot use the trick of comparing the sum
       against one of the other operands.
     CCmode should be used otherwise.  */
  
diff -Nrcpad gcc-17-20260531/gcc/config/arm/arm-mve-builtins-base.cc gcc-17-20260607/gcc/config/arm/arm-mve-builtins-base.cc
*** gcc-17-20260531/gcc/config/arm/arm-mve-builtins-base.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/arm-mve-builtins-base.cc	Sun Jun  7 22:32:06 2026
*************** public:
*** 753,759 ****
  
  /* Map the vidup / vddup function directly to CODE (UNSPEC, M) where M is the
     vector mode associated with type suffix 0.  We need this special case
!    because in MODE_wb the builtins derefrence the first parameter and update
     its contents.  We also have to insert the two additional parameters needed
     by the builtins compared to the intrinsics.  In wrapping mode, we have to
     match the 'hack' to make sure the 'wrap' parameters is in odd register.  */
--- 753,759 ----
  
  /* Map the vidup / vddup function directly to CODE (UNSPEC, M) where M is the
     vector mode associated with type suffix 0.  We need this special case
!    because in MODE_wb the builtins dereference the first parameter and update
     its contents.  We also have to insert the two additional parameters needed
     by the builtins compared to the intrinsics.  In wrapping mode, we have to
     match the 'hack' to make sure the 'wrap' parameters is in odd register.  */
*************** public:
*** 886,892 ****
  
  /* Map the vshlc function directly to CODE (UNSPEC, M) where M is the vector
     mode associated with type suffix 0.  We need this special case because the
!    intrinsics derefrence the second parameter and update its contents.  */
  class vshlc_impl : public function_base
  {
  public:
--- 886,892 ----
  
  /* Map the vshlc function directly to CODE (UNSPEC, M) where M is the vector
     mode associated with type suffix 0.  We need this special case because the
!    intrinsics dereference the second parameter and update its contents.  */
  class vshlc_impl : public function_base
  {
  public:
diff -Nrcpad gcc-17-20260531/gcc/config/arm/arm-mve-builtins-shapes.cc gcc-17-20260607/gcc/config/arm/arm-mve-builtins-shapes.cc
*** gcc-17-20260531/gcc/config/arm/arm-mve-builtins-shapes.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/arm-mve-builtins-shapes.cc	Sun Jun  7 22:32:06 2026
*************** struct binary_lshift_unsigned_def : publ
*** 702,708 ****
      if (r.pred == PRED_m)
        {
  	/* With PRED_m, check that the 'inactive' first argument has
! 	   the expeected unsigned type.  */
  	type_suffix_index return_type
  	  = find_type_suffix (TYPE_unsigned, type_suffixes[type].element_bits);
  
--- 702,708 ----
      if (r.pred == PRED_m)
        {
  	/* With PRED_m, check that the 'inactive' first argument has
! 	   the expected unsigned type.  */
  	type_suffix_index return_type
  	  = find_type_suffix (TYPE_unsigned, type_suffixes[type].element_bits);
  
*************** struct binary_maxamina_def : public over
*** 750,756 ****
  	|| (type = r.infer_vector_type (i)) == NUM_TYPE_SUFFIXES)
        return error_mark_node;
  
!     /* Check that the first argument has the expeected unsigned
         type.  */
      type_suffix_index return_type
        = find_type_suffix (TYPE_unsigned, type_suffixes[type].element_bits);
--- 750,756 ----
  	|| (type = r.infer_vector_type (i)) == NUM_TYPE_SUFFIXES)
        return error_mark_node;
  
!     /* Check that the first argument has the expected unsigned
         type.  */
      type_suffix_index return_type
        = find_type_suffix (TYPE_unsigned, type_suffixes[type].element_bits);
*************** struct viddup_def : public overloaded_ba
*** 2858,2865 ****
        return error_mark_node;
  
      type_suffix = r.type_suffix_ids[0];
!     /* With PRED_m, ther is no type suffix, so infer it from the first (inactive)
!        argument.  */
      if (type_suffix == NUM_TYPE_SUFFIXES)
        type_suffix = r.infer_vector_type (0);
  
--- 2858,2865 ----
        return error_mark_node;
  
      type_suffix = r.type_suffix_ids[0];
!     /* With PRED_m, there is no type suffix, so infer it from the first
!        (inactive) argument.  */
      if (type_suffix == NUM_TYPE_SUFFIXES)
        type_suffix = r.infer_vector_type (0);
  
*************** struct vidwdup_def : public overloaded_b
*** 2943,2950 ****
        return error_mark_node;
  
      type_suffix = r.type_suffix_ids[0];
!     /* With PRED_m, ther is no type suffix, so infer it from the first (inactive)
!        argument.  */
      if (type_suffix == NUM_TYPE_SUFFIXES)
        type_suffix = r.infer_vector_type (0);
  
--- 2943,2950 ----
        return error_mark_node;
  
      type_suffix = r.type_suffix_ids[0];
!     /* With PRED_m, there is no type suffix, so infer it from the first
!        (inactive) argument.  */
      if (type_suffix == NUM_TYPE_SUFFIXES)
        type_suffix = r.infer_vector_type (0);
  
diff -Nrcpad gcc-17-20260531/gcc/config/arm/arm-protos.h gcc-17-20260607/gcc/config/arm/arm-protos.h
*** gcc-17-20260531/gcc/config/arm/arm-protos.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/arm-protos.h	Sun Jun  7 22:32:06 2026
*************** struct tune_params
*** 360,366 ****
      prefer_constant_pool: 1;
    /* Prefer STRD/LDRD instructions over PUSH/POP/LDM/STM.  */
    enum {PREF_LDRD_FALSE, PREF_LDRD_TRUE} prefer_ldrd_strd: 1;
!   /* The preference for non short cirtcuit operation when optimizing for
       performance. The first element covers Thumb state and the second one
       is for ARM state.  */
    enum log_op_non_short_circuit {LOG_OP_NON_SHORT_CIRCUIT_FALSE,
--- 360,366 ----
      prefer_constant_pool: 1;
    /* Prefer STRD/LDRD instructions over PUSH/POP/LDM/STM.  */
    enum {PREF_LDRD_FALSE, PREF_LDRD_TRUE} prefer_ldrd_strd: 1;
!   /* The preference for non short circuit operation when optimizing for
       performance. The first element covers Thumb state and the second one
       is for ARM state.  */
    enum log_op_non_short_circuit {LOG_OP_NON_SHORT_CIRCUIT_FALSE,
diff -Nrcpad gcc-17-20260531/gcc/config/arm/arm.cc gcc-17-20260607/gcc/config/arm/arm.cc
*** gcc-17-20260531/gcc/config/arm/arm.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/arm.cc	Sun Jun  7 22:32:06 2026
*************** arm_option_override_internal (struct gcc
*** 3137,3143 ****
    if (TARGET_THUMB_P (opts->x_target_flags) && TARGET_CALLEE_INTERWORKING)
      opts->x_target_flags |= MASK_INTERWORK;
  
!   /* need to remember initial values so combinaisons of options like
       -mflip-thumb -mthumb -fno-schedule-insns work for any attribute.  */
    cl_optimization *to = TREE_OPTIMIZATION (init_optimize);
  
--- 3137,3143 ----
    if (TARGET_THUMB_P (opts->x_target_flags) && TARGET_CALLEE_INTERWORKING)
      opts->x_target_flags |= MASK_INTERWORK;
  
!   /* need to remember initial values so combinations of options like
       -mflip-thumb -mthumb -fno-schedule-insns work for any attribute.  */
    cl_optimization *to = TREE_OPTIMIZATION (init_optimize);
  
*************** arm_option_override_internal (struct gcc
*** 3196,3202 ****
       'Find out how many of the (return) argument registers we can corrupt'.
       As a consequence, the epilogue may clobber registers without fipa-ra
       finding out about it.  Therefore, disable fipa-ra in Thumb1 mode.
!      TODO: Accurately model clobbers for epilogue_insns and reenable
       fipa-ra.  */
    if (TARGET_THUMB1_P (opts->x_target_flags))
      opts->x_flag_ipa_ra = 0;
--- 3196,3202 ----
       'Find out how many of the (return) argument registers we can corrupt'.
       As a consequence, the epilogue may clobber registers without fipa-ra
       finding out about it.  Therefore, disable fipa-ra in Thumb1 mode.
!      TODO: Accurately model clobbers for epilogue_insns and re-enable
       fipa-ra.  */
    if (TARGET_THUMB1_P (opts->x_target_flags))
      opts->x_flag_ipa_ra = 0;
*************** arm_option_override (void)
*** 3869,3875 ****
        && (!arm_arch7 || !current_tune->prefer_ldrd_strd))
      flag_schedule_fusion = 0;
  
!   /* Need to remember initial options before they are overriden.  */
    init_optimize = build_optimization_node (&global_options,
  					   &global_options_set);
  
--- 3869,3875 ----
        && (!arm_arch7 || !current_tune->prefer_ldrd_strd))
      flag_schedule_fusion = 0;
  
!   /* Need to remember initial options before they are overridden.  */
    init_optimize = build_optimization_node (&global_options,
  					   &global_options_set);
  
*************** optimal_immediate_sequence_1 (enum rtx_c
*** 4991,4997 ****
  	  else if (loc > 16)
  	    {
  	      /* The 8-bit immediate already found clears b2 (and maybe b3)
! 		 and we don't get here unless b1 is alredy clear, but it will
  		 leave b4 unchanged.  */
  
  	      /* If we can clear b2 and b4 at once, then we win, since the
--- 4991,4997 ----
  	  else if (loc > 16)
  	    {
  	      /* The 8-bit immediate already found clears b2 (and maybe b3)
! 		 and we don't get here unless b1 is already clear, but it will
  		 leave b4 unchanged.  */
  
  	      /* If we can clear b2 and b4 at once, then we win, since the
*************** arm_pcs_from_attribute (tree attr)
*** 6305,6311 ****
  }
  
  /* Get the PCS variant to use for this call.  TYPE is the function's type
!    specification, DECL is the specific declartion.  DECL may be null if
     the call could be indirect or if this is a library call.  */
  static enum arm_pcs
  arm_get_pcs_model (const_tree type, const_tree decl ATTRIBUTE_UNUSED)
--- 6305,6311 ----
  }
  
  /* Get the PCS variant to use for this call.  TYPE is the function's type
!    specification, DECL is the specific declaration.  DECL may be null if
     the call could be indirect or if this is a library call.  */
  static enum arm_pcs
  arm_get_pcs_model (const_tree type, const_tree decl ATTRIBUTE_UNUSED)
*************** aapcs_vfp_advance (CUMULATIVE_ARGS *pcum
*** 6895,6901 ****
    }
  
  /* Table of co-processors that can be used to pass arguments in
!    registers.  Idealy no arugment should be a candidate for more than
     one co-processor table entry, but the table is processed in order
     and stops after the first match.  If that entry then fails to put
     the argument into a co-processor register, the argument will go on
--- 6895,6901 ----
    }
  
  /* Table of co-processors that can be used to pass arguments in
!    registers.  Ideally no argument should be a candidate for more than
     one co-processor table entry, but the table is processed in order
     and stops after the first match.  If that entry then fails to put
     the argument into a co-processor register, the argument will go on
*************** aapcs_layout_arg (CUMULATIVE_ARGS *pcum,
*** 7158,7164 ****
    /* C6 - NCRN is set to 4.  */
    pcum->aapcs_next_ncrn = NUM_ARG_REGS;
  
!   /* C7,C8 - arugment goes on the stack.  We have nothing to do here.  */
    return;
  }
  
--- 7158,7164 ----
    /* C6 - NCRN is set to 4.  */
    pcum->aapcs_next_ncrn = NUM_ARG_REGS;
  
!   /* C7,C8 - argument goes on the stack.  We have nothing to do here.  */
    return;
  }
  
*************** arm_init_cumulative_args (CUMULATIVE_ARG
*** 7218,7224 ****
     Return 1 if double word alignment is required for argument passing.
     Return -1 if double word alignment used to be required for argument
     passing before PR77728 ABI fix, but is not required anymore.
!    Return 0 if double word alignment is not required and wasn't requried
     before either.  */
  static int
  arm_needs_doubleword_align (machine_mode mode, const_tree type)
--- 7218,7224 ----
     Return 1 if double word alignment is required for argument passing.
     Return -1 if double word alignment used to be required for argument
     passing before PR77728 ABI fix, but is not required anymore.
!    Return 0 if double word alignment is not required and wasn't required
     before either.  */
  static int
  arm_needs_doubleword_align (machine_mode mode, const_tree type)
*************** thumb1_rtx_costs (rtx x, enum rtx_code c
*** 9812,9829 ****
  
    switch (code)
      {
-     case ASHIFT:
-     case ASHIFTRT:
-     case LSHIFTRT:
-     case ROTATERT:
-       return (mode == SImode) ? COSTS_N_INSNS (1) : COSTS_N_INSNS (2);
- 
      case PLUS:
      case MINUS:
      case COMPARE:
!     case NEG:
      case NOT:
!       return COSTS_N_INSNS (1);
  
      case MULT:
        if (arm_arch6m && arm_m_profile_small_mul)
--- 9812,9950 ----
  
    switch (code)
      {
      case PLUS:
      case MINUS:
      case COMPARE:
!     case AND:
!     case XOR:
!     case IOR:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  total = COSTS_N_INSNS (1);
! 	  if (GET_CODE (XEXP (x, 0)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 0), 1), mode))
! 	    total += COSTS_N_INSNS (1);
! 	  if (GET_CODE (XEXP (x, 1)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 1), 1), mode))
! 	    total += COSTS_N_INSNS (1);
! 	  return total;
! 	case E_DImode:
! 	  total = COSTS_N_INSNS (2);
! 	  if (GET_CODE (XEXP (x, 0)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 0), 1), mode))
! 	    total += COSTS_N_INSNS (4);
! 	  if (GET_CODE (XEXP (x, 1)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 1), 1), mode))
! 	    total += COSTS_N_INSNS (4);
! 	  return total;
! 	case E_HImode:
! 	case E_QImode:
! 	  total = COSTS_N_INSNS (3);
! 	  if (GET_CODE (XEXP (x, 0)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 0), 1), mode))
! 	    total += COSTS_N_INSNS (3);
! 	  if (GET_CODE (XEXP (x, 1)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 1), 1), mode))
! 	    total += COSTS_N_INSNS (3);
! 	  return total;
! 	}
!       break;
! 
      case NOT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	  return COSTS_N_INSNS (2);
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (3);
! 	}
!       break;
! 
!     case NEG:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (3);
! 	}
!       break;
! 
!     case ASHIFT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	  if (CONST_INT_P (XEXP (x, 1))
! 	      && IN_RANGE (INTVAL (XEXP (x, 1)), 32, 63))
! 	    return COSTS_N_INSNS (2);
! 	  return COSTS_N_INSNS (4);
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (3);
! 	}
!       break;
! 
!     case ASHIFTRT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	  if (CONST_INT_P (XEXP (x, 1))
! 	      && IN_RANGE (INTVAL (XEXP (x, 1)), 32, 63))
! 	    return COSTS_N_INSNS (2);
! 	  return COSTS_N_INSNS (4);
! 	}
!       break;
! 
!     case LSHIFTRT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	  if (CONST_INT_P (XEXP (x, 1))
! 	      && IN_RANGE (INTVAL (XEXP (x, 1)), 32, 63))
! 	    return COSTS_N_INSNS (2);
! 	  return COSTS_N_INSNS (4);
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (2);
! 	}
!       break;
! 
!     case ROTATERT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (2);
! 	case E_DImode:
! 	  if (CONST_INT_P (XEXP (x, 1))
! 	      && INTVAL (XEXP (x, 1)) == 32)
! 	    return COSTS_N_INSNS (2);
! 	  return COSTS_N_INSNS (6);
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (5);
! 	}
!       break;
  
      case MULT:
        if (arm_arch6m && arm_m_profile_small_mul)
*************** thumb1_rtx_costs (rtx x, enum rtx_code c
*** 9899,9910 ****
      case TRUNCATE:
        return 99;
  
-     case AND:
-     case XOR:
-     case IOR:
-       /* XXX guess.  */
-       return 8;
- 
      case MEM:
        /* XXX another guess.  */
        /* Memory costs quite a lot for the first word, but subsequent words
--- 10020,10025 ----
*************** thumb1_size_rtx_costs (rtx x, enum rtx_c
*** 9950,9976 ****
  
    switch (code)
      {
-     case ASHIFT:
-     case ASHIFTRT:
-     case LSHIFTRT:
-     case ROTATERT:
-       return (mode == SImode) ? COSTS_N_INSNS (1) : COSTS_N_INSNS (2);
- 
      case PLUS:
      case MINUS:
-       /* Thumb-1 needs two instructions to fulfill shiftadd/shiftsub0/shiftsub1
- 	 defined by RTL expansion, especially for the expansion of
- 	 multiplication.  */
-       if ((GET_CODE (XEXP (x, 0)) == MULT
- 	   && power_of_two_operand (XEXP (XEXP (x,0),1), SImode))
- 	  || (GET_CODE (XEXP (x, 1)) == MULT
- 	      && power_of_two_operand (XEXP (XEXP (x, 1), 1), SImode)))
- 	return COSTS_N_INSNS (2);
-       /* Fall through.  */
      case COMPARE:
!     case NEG:
      case NOT:
!       return COSTS_N_INSNS (1);
  
      case MULT:
        if (CONST_INT_P (XEXP (x, 1)))
--- 10065,10203 ----
  
    switch (code)
      {
      case PLUS:
      case MINUS:
      case COMPARE:
!     case AND:
!     case XOR:
!     case IOR:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  cost = COSTS_N_INSNS (1);
! 	  if (GET_CODE (XEXP (x, 0)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 0), 1), mode))
! 	    cost += COSTS_N_INSNS (1);
! 	  if (GET_CODE (XEXP (x, 1)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 1), 1), mode))
! 	    cost += COSTS_N_INSNS (1);
! 	  return cost;
! 	case E_DImode:
! 	  cost = COSTS_N_INSNS (2);
! 	  if (GET_CODE (XEXP (x, 0)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 0), 1), mode))
! 	    cost += COSTS_N_INSNS (4);
! 	  if (GET_CODE (XEXP (x, 1)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 1), 1), mode))
! 	    cost += COSTS_N_INSNS (4);
! 	  return cost;
! 	case E_HImode:
! 	case E_QImode:
! 	  cost = COSTS_N_INSNS (3);
! 	  if (GET_CODE (XEXP (x, 0)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 0), 1), mode))
! 	    cost += COSTS_N_INSNS (3);
! 	  if (GET_CODE (XEXP (x, 1)) == MULT
! 	      && power_of_two_operand (XEXP (XEXP (x, 1), 1), mode))
! 	    cost += COSTS_N_INSNS (3);
! 	  return cost;
! 	}
!       break;
! 
      case NOT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	  return COSTS_N_INSNS (2);
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (3);
! 	}
!       break;
! 
!     case NEG:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (3);
! 	}
!       break;
! 
!     case ASHIFT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	  if (CONST_INT_P (XEXP (x, 1))
! 	      && IN_RANGE (INTVAL (XEXP (x, 1)), 32, 63))
! 	    return COSTS_N_INSNS (2);
! 	  return COSTS_N_INSNS (4);
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (3);
! 	}
!       break;
! 
!     case ASHIFTRT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	  if (CONST_INT_P (XEXP (x, 1))
! 	      && IN_RANGE (INTVAL (XEXP (x, 1)), 32, 63))
! 	    return COSTS_N_INSNS (2);
! 	  return COSTS_N_INSNS (4);
! 	}
!       break;
! 
!     case LSHIFTRT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (1);
! 	case E_DImode:
! 	  if (CONST_INT_P (XEXP (x, 1))
! 	      && IN_RANGE (INTVAL (XEXP (x, 1)), 32, 63))
! 	    return COSTS_N_INSNS (2);
! 	  return COSTS_N_INSNS (4);
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (2);
! 	}
!       break;
! 
!     case ROTATERT:
!       switch (mode)
! 	{
! 	default:
! 	case E_SImode:
! 	  return COSTS_N_INSNS (2);
! 	case E_DImode:
! 	  if (CONST_INT_P (XEXP (x, 1))
! 	      && INTVAL (XEXP (x, 1)) == 32)
! 	    return COSTS_N_INSNS (2);
! 	  return COSTS_N_INSNS (6);
! 	case E_HImode:
! 	case E_QImode:
! 	  return COSTS_N_INSNS (5);
! 	}
!       break;
  
      case MULT:
        if (CONST_INT_P (XEXP (x, 1)))
*************** thumb1_size_rtx_costs (rtx x, enum rtx_c
*** 10058,10068 ****
      case TRUNCATE:
        return 99;
  
-     case AND:
-     case XOR:
-     case IOR:
-       return COSTS_N_INSNS (1);
- 
      case MEM:
        return (COSTS_N_INSNS (1)
  	      + COSTS_N_INSNS (1)
--- 10285,10290 ----
*************** arm_rtx_costs_internal (rtx x, enum rtx_
*** 10491,10497 ****
  	*cost = LIBCALL_COST (2);
  
        /* Make the cost of sdiv more expensive so when both sdiv and udiv are
! 	 possible udiv is prefered.  */
        *cost += (code == DIV ? COSTS_N_INSNS (1) : 0);
        return false;	/* All arguments must be in registers.  */
  
--- 10713,10719 ----
  	*cost = LIBCALL_COST (2);
  
        /* Make the cost of sdiv more expensive so when both sdiv and udiv are
! 	 possible udiv is preferred.  */
        *cost += (code == DIV ? COSTS_N_INSNS (1) : 0);
        return false;	/* All arguments must be in registers.  */
  
*************** arm_rtx_costs_internal (rtx x, enum rtx_
*** 10516,10522 ****
      /* Fall-through.  */
      case UMOD:
        /* Make the cost of sdiv more expensive so when both sdiv and udiv are
! 	 possible udiv is prefered.  */
        *cost = LIBCALL_COST (2) + (code == MOD ? COSTS_N_INSNS (1) : 0);
        return false;	/* All arguments must be in registers.  */
  
--- 10738,10744 ----
      /* Fall-through.  */
      case UMOD:
        /* Make the cost of sdiv more expensive so when both sdiv and udiv are
! 	 possible udiv is preferred.  */
        *cost = LIBCALL_COST (2) + (code == MOD ? COSTS_N_INSNS (1) : 0);
        return false;	/* All arguments must be in registers.  */
  
*************** mve_bool_vec_to_const (rtx const_vec)
*** 13394,13400 ****
  }
  
  /* Return a non-NULL RTX iff VALS, which is a PARALLEL containing only
!    constants (for vec_init) or CONST_VECTOR, can be effeciently loaded
     into a register.
  
     If this is the case, and GENERATE is set, we also generate code to do
--- 13616,13622 ----
  }
  
  /* Return a non-NULL RTX iff VALS, which is a PARALLEL containing only
!    constants (for vec_init) or CONST_VECTOR, can be efficiently loaded
     into a register.
  
     If this is the case, and GENERATE is set, we also generate code to do
*************** operands_ok_ldrd_strd (rtx rt, rtx rt2,
*** 17024,17030 ****
            || (t % 2 != 0)   /* First destination register is not even.  */
            || (t2 != t + 1)
            /* PC can be used as base register (for offset addressing only),
!              but it is depricated.  */
            || (n == PC_REGNUM)))
      return false;
  
--- 17246,17252 ----
            || (t % 2 != 0)   /* First destination register is not even.  */
            || (t2 != t + 1)
            /* PC can be used as base register (for offset addressing only),
!              but it is deprecated.  */
            || (n == PC_REGNUM)))
      return false;
  
*************** comp_not_to_clear_mask_str_un (tree arg_
*** 18609,18615 ****
        int max_bit = -1;
        uint32_t mask;
        uint32_t padding_bits_to_clear_res[NUM_ARG_REGS]
! 	= {-1, -1, -1, -1};
  
        /* To compute the padding bits in a union we only consider bits as
  	 padding bits if they are always either a padding bit or fall outside a
--- 18831,18837 ----
        int max_bit = -1;
        uint32_t mask;
        uint32_t padding_bits_to_clear_res[NUM_ARG_REGS]
! 	= {~0U, ~0U, ~0U, ~0U};
  
        /* To compute the padding bits in a union we only consider bits as
  	 padding bits if they are always either a padding bit or fall outside a
*************** emit_multi_reg_push (unsigned long mask,
*** 22379,22386 ****
  	     of dwarf code emitter and it doesn't consider reg-reg copies while
  	     updating the register list.  When PACBTI is enabled we manually
  	     updated the .save directive register list to use "ra_auth_code"
! 	     (pseduo register 143) instead of IP register as shown in following
! 	     pseduo code.
  	     Example:
  		pacbti  ip, lr, sp
  		.cfi_register 143, 12
--- 22601,22608 ----
  	     of dwarf code emitter and it doesn't consider reg-reg copies while
  	     updating the register list.  When PACBTI is enabled we manually
  	     updated the .save directive register list to use "ra_auth_code"
! 	     (pseudo register 143) instead of IP register as shown in following
! 	     pseudo code.
  	     Example:
  		pacbti  ip, lr, sp
  		.cfi_register 143, 12
*************** arm_emit_vfp_multi_reg_pop (int first_re
*** 22643,22649 ****
    par = emit_insn (par);
    REG_NOTES (par) = dwarf;
  
!   /* Make sure cfa doesn't leave with IP_REGNUM to allow unwinding fron FP.  */
    if (REGNO (base_reg) == IP_REGNUM)
      {
        RTX_FRAME_RELATED_P (par) = 1;
--- 22865,22871 ----
    par = emit_insn (par);
    REG_NOTES (par) = dwarf;
  
!   /* Make sure cfa doesn't leave with IP_REGNUM to allow unwinding from FP.  */
    if (REGNO (base_reg) == IP_REGNUM)
      {
        RTX_FRAME_RELATED_P (par) = 1;
*************** thumb2_emit_ldrd_pop (unsigned long save
*** 22798,22804 ****
  
  /* LDRD in ARM mode needs consecutive registers as operands.  This function
     emits LDRD whenever possible, otherwise it emits single-word loads. It uses
!    offset addressing and then generates one separate stack udpate. This provides
     more scheduling freedom, compared to writeback on every load.  However,
     if the function returns using load into PC directly
     (i.e., if PC is in SAVED_REGS_MASK), the stack needs to be updated
--- 23020,23026 ----
  
  /* LDRD in ARM mode needs consecutive registers as operands.  This function
     emits LDRD whenever possible, otherwise it emits single-word loads. It uses
!    offset addressing and then generates one separate stack update. This provides
     more scheduling freedom, compared to writeback on every load.  However,
     if the function returns using load into PC directly
     (i.e., if PC is in SAVED_REGS_MASK), the stack needs to be updated
*************** arm_print_condition (FILE *stream)
*** 24102,24108 ****
  
  
  /* Globally reserved letters: acln
!    Puncutation letters currently used: @_-|?().!#
     Lower case letters currently used: bcdefhimpqtvwxyz
     Upper case letters currently used: ABCDEFGHIJKLMOPQRSTUV
     Letters previously used, but now deprecated/obsolete: sNWXYZ.
--- 24324,24330 ----
  
  
  /* Globally reserved letters: acln
!    Punctuation letters currently used: @_-|?().!#
     Lower case letters currently used: bcdefhimpqtvwxyz
     Upper case letters currently used: ABCDEFGHIJKLMOPQRSTUV
     Letters previously used, but now deprecated/obsolete: sNWXYZ.
*************** get_arm_condition_code (rtx comparison)
*** 25317,25323 ****
  }
  
  /* Implement TARGET_FIXED_CONDITION_CODE_REGS.  We only have condition
!    code registers when not targetting Thumb1.  The VFP condition register
     only exists when generating hard-float code.  */
  static bool
  arm_fixed_condition_code_regs (unsigned int *p1, unsigned int *p2)
--- 25539,25545 ----
  }
  
  /* Implement TARGET_FIXED_CONDITION_CODE_REGS.  We only have condition
!    code registers when not targeting Thumb1.  The VFP condition register
     only exists when generating hard-float code.  */
  static bool
  arm_fixed_condition_code_regs (unsigned int *p1, unsigned int *p2)
*************** thumb_pop (FILE *f, unsigned long mask)
*** 26278,26284 ****
        if (TARGET_INTERWORK || TARGET_BACKTRACE || crtl->calls_eh_return
  	  || IS_CMSE_ENTRY (arm_current_func_type ()))
  	{
! 	  /* The PC is never poped directly, instead
  	     it is popped into r3 and then BX is used.  */
  	  fprintf (f, "}\n");
  
--- 26500,26506 ----
        if (TARGET_INTERWORK || TARGET_BACKTRACE || crtl->calls_eh_return
  	  || IS_CMSE_ENTRY (arm_current_func_type ()))
  	{
! 	  /* The PC is never popped directly, instead
  	     it is popped into r3 and then BX is used.  */
  	  fprintf (f, "}\n");
  
*************** arm_print_asm_arch_directives (FILE *str
*** 28614,28620 ****
  
    if (strcmp (build_target.arch_name, "armv7ve") == 0)
      {
!       /* Keep backward compatability for assemblers which don't support
  	 armv7ve.  Fortunately, none of the following extensions are reset
  	 by a .fpu directive.  */
        asm_fprintf (stream, "\t.arch armv7-a\n");
--- 28836,28842 ----
  
    if (strcmp (build_target.arch_name, "armv7ve") == 0)
      {
!       /* Keep backward compatibility for assemblers which don't support
  	 armv7ve.  Fortunately, none of the following extensions are reset
  	 by a .fpu directive.  */
        asm_fprintf (stream, "\t.arch armv7-a\n");
*************** arm_debugger_regno (unsigned int regno)
*** 29852,29858 ****
  }
  
  /* Dwarf models VFPv3 registers as 32 64-bit registers.
!    GCC models tham as 64 32-bit registers, so we need to describe this to
     the DWARF generation code.  Other registers can use the default.  */
  static rtx
  arm_dwarf_register_span (rtx rtl)
--- 30074,30080 ----
  }
  
  /* Dwarf models VFPv3 registers as 32 64-bit registers.
!    GCC models them as 64 32-bit registers, so we need to describe this to
     the DWARF generation code.  Other registers can use the default.  */
  static rtx
  arm_dwarf_register_span (rtx rtl)
*************** arm_target_bb_ok_for_lob (basic_block bb
*** 34428,34434 ****
  	  && single_succ_edge (bb)->dest == single_pred_edge (bb)->src);
  }
  
! /* Utility fuction: Given a VCTP or a VCTP_M insn, return the number of MVE
     lanes based on the machine mode being used.  */
  
  static int
--- 34650,34656 ----
  	  && single_succ_edge (bb)->dest == single_pred_edge (bb)->src);
  }
  
! /* Utility function: Given a VCTP or a VCTP_M insn, return the number of MVE
     lanes based on the machine mode being used.  */
  
  static int
*************** arm_mve_load_store_insn_p (rtx_insn* ins
*** 34614,34620 ****
     are used.
  
     If INSN is a MVE operation across lanes that is not predicated by
!    VCTP_VPR_GENERATED it can not be validated by the use of its ouputs.
  
     Any other INSN is safe to implicit predicate if we don't use its outputs
     outside the loop.  The instructions that use this INSN's outputs will be
--- 34836,34842 ----
     are used.
  
     If INSN is a MVE operation across lanes that is not predicated by
!    VCTP_VPR_GENERATED it can not be validated by the use of its outputs.
  
     Any other INSN is safe to implicit predicate if we don't use its outputs
     outside the loop.  The instructions that use this INSN's outputs will be
*************** arm_mve_check_reg_origin_is_num_elems (l
*** 34836,34844 ****
    if (DF_REG_DEF_COUNT (REGNO (reg)) > 2)
      return false;
  
!   /* Look for a single defition of REG going into the loop.  The DEF_CHAIN will
!      have at least two values, as this is a loop induction variable that is
!      defined outside the loop.  */
    for (df_ref def = DF_REG_DEF_CHAIN (REGNO (reg));
         def;
         def = DF_REF_NEXT_REG (def))
--- 35058,35066 ----
    if (DF_REG_DEF_COUNT (REGNO (reg)) > 2)
      return false;
  
!   /* Look for a single definition of REG going into the loop.  The DEF_CHAIN
!      will have at least two values, as this is a loop induction variable that
!      is defined outside the loop.  */
    for (df_ref def = DF_REG_DEF_CHAIN (REGNO (reg));
         def;
         def = DF_REF_NEXT_REG (def))
*************** arm_mve_dlstp_check_dec_counter (loop *l
*** 35130,35136 ****
      }
    /* If the decrements are the same, then the situation is simple: either they
       are also the same reg, which is safe, or they are different registers, in
!      which case makse sure that there is a only simple SET from one to the
       other inside the loop.*/
    else if (decrementnum == arm_mve_get_vctp_lanes (vctp_insn))
      {
--- 35352,35358 ----
      }
    /* If the decrements are the same, then the situation is simple: either they
       are also the same reg, which is safe, or they are different registers, in
!      which case make sure that there is a only simple SET from one to the
       other inside the loop.*/
    else if (decrementnum == arm_mve_get_vctp_lanes (vctp_insn))
      {
*************** arm_mve_loop_valid_for_dlstp (loop *loop
*** 35319,35325 ****
  
  /* Predict whether the given loop in gimple will be transformed in the RTL
     doloop_optimize pass.  It could be argued that turning large enough loops
!    into low-overhead loops would not show a signficant performance boost.
     However, in the case of tail predication we would still avoid using VPT/VPST
     instructions inside the loop, and in either case using low-overhead loops
     would not be detrimental, so we decided to not consider size, avoiding the
--- 35541,35547 ----
  
  /* Predict whether the given loop in gimple will be transformed in the RTL
     doloop_optimize pass.  It could be argued that turning large enough loops
!    into low-overhead loops would not show a significant performance boost.
     However, in the case of tail predication we would still avoid using VPT/VPST
     instructions inside the loop, and in either case using low-overhead loops
     would not be detrimental, so we decided to not consider size, avoiding the
*************** arm_loop_unroll_adjust (unsigned nunroll
*** 35390,35396 ****
      return nunroll;
  }
  
! /* Function to hadle emitting a VPT-unpredicated version of a VPT-predicated
     insn to a sequence.  */
  
  static bool
--- 35612,35618 ----
      return nunroll;
  }
  
! /* Function to handle emitting a VPT-unpredicated version of a VPT-predicated
     insn to a sequence.  */
  
  static bool
diff -Nrcpad gcc-17-20260531/gcc/config/arm/arm.h gcc-17-20260607/gcc/config/arm/arm.h
*** gcc-17-20260531/gcc/config/arm/arm.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/arm.h	Sun Jun  7 22:32:06 2026
*************** extern const int arm_arch_cde_coproc_bit
*** 893,899 ****
  /* Round X up to the nearest word.  */
  #define ROUND_UP_WORD(X) (((X) + 3) & ~3)
  
! /* Convert fron bytes to ints.  */
  #define ARM_NUM_INTS(X) (((X) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
  
  /* The number of (integer) registers required to hold a quantity of type MODE.
--- 893,899 ----
  /* Round X up to the nearest word.  */
  #define ROUND_UP_WORD(X) (((X) + 3) & ~3)
  
! /* Convert from bytes to ints.  */
  #define ARM_NUM_INTS(X) (((X) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
  
  /* The number of (integer) registers required to hold a quantity of type MODE.
diff -Nrcpad gcc-17-20260531/gcc/config/arm/arm.md gcc-17-20260607/gcc/config/arm/arm.md
*** gcc-17-20260531/gcc/config/arm/arm.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/arm.md	Sun Jun  7 22:32:06 2026
***************
*** 314,320 ****
  ;   that the instruction does not use or alter the condition codes.
  ;
  ; NOCOND means that the instruction does not use or alter the condition
! ;   codes but can be converted into a conditionally exectuted instruction.
  ;   Given that NOCOND is the default for most instructions if omitted,
  ;   the attribute predicable must be set to yes as well.
  
--- 314,320 ----
  ;   that the instruction does not use or alter the condition codes.
  ;
  ; NOCOND means that the instruction does not use or alter the condition
! ;   codes but can be converted into a conditionally executed instruction.
  ;   Given that NOCOND is the default for most instructions if omitted,
  ;   the attribute predicable must be set to yes as well.
  
***************
*** 1057,1063 ****
     (set_attr "type" "alus_imm")]
  )
  
! ;; We can handle more constants efficently if we can clobber either a scratch
  ;; or the other source operand.  We deliberately leave this late as in
  ;; high register pressure situations it's not worth forcing any reloads.
  (define_peephole2
--- 1057,1063 ----
     (set_attr "type" "alus_imm")]
  )
  
! ;; We can handle more constants efficiently if we can clobber either a scratch
  ;; or the other source operand.  We deliberately leave this late as in
  ;; high register pressure situations it's not worth forcing any reloads.
  (define_peephole2
***************
*** 11661,11667 ****
  )
  
  ;; Note - although unspec_volatile's USE all hard registers,
! ;; USEs are ignored after relaod has completed.  Thus we need
  ;; to add an unspec of the link register to ensure that flow
  ;; does not think that it is unused by the sibcall branch that
  ;; will replace the standard function epilogue.
--- 11661,11667 ----
  )
  
  ;; Note - although unspec_volatile's USE all hard registers,
! ;; USEs are ignored after reload has completed.  Thus we need
  ;; to add an unspec of the link register to ensure that flow
  ;; does not think that it is unused by the sibcall branch that
  ;; will replace the standard function epilogue.
***************
*** 11690,11696 ****
  	emit_move_insn (ra, operands[2]);
  	operands[2] = ra;
        }
!     /* This is a hack -- we may have crystalized the function type too
         early.  */
      cfun->machine->func_type = 0;
    }"
--- 11690,11696 ----
  	emit_move_insn (ra, operands[2]);
  	operands[2] = ra;
        }
!     /* This is a hack -- we may have crystallized the function type too
         early.  */
      cfun->machine->func_type = 0;
    }"
diff -Nrcpad gcc-17-20260531/gcc/config/arm/constraints.md gcc-17-20260607/gcc/config/arm/constraints.md
*** gcc-17-20260531/gcc/config/arm/constraints.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/constraints.md	Sun Jun  7 22:32:06 2026
***************
*** 133,139 ****
  	   (match_test "(ival & 0xfffff000) == 0"))))
  
  (define_constraint "PJ"
!  "@internal A constant that satisfies the Pj constrant if negated."
   (and (match_code "const_int")
        (and (match_test "TARGET_THUMB2")
  	   (match_test "((-ival) & 0xfffff000) == 0"))))
--- 133,139 ----
  	   (match_test "(ival & 0xfffff000) == 0"))))
  
  (define_constraint "PJ"
!  "@internal A constant that satisfies the Pj constraint if negated."
   (and (match_code "const_int")
        (and (match_test "TARGET_THUMB2")
  	   (match_test "((-ival) & 0xfffff000) == 0"))))
diff -Nrcpad gcc-17-20260531/gcc/config/arm/cortex-a17-neon.md gcc-17-20260607/gcc/config/arm/cortex-a17-neon.md
*** gcc-17-20260531/gcc/config/arm/cortex-a17-neon.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/cortex-a17-neon.md	Sun Jun  7 22:32:06 2026
***************
*** 403,409 ****
         (eq_attr "cortex_a17_neon_type" "neon_fp_recpe_rsqrte_q"))
    "(ca17_asimd0+ca17_perm0)*2|(ca17_asimd1+ca17_perm1)*2")
  
! ;; Miscelaneous Instructions.
  
  (define_insn_reservation
    "cortex_a17_neon_bitops" 4
--- 403,409 ----
         (eq_attr "cortex_a17_neon_type" "neon_fp_recpe_rsqrte_q"))
    "(ca17_asimd0+ca17_perm0)*2|(ca17_asimd1+ca17_perm1)*2")
  
! ;; Miscellaneous Instructions.
  
  (define_insn_reservation
    "cortex_a17_neon_bitops" 4
diff -Nrcpad gcc-17-20260531/gcc/config/arm/cortex-r4f.md gcc-17-20260607/gcc/config/arm/cortex-r4f.md
*** gcc-17-20260531/gcc/config/arm/cortex-r4f.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/cortex-r4f.md	Sun Jun  7 22:32:06 2026
***************
*** 23,29 ****
  ;; registers are early registers.  Thus base latencies are 1 more than
  ;; those listed in the TRM.
  
! ;; We use the A, B abd C units from the integer core, plus two additional
  ;; units to enforce VFP dual issue constraints.
  
  ;;		  A B C	    V1	VMLA
--- 23,29 ----
  ;; registers are early registers.  Thus base latencies are 1 more than
  ;; those listed in the TRM.
  
! ;; We use the A, B and C units from the integer core, plus two additional
  ;; units to enforce VFP dual issue constraints.
  
  ;;		  A B C	    V1	VMLA
diff -Nrcpad gcc-17-20260531/gcc/config/arm/crypto.md gcc-17-20260607/gcc/config/arm/crypto.md
*** gcc-17-20260531/gcc/config/arm/crypto.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/crypto.md	Sun Jun  7 22:32:06 2026
***************
*** 130,136 ****
  
  ;; When AESE/AESMC fusion is enabled we really want to keep the two together
  ;; and enforce the register dependency without scheduling or register
! ;; allocation messing up the order or introducing moves inbetween.
  ;; Mash the two together during combine.
  
  (define_insn "*aarch32_crypto_aese_fused"
--- 130,136 ----
  
  ;; When AESE/AESMC fusion is enabled we really want to keep the two together
  ;; and enforce the register dependency without scheduling or register
! ;; allocation messing up the order or introducing moves in between.
  ;; Mash the two together during combine.
  
  (define_insn "*aarch32_crypto_aese_fused"
***************
*** 169,175 ****
  
  ;; When AESD/AESIMC fusion is enabled we really want to keep the two together
  ;; and enforce the register dependency without scheduling or register
! ;; allocation messing up the order or introducing moves inbetween.
  ;; Mash the two together during combine.
  
  (define_insn "*aarch32_crypto_aesd_fused"
--- 169,175 ----
  
  ;; When AESD/AESIMC fusion is enabled we really want to keep the two together
  ;; and enforce the register dependency without scheduling or register
! ;; allocation messing up the order or introducing moves in between.
  ;; Mash the two together during combine.
  
  (define_insn "*aarch32_crypto_aesd_fused"
diff -Nrcpad gcc-17-20260531/gcc/config/arm/elf.h gcc-17-20260607/gcc/config/arm/elf.h
*** gcc-17-20260531/gcc/config/arm/elf.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/elf.h	Sun Jun  7 22:32:06 2026
***************
*** 93,99 ****
     Otherwise, the readonly data section is used.  */
  /* The choice of placement for jump tables is nuanced.  For cores with
     Harvard caches (pretty much all cases these days), there is a
!    benefit of maintaing a separation between I- and D-cache candidates
     and that favors having jump tables in the RO data section.  This
     makes the dispatch sequence slightly longer as we need to load the
     address of the jump table first, but we often save elsewhere as the
--- 93,99 ----
     Otherwise, the readonly data section is used.  */
  /* The choice of placement for jump tables is nuanced.  For cores with
     Harvard caches (pretty much all cases these days), there is a
!    benefit of maintaining a separation between I- and D-cache candidates
     and that favors having jump tables in the RO data section.  This
     makes the dispatch sequence slightly longer as we need to load the
     address of the jump table first, but we often save elsewhere as the
diff -Nrcpad gcc-17-20260531/gcc/config/arm/fa726te.md gcc-17-20260607/gcc/config/arm/fa726te.md
*** gcc-17-20260531/gcc/config/arm/fa726te.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/fa726te.md	Sun Jun  7 22:32:06 2026
***************
*** 140,146 ****
  ;; Here we model the resource conflict between Load@E3-stage & Store@W-stage.
  ;; The 2nd LSU (lsu1) is to model the fact that if 2 loads are scheduled in the
  ;; same "bundle", and the 2nd load will introudce another ISSUE stall but is
! ;; still ok to execute (and may be benefical sometimes).
  
  (define_insn_reservation "726te_load1_op" 3
   (and (eq_attr "tune" "fa726te")
--- 140,146 ----
  ;; Here we model the resource conflict between Load@E3-stage & Store@W-stage.
  ;; The 2nd LSU (lsu1) is to model the fact that if 2 loads are scheduled in the
  ;; same "bundle", and the 2nd load will introudce another ISSUE stall but is
! ;; still ok to execute (and may be beneficial sometimes).
  
  (define_insn_reservation "726te_load1_op" 3
   (and (eq_attr "tune" "fa726te")
diff -Nrcpad gcc-17-20260531/gcc/config/arm/iterators.md gcc-17-20260607/gcc/config/arm/iterators.md
*** gcc-17-20260531/gcc/config/arm/iterators.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/iterators.md	Sun Jun  7 22:32:06 2026
***************
*** 2110,2116 ****
  (define_code_attr shift [(ashiftrt "ashr") (lshiftrt "lshr")])
  (define_code_attr shifttype [(ashiftrt "signed") (lshiftrt "unsigned")])
  
! ;; String reprentations of operations on the sign of a number.
  (define_code_attr absneg_str [(abs "abs") (neg "neg")])
  
  ;; Conversions.
--- 2110,2116 ----
  (define_code_attr shift [(ashiftrt "ashr") (lshiftrt "lshr")])
  (define_code_attr shifttype [(ashiftrt "signed") (lshiftrt "unsigned")])
  
! ;; String representations of operations on the sign of a number.
  (define_code_attr absneg_str [(abs "abs") (neg "neg")])
  
  ;; Conversions.
***************
*** 2268,2274 ****
                                 (UNSPEC_VRINTA "a") (UNSPEC_VRINTM "m")
                                 (UNSPEC_VRINTR "r") (UNSPEC_VRINTX "x")])
  
! ;; Some of the vrint instuctions are predicable.
  (define_int_attr vrint_predicable [(UNSPEC_VRINTZ "yes") (UNSPEC_VRINTP "no")
                                    (UNSPEC_VRINTA "no") (UNSPEC_VRINTM "no")
                                    (UNSPEC_VRINTR "yes") (UNSPEC_VRINTX "yes")])
--- 2268,2274 ----
                                 (UNSPEC_VRINTA "a") (UNSPEC_VRINTM "m")
                                 (UNSPEC_VRINTR "r") (UNSPEC_VRINTX "x")])
  
! ;; Some of the vrint instructions are predicable.
  (define_int_attr vrint_predicable [(UNSPEC_VRINTZ "yes") (UNSPEC_VRINTP "no")
                                    (UNSPEC_VRINTA "no") (UNSPEC_VRINTM "no")
                                    (UNSPEC_VRINTR "yes") (UNSPEC_VRINTX "yes")])
diff -Nrcpad gcc-17-20260531/gcc/config/arm/neon.md gcc-17-20260607/gcc/config/arm/neon.md
*** gcc-17-20260531/gcc/config/arm/neon.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/neon.md	Sun Jun  7 22:32:06 2026
***************
*** 964,970 ****
  ;; 64-bit shifts
  
  ;; This pattern loads a 32-bit shift count into a 64-bit NEON register,
! ;; leaving the upper half uninitalized.  This is OK since the shift
  ;; instruction only looks at the low 8 bits anyway.  To avoid confusing
  ;; data flow analysis however, we pretend the full register is set
  ;; using an unspec.
--- 964,970 ----
  ;; 64-bit shifts
  
  ;; This pattern loads a 32-bit shift count into a 64-bit NEON register,
! ;; leaving the upper half uninitialized.  This is OK since the shift
  ;; instruction only looks at the low 8 bits anyway.  To avoid confusing
  ;; data flow analysis however, we pretend the full register is set
  ;; using an unspec.
diff -Nrcpad gcc-17-20260531/gcc/config/arm/thumb1.md gcc-17-20260607/gcc/config/arm/thumb1.md
*** gcc-17-20260531/gcc/config/arm/thumb1.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/thumb1.md	Sun Jun  7 22:32:06 2026
***************
*** 35,41 ****
  ;; or clobbering the flags.  Instead, they have the attribute "conds"
  ;; with value "set" or "clob".  However, this attribute is not used to
  ;; identify dependencies and therefore the scheduler might reorder
! ;; these instruction.  Currenly, this problem cannot happen because
  ;; there are no separate Thumb1 patterns for individual instruction
  ;; that consume flags (except conditional execution, which is treated
  ;; differently).  In particular there is no Thumb1 armv6-m pattern for
--- 35,41 ----
  ;; or clobbering the flags.  Instead, they have the attribute "conds"
  ;; with value "set" or "clob".  However, this attribute is not used to
  ;; identify dependencies and therefore the scheduler might reorder
! ;; these instruction.  Currently, this problem cannot happen because
  ;; there are no separate Thumb1 patterns for individual instruction
  ;; that consume flags (except conditional execution, which is treated
  ;; differently).  In particular there is no Thumb1 armv6-m pattern for
***************
*** 1070,1076 ****
  
  
  ;; A pattern to recognize a special situation and optimize for it.
! ;; On the thumb, zero-extension from memory is preferrable to sign-extension
  ;; due to the available addressing modes.  Hence, convert a signed comparison
  ;; with zero into an unsigned comparison with 127 if possible.
  (define_expand "cbranchqi4"
--- 1070,1076 ----
  
  
  ;; A pattern to recognize a special situation and optimize for it.
! ;; On the thumb, zero-extension from memory is preferable to sign-extension
  ;; due to the available addressing modes.  Hence, convert a signed comparison
  ;; with zero into an unsigned comparison with 127 if possible.
  (define_expand "cbranchqi4"
diff -Nrcpad gcc-17-20260531/gcc/config/arm/uclinuxfdpiceabi.h gcc-17-20260607/gcc/config/arm/uclinuxfdpiceabi.h
*** gcc-17-20260531/gcc/config/arm/uclinuxfdpiceabi.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/uclinuxfdpiceabi.h	Sun Jun  7 22:32:06 2026
***************
*** 40,46 ****
     force -pie.  */
  /* -static is not supported, because we have to define the
     dynamic-linker, as we have some relocations to resolve at load
!    time. We do not generate an error in case the user explictly passes
     the -dynamic-linker option to the linker.  */
  #undef  SUBTARGET_EXTRA_LINK_SPEC
  #define SUBTARGET_EXTRA_LINK_SPEC			    \
--- 40,46 ----
     force -pie.  */
  /* -static is not supported, because we have to define the
     dynamic-linker, as we have some relocations to resolve at load
!    time. We do not generate an error in case the user explicitly passes
     the -dynamic-linker option to the linker.  */
  #undef  SUBTARGET_EXTRA_LINK_SPEC
  #define SUBTARGET_EXTRA_LINK_SPEC			    \
diff -Nrcpad gcc-17-20260531/gcc/config/arm/unspecs.md gcc-17-20260607/gcc/config/arm/unspecs.md
*** gcc-17-20260531/gcc/config/arm/unspecs.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/unspecs.md	Sun Jun  7 22:32:06 2026
***************
*** 1,4 ****
! ;; Unspec defintions.
  ;; Copyright (C) 2012-2026 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
--- 1,4 ----
! ;; Unspec definitions.
  ;; Copyright (C) 2012-2026 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
diff -Nrcpad gcc-17-20260531/gcc/config/arm/vec-common.md gcc-17-20260607/gcc/config/arm/vec-common.md
*** gcc-17-20260531/gcc/config/arm/vec-common.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/vec-common.md	Sun Jun  7 22:32:06 2026
***************
*** 134,140 ****
  
  ;; Vector forms for the IEEE-754 fmax()/fmin() functions
  ;; Fixme: Should be enabled for MVE as well, but currently that uses an
! ;; incompatible expasion.
  (define_expand "<fmaxmin><mode>3"
    [(set (match_operand:VF 0 "s_register_operand" "")
  	(unspec:VF [(match_operand:VF 1 "s_register_operand")
--- 134,140 ----
  
  ;; Vector forms for the IEEE-754 fmax()/fmin() functions
  ;; Fixme: Should be enabled for MVE as well, but currently that uses an
! ;; incompatible expansion.
  (define_expand "<fmaxmin><mode>3"
    [(set (match_operand:VF 0 "s_register_operand" "")
  	(unspec:VF [(match_operand:VF 1 "s_register_operand")
diff -Nrcpad gcc-17-20260531/gcc/config/arm/vxworks.h gcc-17-20260607/gcc/config/arm/vxworks.h
*** gcc-17-20260531/gcc/config/arm/vxworks.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/arm/vxworks.h	Sun Jun  7 22:32:06 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 143,149 ****
     8K is reserved in the stack to propagate exceptions in case of overflow.  */
  #define STACK_CHECK_PROTECT 8192
  
! /* Unless overridded by the target options, the default is little-endian.  */
  #define TARGET_ENDIAN_DEFAULT 0
  
  /* The VxWorks environment on ARM is llvm based and we need to link
--- 143,149 ----
     8K is reserved in the stack to propagate exceptions in case of overflow.  */
  #define STACK_CHECK_PROTECT 8192
  
! /* Unless overridden by the target options, the default is little-endian.  */
  #define TARGET_ENDIAN_DEFAULT 0
  
  /* The VxWorks environment on ARM is llvm based and we need to link
diff -Nrcpad gcc-17-20260531/gcc/config/avr/avr-passes.cc gcc-17-20260607/gcc/config/avr/avr-passes.cc
*** gcc-17-20260531/gcc/config/avr/avr-passes.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/avr/avr-passes.cc	Sun Jun  7 22:32:06 2026
*************** static machine_mode size_to_mode (int si
*** 403,409 ****
     Each insn is optimized on its own, or may be fused with the
     previous insn like in example (1).
        As the insns are traversed, memento_t keeps track of known values
!    held in the GPRs (general purpse registers) R2 ... R31 by simulating
     the effect of the current insn in memento_t.apply_insn().
        The basic blocks are traversed in reverse post order so as to
     maximize the chance that GPRs from all preceding blocks are known,
--- 403,409 ----
     Each insn is optimized on its own, or may be fused with the
     previous insn like in example (1).
        As the insns are traversed, memento_t keeps track of known values
!    held in the GPRs (general purpose registers) R2 ... R31 by simulating
     the effect of the current insn in memento_t.apply_insn().
        The basic blocks are traversed in reverse post order so as to
     maximize the chance that GPRs from all preceding blocks are known,
*************** struct absint_t;
*** 480,486 ****
  // A ply_t is a potential step towards an optimal sequence to load a constant
  // value into a multi-byte register.  A ply_t loosely relates to one AVR
  // instruction, but it may also represent a sequence of instructions.
! // For example, loading a constant into a lower register when no sratch reg
  // is available may take up to 4 instructions.  There is no 1:1 correspondence
  // to insns, either.
  //    try_split_ldi determines the best sequence of ply_t's by means of a
--- 480,486 ----
  // A ply_t is a potential step towards an optimal sequence to load a constant
  // value into a multi-byte register.  A ply_t loosely relates to one AVR
  // instruction, but it may also represent a sequence of instructions.
! // For example, loading a constant into a lower register when no scratch reg
  // is available may take up to 4 instructions.  There is no 1:1 correspondence
  // to insns, either.
  //    try_split_ldi determines the best sequence of ply_t's by means of a
*************** plies_t::emit_sets (const insninfo_t &ii
*** 1578,1584 ****
  
  
  // Try to find an operation such that  Y = op (X).
! // Shifts and rotates are regarded as unary operaions with
  // an implied 2nd operand or 1 or 4, respectively.
  static rtx_code
  find_arith (uint8_t y, uint8_t x)
--- 1578,1584 ----
  
  
  // Try to find an operation such that  Y = op (X).
! // Shifts and rotates are regarded as unary operations with
  // an implied 2nd operand or 1 or 4, respectively.
  static rtx_code
  find_arith (uint8_t y, uint8_t x)
*************** avr_strict_unsigned_p (rtx_code code)
*** 3364,3370 ****
  
    then set CMP1 = cond1, CMP2 = cond2, and return xval.  Else return NULL_RTX.
    When SWAPT is returned true, then way1 and way2 must be swapped.
!   When the incomping SWAPT is false, the outgoing one will be false, too.  */
  
  static rtx
  avr_2comparisons_rhs (rtx_code &cmp1, rtx xval1,
--- 3364,3370 ----
  
    then set CMP1 = cond1, CMP2 = cond2, and return xval.  Else return NULL_RTX.
    When SWAPT is returned true, then way1 and way2 must be swapped.
!   When the incoming SWAPT is false, the outgoing one will be false, too.  */
  
  static rtx
  avr_2comparisons_rhs (rtx_code &cmp1, rtx xval1,
*************** avr_redundant_compare (rtx xreg1, rtx_co
*** 3600,3606 ****
        if (REG_CC <cmp2> 0) goto label2;
  
     then set XREG1 to reg, COND1 and COND2 accordingly, and return xval.
!    Otherwise, return NULL_RTX.  This optmization can be performed
     when { xreg1, xval1 } and { xreg2, xval2 } are equal as sets.
     It can be done in such a way that no difficult branches occur.  */
  
--- 3600,3606 ----
        if (REG_CC <cmp2> 0) goto label2;
  
     then set XREG1 to reg, COND1 and COND2 accordingly, and return xval.
!    Otherwise, return NULL_RTX.  This optimization can be performed
     when { xreg1, xval1 } and { xreg2, xval2 } are equal as sets.
     It can be done in such a way that no difficult branches occur.  */
  
*************** avr_optimize_casesi (rtx_insn *insns[5],
*** 4063,4069 ****
    // SIGN_EXTEND or ZERO_EXTEND.
    rtx_code code = GET_CODE (xop[10]);
  
!   // Lower index, upper index (plus one) and range of case calues.
    HOST_WIDE_INT low_idx = -INTVAL (xop[1]);
    HOST_WIDE_INT num_idx = INTVAL (xop[2]);
    HOST_WIDE_INT hig_idx = low_idx + num_idx;
--- 4063,4069 ----
    // SIGN_EXTEND or ZERO_EXTEND.
    rtx_code code = GET_CODE (xop[10]);
  
!   // Lower index, upper index (plus one) and range of case values.
    HOST_WIDE_INT low_idx = -INTVAL (xop[1]);
    HOST_WIDE_INT num_idx = INTVAL (xop[2]);
    HOST_WIDE_INT hig_idx = low_idx + num_idx;
*************** struct AVR_LdSt_Props
*** 4358,4364 ****
  {
    bool has_postinc, has_predec, has_ldd;
    // The insn printers will use POST_INC or PRE_DEC addressing, no matter
!   // what adressing modes we are feeding into them.
    bool want_postinc, want_predec;
  
    AVR_LdSt_Props (int regno, bool store_p, bool volatile_p, addr_space_t as)
--- 4358,4364 ----
  {
    bool has_postinc, has_predec, has_ldd;
    // The insn printers will use POST_INC or PRE_DEC addressing, no matter
!   // what addressing modes we are feeding into them.
    bool want_postinc, want_predec;
  
    AVR_LdSt_Props (int regno, bool store_p, bool volatile_p, addr_space_t as)
*************** avr_pass_split_nzb::split_nzb_insns ()
*** 5038,5044 ****
  
  
  //////////////////////////////////////////////////////////////////////////////
! // Split shift insns after peephole2 / befor avr-fuse-move.
  
  static const pass_data avr_pass_data_split_after_peephole2 =
  {
--- 5038,5044 ----
  
  
  //////////////////////////////////////////////////////////////////////////////
! // Split shift insns after peephole2 / before avr-fuse-move.
  
  static const pass_data avr_pass_data_split_after_peephole2 =
  {
*************** make_avr_pass_fuse_move (gcc::context *c
*** 5889,5895 ****
    return new avr_pass_fuse_move (ctxt, "avr-fuse-move");
  }
  
! // Split insns after peephole2 / befor avr-fuse-move.
  
  rtl_opt_pass *
  make_avr_pass_split_after_peephole2 (gcc::context *ctxt)
--- 5889,5895 ----
    return new avr_pass_fuse_move (ctxt, "avr-fuse-move");
  }
  
! // Split insns after peephole2 / before avr-fuse-move.
  
  rtl_opt_pass *
  make_avr_pass_split_after_peephole2 (gcc::context *ctxt)
diff -Nrcpad gcc-17-20260531/gcc/config/avr/avr.cc gcc-17-20260607/gcc/config/avr/avr.cc
*** gcc-17-20260531/gcc/config/avr/avr.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/avr/avr.cc	Sun Jun  7 22:32:06 2026
*************** avr_option_override (void)
*** 596,602 ****
    if (!avr_set_core_architecture ())
      return;
  
!   /* Sould be set by avr-common.cc */
    gcc_assert (avropt_long_double >= avropt_double && avropt_double >= 32);
  
    /* RAM addresses of some SFRs common to all devices in respective arch. */
--- 596,602 ----
    if (!avr_set_core_architecture ())
      return;
  
!   /* Should be set by avr-common.cc */
    gcc_assert (avropt_long_double >= avropt_double && avropt_double >= 32);
  
    /* RAM addresses of some SFRs common to all devices in respective arch. */
*************** avr_can_inline_p (tree /* caller */, tre
*** 981,987 ****
  
  
  /* Implement `TARGET_SET_CURRENT_FUNCTION'.  */
! /* Sanity cheching for above function attributes.  */
  
  static void
  avr_set_current_function (tree decl)
--- 981,987 ----
  
  
  /* Implement `TARGET_SET_CURRENT_FUNCTION'.  */
! /* Sanity checking for above function attributes.  */
  
  static void
  avr_set_current_function (tree decl)
*************** avr_expand_epilogue (bool sibcall_p)
*** 2172,2178 ****
    if (isr_p)
      {
        /* Restore RAMPZ/Y/X/D using tmp_reg as scratch.
! 	 The conditions to restore them must be tha same as in prologue.  */
  
        if (AVR_HAVE_RAMPZ
  	  && TEST_HARD_REG_BIT (set, REG_Z)
--- 2172,2178 ----
    if (isr_p)
      {
        /* Restore RAMPZ/Y/X/D using tmp_reg as scratch.
! 	 The conditions to restore them must be the same as in prologue.  */
  
        if (AVR_HAVE_RAMPZ
  	  && TEST_HARD_REG_BIT (set, REG_Z)
*************** avr_init_cumulative_args (CUMULATIVE_ARG
*** 3110,3116 ****
    if (!libname && stdarg_p (fntype))
      cum->nregs = 0;
  
!   /* Assume the calle may be tail called */
  
    cfun->machine->sibcall_fails = false;
  }
--- 3110,3116 ----
    if (!libname && stdarg_p (fntype))
      cum->nregs = 0;
  
!   /* Assume the callee may be tail called */
  
    cfun->machine->sibcall_fails = false;
  }
*************** reg_unused_after (rtx_insn *insn, rtx re
*** 3495,3501 ****
  
  /* Return true when REGNO is set by INSN but not used by the following code.
     The difference to reg_unused_after() is that reg_unused_after() returns
!    true for the entire result even when the result *IS* being used atfer.  */
  
  static bool
  avr_result_regno_unused_p (rtx_insn *insn, unsigned regno)
--- 3495,3501 ----
  
  /* Return true when REGNO is set by INSN but not used by the following code.
     The difference to reg_unused_after() is that reg_unused_after() returns
!    true for the entire result even when the result *IS* being used after.  */
  
  static bool
  avr_result_regno_unused_p (rtx_insn *insn, unsigned regno)
*************** avr_out_lpm_no_lpmx (rtx_insn *insn, rtx
*** 3695,3701 ****
  }
  
  
! /* If PLEN == NULL: Ouput instructions to load a value from a memory location
     OP[1] in AS1 to register OP[0].
     If PLEN != 0 set *PLEN to the length in words of the instruction sequence.
     Return "".  */
--- 3695,3701 ----
  }
  
  
! /* If PLEN == NULL: Output instructions to load a value from a memory location
     OP[1] in AS1 to register OP[0].
     If PLEN != 0 set *PLEN to the length in words of the instruction sequence.
     Return "".  */
*************** avr_out_compare (rtx_insn *insn, rtx *xo
*** 6584,6590 ****
    const rtx_code cond = compare_condition (insn);
    const bool eqne_p = cond == EQ || cond == NE;
  
!   /* Comparisons == +/-1 and != +/-1 can be done similar to camparing
       against 0 by ORing the bytes.  This is one instruction shorter.
       Notice that 64-bit comparisons are always against reg:ALL8 18 (ACC_A)
       and therefore don't use this.  */
--- 6584,6590 ----
    const rtx_code cond = compare_condition (insn);
    const bool eqne_p = cond == EQ || cond == NE;
  
!   /* Comparisons == +/-1 and != +/-1 can be done similar to comparing
       against 0 by ORing the bytes.  This is one instruction shorter.
       Notice that 64-bit comparisons are always against reg:ALL8 18 (ACC_A)
       and therefore don't use this.  */
*************** avr_out_plus_ext (rtx_insn *insn, rtx *y
*** 8670,8676 ****
      ? "sbci %0,0"            CR_TAB  "sbrc %1,7"  CR_TAB  "inc %0"
      : "sbc %0,__zero_reg__"  CR_TAB  "sbrc %1,7"  CR_TAB  "inc %0";
  
!   // A register that containts 8 copies of $1.msb.
    rtx ext_reg = ext == ZERO_EXTEND ? zero_reg_rtx : NULL_RTX;
  
    if (plen)
--- 8670,8676 ----
      ? "sbci %0,0"            CR_TAB  "sbrc %1,7"  CR_TAB  "inc %0"
      : "sbc %0,__zero_reg__"  CR_TAB  "sbrc %1,7"  CR_TAB  "inc %0";
  
!   // A register that contains 8 copies of $1.msb.
    rtx ext_reg = ext == ZERO_EXTEND ? zero_reg_rtx : NULL_RTX;
  
    if (plen)
*************** avr_out_fract (rtx_insn *insn, rtx opera
*** 10691,10697 ****
  	    {
  	      /* We are going to override the MSB.  If we shift right,
  		 store the MSB in the Carry flag.  This is only needed if
! 		 we don't sign-extend becaue with sign-extension the MSB
  		 (the sign) will be produced by the sign extension.  */
  
  	      avr_asm_len ("lsr %0", &all_regs_rtx[src_msb], plen, 1);
--- 10691,10697 ----
  	    {
  	      /* We are going to override the MSB.  If we shift right,
  		 store the MSB in the Carry flag.  This is only needed if
! 		 we don't sign-extend because with sign-extension the MSB
  		 (the sign) will be produced by the sign extension.  */
  
  	      avr_asm_len ("lsr %0", &all_regs_rtx[src_msb], plen, 1);
*************** avr_nonzero_bits_lsr_operands_p (rtx_cod
*** 15601,15607 ****
     XOP[2]  # Bytes to copy
  
     Return TRUE  if the expansion is accomplished.
!    Return FALSE if the operand compination is not supported.  */
  
  bool
  avr_emit_cpymemhi (rtx *xop)
--- 15601,15607 ----
     XOP[2]  # Bytes to copy
  
     Return TRUE  if the expansion is accomplished.
!    Return FALSE if the operand combination is not supported.  */
  
  bool
  avr_emit_cpymemhi (rtx *xop)
diff -Nrcpad gcc-17-20260531/gcc/config/avr/avr.h gcc-17-20260607/gcc/config/avr/avr.h
*** gcc-17-20260531/gcc/config/avr/avr.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/avr/avr.h	Sun Jun  7 22:32:06 2026
*************** extern const char *avr_no_devlib (int, c
*** 499,505 ****
    { "no-devlib", avr_no_devlib },                       \
    { "device-specs-file", avr_devicespecs_file },
  
! /* Driver self specs has lmited functionality w.r.t. '%s' for dynamic specs.
     Apply '%s' to a static string to inflate the file (directory) name which
     is used to diagnose problems with reading the specs file.  */
  
--- 499,505 ----
    { "no-devlib", avr_no_devlib },                       \
    { "device-specs-file", avr_devicespecs_file },
  
! /* Driver self specs has limited functionality w.r.t. '%s' for dynamic specs.
     Apply '%s' to a static string to inflate the file (directory) name which
     is used to diagnose problems with reading the specs file.  */
  
*************** struct GTY(()) machine_function
*** 586,592 ****
      bool yes;
      /* 'true' if this function is allowed to use "*gasisr" insns. */
      bool maybe;
!     /* The register numer as printed by the Done chunk.  */
      int regno;
    } gasisr;
  
--- 586,592 ----
      bool yes;
      /* 'true' if this function is allowed to use "*gasisr" insns. */
      bool maybe;
!     /* The register number as printed by the Done chunk.  */
      int regno;
    } gasisr;
  
diff -Nrcpad gcc-17-20260531/gcc/config/avr/avr.md gcc-17-20260607/gcc/config/avr/avr.md
*** gcc-17-20260531/gcc/config/avr/avr.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/avr/avr.md	Sun Jun  7 22:32:06 2026
***************
*** 193,200 ****
  
  ;; The following ISA attributes are actually not architecture specific,
  ;; but depend on (optimization) options.  This is because the "enabled"
! ;; attribut can't depend on more than one other attribute.  This means
! ;; that 3op must work for all ISAs, and hence a 'flat' attribue scheme
  ;; can be used (as opposed to a true cartesian product).
  
  ;; 3op  : alternative is a 3-operand insn
--- 193,200 ----
  
  ;; The following ISA attributes are actually not architecture specific,
  ;; but depend on (optimization) options.  This is because the "enabled"
! ;; attribute can't depend on more than one other attribute.  This means
! ;; that 3op must work for all ISAs, and hence a 'flat' attribute scheme
  ;; can be used (as opposed to a true cartesian product).
  
  ;; 3op  : alternative is a 3-operand insn
***************
*** 397,403 ****
  ;; The following is used by nonlocal_goto and setjmp.
  ;; The receiver pattern will create no instructions since internally
  ;; virtual_stack_vars = hard_frame_pointer + 1 so the RTL become R28=R28
! ;; This avoids creating add/sub offsets in frame_pointer save/resore.
  ;; The 'null' receiver also avoids  problems with optimisation
  ;; not recognising incoming jmp and removing code that resets frame_pointer.
  ;; The code derived from builtins.cc.
--- 397,403 ----
  ;; The following is used by nonlocal_goto and setjmp.
  ;; The receiver pattern will create no instructions since internally
  ;; virtual_stack_vars = hard_frame_pointer + 1 so the RTL become R28=R28
! ;; This avoids creating add/sub offsets in frame_pointer save/restore.
  ;; The 'null' receiver also avoids  problems with optimisation
  ;; not recognising incoming jmp and removing code that resets frame_pointer.
  ;; The code derived from builtins.cc.
***************
*** 6775,6781 ****
  ;; without a comparison does not require a scratch.  With the peep2 approach
  ;; below, we can get a scratch from the peep2 framework without increasing
  ;; the register pressure, whereas cmpelim doesn't offer such a feature.
! ;;    When no scratch is available, then we just don't perform the optimizaton,
  ;; i.e. the comparison against 0 won't be optimized away, which is preferred
  ;; over increasing the register pressure -- in many cases without reason --
  ;; which might result in additional spills.
--- 6775,6781 ----
  ;; without a comparison does not require a scratch.  With the peep2 approach
  ;; below, we can get a scratch from the peep2 framework without increasing
  ;; the register pressure, whereas cmpelim doesn't offer such a feature.
! ;;    When no scratch is available, then we just don't perform the optimization,
  ;; i.e. the comparison against 0 won't be optimized away, which is preferred
  ;; over increasing the register pressure -- in many cases without reason --
  ;; which might result in additional spills.
***************
*** 8090,8096 ****
  ;;     AND   Rm, Rn
  ;;     BRNE  .La
  ;;
! ;; shall not be superseeded.  With a respective combine pattern
  ;; the latter sequence would be
  ;;
  ;;     AND   Rm, Rn
--- 8090,8096 ----
  ;;     AND   Rm, Rn
  ;;     BRNE  .La
  ;;
! ;; shall not be superseded.  With a respective combine pattern
  ;; the latter sequence would be
  ;;
  ;;     AND   Rm, Rn
***************
*** 8633,8639 ****
      DONE;
    })
  
! ;; Actually, it's too late now to work out address spaces known at compiletime.
  ;; Best place would be to fold ADDR_SPACE_CONVERT_EXPR in avr_fold_builtin.
  ;; However, avr_addr_space_convert can add some built-in knowledge for PSTR
  ;; so that ADDR_SPACE_CONVERT_EXPR in the built-in must not be resolved.
--- 8633,8639 ----
      DONE;
    })
  
! ;; Actually, it's too late now to work out address spaces known at compile time.
  ;; Best place would be to fold ADDR_SPACE_CONVERT_EXPR in avr_fold_builtin.
  ;; However, avr_addr_space_convert can add some built-in knowledge for PSTR
  ;; so that ADDR_SPACE_CONVERT_EXPR in the built-in must not be resolved.
diff -Nrcpad gcc-17-20260531/gcc/config/avr/builtins.def gcc-17-20260607/gcc/config/avr/builtins.def
*** gcc-17-20260531/gcc/config/avr/builtins.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/avr/builtins.def	Sun Jun  7 22:32:06 2026
***************
*** 18,24 ****
  
  /* This file contains the definitions and documentation for the
     builtins defined in the AVR part of the GNU compiler.
!    Befor including this file, define a macro
  
     DEF_BUILTIN(NAME, N_ARGS, TYPE, ICODE, LIBNAME, ATTRS)
  
--- 18,24 ----
  
  /* This file contains the definitions and documentation for the
     builtins defined in the AVR part of the GNU compiler.
!    Before including this file, define a macro
  
     DEF_BUILTIN(NAME, N_ARGS, TYPE, ICODE, LIBNAME, ATTRS)
  
*************** DEF_BUILTIN (INSERT_BITS, 3, uintQI_ftyp
*** 65,71 ****
  
  DEF_BUILTIN (FLASH_SEGMENT, 1, intQI_ftype_const_memx_ptr, flash_segment, NULL, attr_const)
  
! /* strlen for ASes so that __builtin_constant_p can be used wthout raising
     a diagnostic from -Waddr-space-convert in some AVR-LibC headers.  */
  DEF_BUILTIN (STRLEN_FLASH,  1, strlen_flash_node,  nothing, "__strlen_P", attr_const) // AVR-LibC
  DEF_BUILTIN (STRLEN_FLASHX, 1, strlen_flashx_node, nothing, "strlen_PF",  attr_const) // AVR-LibC
--- 65,71 ----
  
  DEF_BUILTIN (FLASH_SEGMENT, 1, intQI_ftype_const_memx_ptr, flash_segment, NULL, attr_const)
  
! /* strlen for ASes so that __builtin_constant_p can be used without raising
     a diagnostic from -Waddr-space-convert in some AVR-LibC headers.  */
  DEF_BUILTIN (STRLEN_FLASH,  1, strlen_flash_node,  nothing, "__strlen_P", attr_const) // AVR-LibC
  DEF_BUILTIN (STRLEN_FLASHX, 1, strlen_flashx_node, nothing, "strlen_PF",  attr_const) // AVR-LibC
diff -Nrcpad gcc-17-20260531/gcc/config/avr/specs.h gcc-17-20260607/gcc/config/avr/specs.h
*** gcc-17-20260531/gcc/config/avr/specs.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/avr/specs.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 20,26 ****
  <http://www.gnu.org/licenses/>.  */
  
  
! /* Default specs layout.  The actual definitions might be superseeded
     by device- or OS- specific files, like avrlibc.h, ../rtems.h, etc.
     The specs are repeated in the device specs files.  Subspecs are
     specs known to GCC or specs defined in the device specs files.  */
--- 20,26 ----
  <http://www.gnu.org/licenses/>.  */
  
  
! /* Default specs layout.  The actual definitions might be superseded
     by device- or OS- specific files, like avrlibc.h, ../rtems.h, etc.
     The specs are repeated in the device specs files.  Subspecs are
     specs known to GCC or specs defined in the device specs files.  */
diff -Nrcpad gcc-17-20260531/gcc/config/bfin/bfin.cc gcc-17-20260607/gcc/config/bfin/bfin.cc
*** gcc-17-20260531/gcc/config/bfin/bfin.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/bfin/bfin.cc	Sun Jun  7 22:32:06 2026
*************** bfin_function_ok_for_sibcall (tree decl
*** 1816,1822 ****
  
    /* When compiling for ID shared libraries, can't sibcall a local function
       from a non-local function, because the local function thinks it does
!      not need to reload P5 in the prologue, but the sibcall wil pop P5 in the
       sibcall epilogue, and we end up with the wrong value in P5.  */
  
    if (!decl)
--- 1816,1822 ----
  
    /* When compiling for ID shared libraries, can't sibcall a local function
       from a non-local function, because the local function thinks it does
!      not need to reload P5 in the prologue, but the sibcall will pop P5 in the
       sibcall epilogue, and we end up with the wrong value in P5.  */
  
    if (!decl)
diff -Nrcpad gcc-17-20260531/gcc/config/bpf/bpf.cc gcc-17-20260607/gcc/config/bpf/bpf.cc
*** gcc-17-20260531/gcc/config/bpf/bpf.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/bpf/bpf.cc	Sun Jun  7 22:32:06 2026
*************** bpf_asm_named_section (const char *name,
*** 1245,1251 ****
       characters.  This includes for example names like /foo//bar/baz.
       This makes it necessary to quote section names to make sure the
       assembler doesn't get confused.  For example, the example above
!      would be interpreted unqouted as a section name "/foo" followed
       by a line comment "//bar/baz".
  
       Note that we only quote the section name if it contains any
--- 1245,1251 ----
       characters.  This includes for example names like /foo//bar/baz.
       This makes it necessary to quote section names to make sure the
       assembler doesn't get confused.  For example, the example above
!      would be interpreted unquoted as a section name "/foo" followed
       by a line comment "//bar/baz".
  
       Note that we only quote the section name if it contains any
diff -Nrcpad gcc-17-20260531/gcc/config/bpf/core-builtins.cc gcc-17-20260607/gcc/config/bpf/core-builtins.cc
*** gcc-17-20260531/gcc/config/bpf/core-builtins.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/bpf/core-builtins.cc	Sun Jun  7 22:32:06 2026
*************** remove_parser_plugin ()
*** 264,270 ****
  
  /* Helper compare functions used to verify if multiple builtin calls contain
     the same argument as input.  In that case the builtin calls can be optimized
!    out by identifying redundat calls.  This happen since the internal
     __core_reloc builtin is marked as PURE.  */
  
  static inline bool
--- 264,270 ----
  
  /* Helper compare functions used to verify if multiple builtin calls contain
     the same argument as input.  In that case the builtin calls can be optimized
!    out by identifying redundant calls.  This happen since the internal
     __core_reloc builtin is marked as PURE.  */
  
  static inline bool
*************** bpf_require_core_support ()
*** 1063,1075 ****
  
  /* BPF Compile Once - Run Everywhere (CO-RE) support.  Construct a CO-RE
     relocation record in DATA to be emitted in the .BTF.ext
!    section.  Does nothing if we are not targetting BPF CO-RE, or if the
     constructed relocation would be a no-op.  */
  
  static void
  make_core_relo (struct cr_final *data, rtx_code_label *label)
  {
!   /* If we are not targetting BPF CO-RE, do not make a relocation.  We
       might not be generating any debug info at all.  */
    if (!bpf_require_core_support ())
      return;
--- 1063,1075 ----
  
  /* BPF Compile Once - Run Everywhere (CO-RE) support.  Construct a CO-RE
     relocation record in DATA to be emitted in the .BTF.ext
!    section.  Does nothing if we are not targeting BPF CO-RE, or if the
     constructed relocation would be a no-op.  */
  
  static void
  make_core_relo (struct cr_final *data, rtx_code_label *label)
  {
!   /* If we are not targeting BPF CO-RE, do not make a relocation.  We
       might not be generating any debug info at all.  */
    if (!bpf_require_core_support ())
      return;
*************** bpf_handle_plugin_finish_type (void *eve
*** 1207,1213 ****
  
  /* Initializes support information to process CO-RE builtins.
     Defines information for the builtin processing, such as helper functions to
!    support the builtin convertion.  */
  
  void
  bpf_init_core_builtins (void)
--- 1207,1213 ----
  
  /* Initializes support information to process CO-RE builtins.
     Defines information for the builtin processing, such as helper functions to
!    support the builtin conversion.  */
  
  void
  bpf_init_core_builtins (void)
*************** void
*** 1660,1666 ****
  bpf_output_core_reloc (rtx *operands, int nr_ops)
  {
    /* Search for an UNSPEC_CORE_RELOC within the operands of the emitting
!      intructions.  */
    rtx unspec_exp = NULL_RTX;
    for (int i = 0; i < nr_ops; i++)
      {
--- 1660,1666 ----
  bpf_output_core_reloc (rtx *operands, int nr_ops)
  {
    /* Search for an UNSPEC_CORE_RELOC within the operands of the emitting
!      instructions.  */
    rtx unspec_exp = NULL_RTX;
    for (int i = 0; i < nr_ops; i++)
      {
*************** core_make_builtins (tree *tp, int *walk_
*** 1910,1916 ****
  
        tree new_expr = core_expr_with_field_expr_plus_base (base, expr, true);
  
!       /* Abort convertion if it is just a pointer or a reference to an
  	 attributed type.  */
        if (new_expr != expr)
  	{
--- 1910,1916 ----
  
        tree new_expr = core_expr_with_field_expr_plus_base (base, expr, true);
  
!       /* Abort conversion if it is just a pointer or a reference to an
  	 attributed type.  */
        if (new_expr != expr)
  	{
diff -Nrcpad gcc-17-20260531/gcc/config/c6x/c6x.cc gcc-17-20260607/gcc/config/c6x/c6x.cc
*** gcc-17-20260531/gcc/config/c6x/c6x.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/c6x/c6x.cc	Sun Jun  7 22:32:06 2026
*************** c6x_file_start (void)
*** 415,421 ****
    asm_fprintf (asm_out_file,
  	       "\t.c6xabi_attribute Tag_ABI_stack_align_preserved, 0\n");
  
! #if 0 /* FIXME: Reenable when TI's tools are fixed.  */
    /* ??? Ideally we'd check flag_short_wchar somehow.  */
    asm_fprintf (asm_out_file, "\t.c6xabi_attribute Tag_ABI_wchar_t, %d\n", 2);
  #endif
--- 415,421 ----
    asm_fprintf (asm_out_file,
  	       "\t.c6xabi_attribute Tag_ABI_stack_align_preserved, 0\n");
  
! #if 0 /* FIXME: Re-enable when TI's tools are fixed.  */
    /* ??? Ideally we'd check flag_short_wchar somehow.  */
    asm_fprintf (asm_out_file, "\t.c6xabi_attribute Tag_ABI_wchar_t, %d\n", 2);
  #endif
*************** c6x_print_operand_address (FILE *file, m
*** 2036,2042 ****
  
     Meaning of CODE:
     $ -- print the unit specifier field for the instruction.
!    . -- print the predicate for the instruction or an emptry string for an
          unconditional one.
     | -- print "||" if the insn should be issued in parallel with the previous
          one.
--- 2036,2042 ----
  
     Meaning of CODE:
     $ -- print the unit specifier field for the instruction.
!    . -- print the predicate for the instruction or an empty string for an
          unconditional one.
     | -- print "||" if the insn should be issued in parallel with the previous
          one.
*************** c6x_asm_emit_except_personality (rtx per
*** 5468,5474 ****
    fputc ('\n', asm_out_file);
  }
  
! /* Use a special assembly directive rather than a regular setion for
     unwind table data.  */
  
  static void
--- 5468,5474 ----
    fputc ('\n', asm_out_file);
  }
  
! /* Use a special assembly directive rather than a regular section for
     unwind table data.  */
  
  static void
diff -Nrcpad gcc-17-20260531/gcc/config/csky/csky.cc gcc-17-20260607/gcc/config/csky/csky.cc
*** gcc-17-20260531/gcc/config/csky/csky.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/csky/csky.cc	Sun Jun  7 22:32:06 2026
*************** csky_output_inline_const (machine_mode m
*** 3922,3928 ****
       off to an lrw rather than calling this routine.  */
    gcc_assert (trick_type != IC_UNINLINABLE);
  
!   /* Operands: 0 = dst, 1 = load immedate., 2 = adjust immedate.  */
    out_operands[0] = operands[0];
    out_operands[1] = GEN_INT (x);
    if (trick_type != IC_SINGLE && trick_type != IC_APPEND_NOT)
--- 3922,3928 ----
       off to an lrw rather than calling this routine.  */
    gcc_assert (trick_type != IC_UNINLINABLE);
  
!   /* Operands: 0 = dst, 1 = load immediate., 2 = adjust immediate.  */
    out_operands[0] = operands[0];
    out_operands[1] = GEN_INT (x);
    if (trick_type != IC_SINGLE && trick_type != IC_APPEND_NOT)
*************** emit_csky_regs_pop (unsigned long mask)
*** 5637,5643 ****
         (set (reg:SI 'first reg number')
  	    (unspec:SI [(mem)] UNSPEC_PUSHPOP_MULT),
       the rest elements is (use (reg:SI 'rest reg number')),
!      so the length should be number of register to be poped
       plus one.  */
    par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (num_regs + 1));
  
--- 5637,5643 ----
         (set (reg:SI 'first reg number')
  	    (unspec:SI [(mem)] UNSPEC_PUSHPOP_MULT),
       the rest elements is (use (reg:SI 'rest reg number')),
!      so the length should be number of register to be popped
       plus one.  */
    par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (num_regs + 1));
  
*************** csky_return_in_memory (const_tree type,
*** 7081,7087 ****
  
  /* Implement TARGET_DWARF_REGISTER_SPAN.
     Dwarf models VFP registers as  64-bit or 128-bit registers default.
!    GCC models tham as 32-bit registers, so we need to describe this to
     the DWARF generation code.  Other registers can use the default.  */
  
  static rtx
--- 7081,7087 ----
  
  /* Implement TARGET_DWARF_REGISTER_SPAN.
     Dwarf models VFP registers as  64-bit or 128-bit registers default.
!    GCC models them as 32-bit registers, so we need to describe this to
     the DWARF generation code.  Other registers can use the default.  */
  
  static rtx
diff -Nrcpad gcc-17-20260531/gcc/config/csky/csky.h gcc-17-20260607/gcc/config/csky/csky.h
*** gcc-17-20260531/gcc/config/csky/csky.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/csky/csky.h	Sun Jun  7 22:32:06 2026
*************** while (0)
*** 1007,1012 ****
--- 1007,1020 ----
     define DWARF_FRAME_RETURN_COLUMN to DWARF_FRAME_REGNUM.  */
  #define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (CSKY_LR_REGNUM)
  
+ /* The Linux signal-frame fallback (config/csky/linux-unwind.h) records the
+    interrupted PC in DWARF column 32, one past the hard registers, and uses
+    it as the return column.  Declare it as the alternate return column so
+    that init_dwarf_reg_size_table sizes it; otherwise _Unwind_GetGR reads a
+    zero size and aborts when unwinding through a signal frame, such as
+    during NPTL pthread cancellation.  */
+ #define DWARF_ALT_FRAME_RETURN_COLUMN 32
+ 
  /* Use r0 and r1 to pass exception handling information.  */
  #define EH_RETURN_DATA_REGNO(N) ((N) < 2 ? N : INVALID_REGNUM)
  
diff -Nrcpad gcc-17-20260531/gcc/config/darwin-c.cc gcc-17-20260607/gcc/config/darwin-c.cc
*** gcc-17-20260531/gcc/config/darwin-c.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/darwin-c.cc	Sun Jun  7 22:32:06 2026
*************** find_subframework_header (cpp_reader *pf
*** 546,552 ****
  	{
  	  /* Logically, the place where we found the subframework is
  	     the place where we found the Framework that contains the
! 	     subframework.  This is useful for tracking wether or not
  	     we are in a system header.  */
  	  *dirp = _cpp_get_file_dir (cpp_get_file (b));
  	  return n;
--- 546,552 ----
  	{
  	  /* Logically, the place where we found the subframework is
  	     the place where we found the Framework that contains the
! 	     subframework.  This is useful for tracking whether or not
  	     we are in a system header.  */
  	  *dirp = _cpp_get_file_dir (cpp_get_file (b));
  	  return n;
diff -Nrcpad gcc-17-20260531/gcc/config/darwin-driver.cc gcc-17-20260607/gcc/config/darwin-driver.cc
*** gcc-17-20260531/gcc/config/darwin-driver.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/darwin-driver.cc	Sun Jun  7 22:32:06 2026
*************** darwin_find_version_from_kernel (void)
*** 197,203 ****
  
     When building cross or native cross compilers, default to the OSX
     version of the target (as provided by the most specific target header
!    included in tm.h).  This may be overidden by setting the flag explicitly
     (or by the MACOSX_DEPLOYMENT_TARGET environment).  */
  
  static const char *
--- 197,203 ----
  
     When building cross or native cross compilers, default to the OSX
     version of the target (as provided by the most specific target header
!    included in tm.h).  This may be overridden by setting the flag explicitly
     (or by the MACOSX_DEPLOYMENT_TARGET environment).  */
  
  static const char *
diff -Nrcpad gcc-17-20260531/gcc/config/darwin.cc gcc-17-20260607/gcc/config/darwin.cc
*** gcc-17-20260531/gcc/config/darwin.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/darwin.cc	Sun Jun  7 22:32:06 2026
*************** darwin_label_is_anonymous_local_objc_nam
*** 2080,2086 ****
     This version uses three mach-o sections to encapsulate the (unlimited
     number of) lto sections.
  
!    __GNU_LTO, __lto_sections  contains the concatented GNU LTO section data.
     __GNU_LTO, __section_names contains the GNU LTO section names.
     __GNU_LTO, __section_index contains an array of values that index these.
  
--- 2080,2086 ----
     This version uses three mach-o sections to encapsulate the (unlimited
     number of) lto sections.
  
!    __GNU_LTO, __lto_sections  contains the concatenated GNU LTO section data.
     __GNU_LTO, __section_names contains the GNU LTO section names.
     __GNU_LTO, __section_index contains an array of values that index these.
  
*************** fprintf (fp, "# adcom: %s (%lld,%d) ro %
*** 2863,2869 ****
       be passed a decl that should be in coalesced space.  */
    if (one || weak)
      {
!       /* Weak or COMDAT objects are put in mergable sections.  */
        darwin_emit_weak_or_comdat (fp, decl, name, size,
  				  ld_uses_coal_sects, DECL_ALIGN (decl));
        return;
--- 2863,2869 ----
       be passed a decl that should be in coalesced space.  */
    if (one || weak)
      {
!       /* Weak or COMDAT objects are put in mergeable sections.  */
        darwin_emit_weak_or_comdat (fp, decl, name, size,
  				  ld_uses_coal_sects, DECL_ALIGN (decl));
        return;
*************** fprintf (fp, "# adcom: %s (%lld,%d) ro %
*** 2885,2891 ****
      align = DECL_ALIGN (decl);
  
    l2align = floor_log2 (align / BITS_PER_UNIT);
!   /* Check we aren't asking for more aligment than the platform allows.  */
    gcc_checking_assert (l2align <= L2_MAX_OFILE_ALIGNMENT);
  
    if (TREE_PUBLIC (decl) != 0)
--- 2885,2891 ----
      align = DECL_ALIGN (decl);
  
    l2align = floor_log2 (align / BITS_PER_UNIT);
!   /* Check we aren't asking for more alignment than the platform allows.  */
    gcc_checking_assert (l2align <= L2_MAX_OFILE_ALIGNMENT);
  
    if (TREE_PUBLIC (decl) != 0)
*************** fprintf (fp, "# adcom: %s (%lld,%d) ro %
*** 2900,2906 ****
      darwin_emit_local_bss (fp, decl, name, size, l2align);
  }
  
! /* Output a chunk of BSS with alignment specfied.  */
  void
  darwin_asm_output_aligned_decl_local (FILE *fp, tree decl, const char *name,
  				      unsigned HOST_WIDE_INT size,
--- 2900,2906 ----
      darwin_emit_local_bss (fp, decl, name, size, l2align);
  }
  
! /* Output a chunk of BSS with alignment specified.  */
  void
  darwin_asm_output_aligned_decl_local (FILE *fp, tree decl, const char *name,
  				      unsigned HOST_WIDE_INT size,
*************** fprintf (fp, "# adloc: %s (%lld,%d) ro %
*** 2939,2945 ****
       be passed a decl that should be in coalesced space.  */
    if (one || weak)
      {
!       /* Weak or COMDAT objects are put in mergable sections.  */
        darwin_emit_weak_or_comdat (fp, decl, name, size,
  				  ld_uses_coal_sects, DECL_ALIGN (decl));
        return;
--- 2939,2945 ----
       be passed a decl that should be in coalesced space.  */
    if (one || weak)
      {
!       /* Weak or COMDAT objects are put in mergeable sections.  */
        darwin_emit_weak_or_comdat (fp, decl, name, size,
  				  ld_uses_coal_sects, DECL_ALIGN (decl));
        return;
diff -Nrcpad gcc-17-20260531/gcc/config/epiphany/epiphany.cc gcc-17-20260607/gcc/config/epiphany/epiphany.cc
*** gcc-17-20260531/gcc/config/epiphany/epiphany.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/epiphany/epiphany.cc	Sun Jun  7 22:32:06 2026
*************** epiphany_expand_epilogue (int sibcall_p)
*** 1922,1928 ****
    mem = gen_frame_mem (BLKmode, stack_pointer_rtx);
    /* For large / variable size frames, deallocating the register save area is
       joint with one register restore; for medium size frames, we use a
!      dummy post-increment load to dealloacte the whole frame.  */
    if (!SIMM11 (INTVAL (off)) || current_frame_info.last_slot >= 0)
      {
        emit_insn (gen_stack_adjust_ldr
--- 1922,1928 ----
    mem = gen_frame_mem (BLKmode, stack_pointer_rtx);
    /* For large / variable size frames, deallocating the register save area is
       joint with one register restore; for medium size frames, we use a
!      dummy post-increment load to deallocate the whole frame.  */
    if (!SIMM11 (INTVAL (off)) || current_frame_info.last_slot >= 0)
      {
        emit_insn (gen_stack_adjust_ldr
diff -Nrcpad gcc-17-20260531/gcc/config/epiphany/resolve-sw-modes.cc gcc-17-20260607/gcc/config/epiphany/resolve-sw-modes.cc
*** gcc-17-20260531/gcc/config/epiphany/resolve-sw-modes.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/epiphany/resolve-sw-modes.cc	Sun Jun  7 22:32:06 2026
*************** public:
*** 68,74 ****
     If only one rounding mode is required, select that one.
     Else we have to choose one to use in this mode setting insn and
     insert new mode setting insns on the edges where the other mode
!    becomes unambigous.  */
  
  unsigned
  pass_resolve_sw_modes::execute (function *fun)
--- 68,74 ----
     If only one rounding mode is required, select that one.
     Else we have to choose one to use in this mode setting insn and
     insert new mode setting insns on the edges where the other mode
!    becomes unambiguous.  */
  
  unsigned
  pass_resolve_sw_modes::execute (function *fun)
diff -Nrcpad gcc-17-20260531/gcc/config/fr30/fr30.cc gcc-17-20260607/gcc/config/fr30/fr30.cc
*** gcc-17-20260531/gcc/config/fr30/fr30.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/fr30/fr30.cc	Sun Jun  7 22:32:06 2026
*************** fr30_const_double_is_zero (rtx operand)
*** 875,881 ****
     It must be REG<-REG, REG<-MEM, MEM<-REG or REG<-CONST.
     On the FR30 we are constrained by the fact that it does not
     support offsetable addresses, and so we have to load the
!    address of the secnd word into the second destination register
     before we can use it.  */
  
  rtx
--- 875,881 ----
     It must be REG<-REG, REG<-MEM, MEM<-REG or REG<-CONST.
     On the FR30 we are constrained by the fact that it does not
     support offsetable addresses, and so we have to load the
!    address of the second word into the second destination register
     before we can use it.  */
  
  rtx
diff -Nrcpad gcc-17-20260531/gcc/config/frv/frv-opts.h gcc-17-20260607/gcc/config/frv/frv-opts.h
*** gcc-17-20260531/gcc/config/frv/frv-opts.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/frv/frv-opts.h	Sun Jun  7 22:32:06 2026
***************
*** 1,4 ****
! /* Frv option-handling defitions.
     Copyright (C) 1999-2026 Free Software Foundation, Inc.
  
  This file is part of GCC.
--- 1,4 ----
! /* Frv option-handling definitions.
     Copyright (C) 1999-2026 Free Software Foundation, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-17-20260531/gcc/config/ft32/ft32.cc gcc-17-20260607/gcc/config/ft32/ft32.cc
*** gcc-17-20260531/gcc/config/ft32/ft32.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/ft32/ft32.cc	Sun Jun  7 22:32:06 2026
*************** ft32_init_machine_status (void)
*** 357,363 ****
  
  
  /* The TARGET_OPTION_OVERRIDE worker.
!    All this curently does is set init_machine_status.  */
  static void
  ft32_option_override (void)
  {
--- 357,363 ----
  
  
  /* The TARGET_OPTION_OVERRIDE worker.
!    All this currently does is set init_machine_status.  */
  static void
  ft32_option_override (void)
  {
diff -Nrcpad gcc-17-20260531/gcc/config/gcn/constraints.md gcc-17-20260607/gcc/config/gcn/constraints.md
*** gcc-17-20260531/gcc/config/gcn/constraints.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/gcn/constraints.md	Sun Jun  7 22:32:06 2026
***************
*** 28,34 ****
         (match_test "((unsigned HOST_WIDE_INT) ival + 0x8000) < 0x10000")))
  
  (define_constraint "Kf"
!   "Immeditate constant -1"
    (and (match_code "const_int")
         (match_test "ival == -1")))
  
--- 28,34 ----
         (match_test "((unsigned HOST_WIDE_INT) ival + 0x8000) < 0x10000")))
  
  (define_constraint "Kf"
!   "Immediate constant -1"
    (and (match_code "const_int")
         (match_test "ival == -1")))
  
***************
*** 84,99 ****
    "SGPR registers")
  
  (define_register_constraint "SD" "SGPR_DST_REGS"
!   "registers useable as a destination of scalar operation")
  
  (define_register_constraint "SS" "SGPR_SRC_REGS"
!   "registers useable as a source of scalar operation")
  
  (define_register_constraint "Sm" "SGPR_MEM_SRC_REGS"
!   "registers useable as a source of scalar memory operation")
  
  (define_register_constraint "Sv" "SGPR_VOP_SRC_REGS"
!   "registers useable as a source of VOP3A instruction")
  
  (define_register_constraint "ca" "ALL_CONDITIONAL_REGS"
    "SCC VCCZ or EXECZ")
--- 84,99 ----
    "SGPR registers")
  
  (define_register_constraint "SD" "SGPR_DST_REGS"
!   "registers usable as a destination of scalar operation")
  
  (define_register_constraint "SS" "SGPR_SRC_REGS"
!   "registers usable as a source of scalar operation")
  
  (define_register_constraint "Sm" "SGPR_MEM_SRC_REGS"
!   "registers usable as a source of scalar memory operation")
  
  (define_register_constraint "Sv" "SGPR_VOP_SRC_REGS"
!   "registers usable as a source of VOP3A instruction")
  
  (define_register_constraint "ca" "ALL_CONDITIONAL_REGS"
    "SCC VCCZ or EXECZ")
diff -Nrcpad gcc-17-20260531/gcc/config/gcn/gcn-opts.h gcc-17-20260607/gcc/config/gcn/gcn-opts.h
*** gcc-17-20260531/gcc/config/gcn/gcn-opts.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/gcn/gcn-opts.h	Sun Jun  7 22:32:06 2026
*************** enum hsaco_attr_type
*** 104,110 ****
     : 4)
  /* This mostly affects the metadata.  */
  #define TARGET_ARCHITECTED_FLAT_SCRATCH (TARGET_RDNA3 || TARGET_CDNA3)
! /* Device has Sub-DWord Addressing instrucions.  */
  #define TARGET_SDWA (!TARGET_RDNA3)
  /* Different devices uses different cache control instructions.  */
  #define TARGET_WBINVL1_CACHE (!TARGET_RDNA2_PLUS && !TARGET_CDNA3)
--- 104,110 ----
     : 4)
  /* This mostly affects the metadata.  */
  #define TARGET_ARCHITECTED_FLAT_SCRATCH (TARGET_RDNA3 || TARGET_CDNA3)
! /* Device has Sub-DWord Addressing instructions.  */
  #define TARGET_SDWA (!TARGET_RDNA3)
  /* Different devices uses different cache control instructions.  */
  #define TARGET_WBINVL1_CACHE (!TARGET_RDNA2_PLUS && !TARGET_CDNA3)
diff -Nrcpad gcc-17-20260531/gcc/config/gcn/gcn-valu.md gcc-17-20260607/gcc/config/gcn/gcn-valu.md
*** gcc-17-20260531/gcc/config/gcn/gcn-valu.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/gcn/gcn-valu.md	Sun Jun  7 22:32:06 2026
***************
*** 4417,4423 ****
  
  ;; Warning: This "-ffast-math" implementation converts in-order reductions
  ;;          into associative reductions. It's also used where OpenMP or
! ;;          OpenACC paralellization has already broken the in-order semantics.
  (define_expand "fold_left_plus_<mode>"
   [(match_operand:<SCALAR_MODE> 0 "register_operand")
    (match_operand:<SCALAR_MODE> 1 "gcn_alu_operand")
--- 4417,4423 ----
  
  ;; Warning: This "-ffast-math" implementation converts in-order reductions
  ;;          into associative reductions. It's also used where OpenMP or
! ;;          OpenACC parallelization has already broken the in-order semantics.
  (define_expand "fold_left_plus_<mode>"
   [(match_operand:<SCALAR_MODE> 0 "register_operand")
    (match_operand:<SCALAR_MODE> 1 "gcn_alu_operand")
diff -Nrcpad gcc-17-20260531/gcc/config/gcn/gcn.cc gcc-17-20260607/gcc/config/gcn/gcn.cc
*** gcc-17-20260531/gcc/config/gcn/gcn.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/gcn/gcn.cc	Sun Jun  7 22:32:06 2026
*************** gcn_gen_undef (machine_mode mode)
*** 1242,1248 ****
  /* {{{ Utility functions.  */
  
  /*  Generalised accessor functions for instruction patterns.
!     The machine desription '@' prefix does something similar, but as of
      GCC 10 is incompatible with define_subst, and anyway it doesn't
      auto-handle the exec feature.
  
--- 1242,1248 ----
  /* {{{ Utility functions.  */
  
  /*  Generalised accessor functions for instruction patterns.
!     The machine description '@' prefix does something similar, but as of
      GCC 10 is incompatible with define_subst, and anyway it doesn't
      auto-handle the exec feature.
  
*************** gcn_addr_space_debug (addr_space_t as)
*** 1956,1962 ****
  
  /* Implement REGNO_MODE_CODE_OK_FOR_BASE_P via gcn.h
  
!    Retun true if REGNO is OK for memory adressing.  */
  
  bool
  gcn_regno_mode_code_ok_for_base_p (int regno,
--- 1956,1962 ----
  
  /* Implement REGNO_MODE_CODE_OK_FOR_BASE_P via gcn.h
  
!    Return true if REGNO is OK for memory addressing.  */
  
  bool
  gcn_regno_mode_code_ok_for_base_p (int regno,
*************** gcn_expand_prologue ()
*** 3395,3402 ****
  	+ offsets->local_vars + offsets->outgoing_args_size;
        if (sp_adjust > 0)
  	{
! 	  /* Adding RTX_FRAME_RELATED_P effectively disables spliting, so
! 	     we use split add explictly, and specify the DImode add in
  	     the note.  */
  	  rtx scc = gen_rtx_REG (BImode, SCC_REG);
  	  rtx adjustment = gen_int_mode (sp_adjust, SImode);
--- 3395,3402 ----
  	+ offsets->local_vars + offsets->outgoing_args_size;
        if (sp_adjust > 0)
  	{
! 	  /* Adding RTX_FRAME_RELATED_P effectively disables splitting, so
! 	     we use split add explicitly, and specify the DImode add in
  	     the note.  */
  	  rtx scc = gen_rtx_REG (BImode, SCC_REG);
  	  rtx adjustment = gen_int_mode (sp_adjust, SImode);
*************** gcn_expand_prologue ()
*** 3415,3422 ****
  
        if (offsets->need_frame_pointer)
  	{
! 	  /* Adding RTX_FRAME_RELATED_P effectively disables spliting, so
! 	     we use split add explictly, and specify the DImode add in
  	     the note.  */
  	  rtx scc = gen_rtx_REG (BImode, SCC_REG);
  	  int fp_adjust = -(offsets->local_vars + offsets->outgoing_args_size);
--- 3415,3422 ----
  
        if (offsets->need_frame_pointer)
  	{
! 	  /* Adding RTX_FRAME_RELATED_P effectively disables splitting, so
! 	     we use split add explicitly, and specify the DImode add in
  	     the note.  */
  	  rtx scc = gen_rtx_REG (BImode, SCC_REG);
  	  int fp_adjust = -(offsets->local_vars + offsets->outgoing_args_size);
*************** gcn_expand_prologue ()
*** 3446,3452 ****
      {
        if (TARGET_PACKED_WORK_ITEMS)
  	{
! 	  /* v0 conatins the X, Y and Z dimensions all in one.
  	     Expand them out for ABI compatibility.  */
  	  /* TODO: implement and use zero_extract.  */
  	  rtx v1 = gen_rtx_REG (V64SImode, VGPR_REGNO (1));
--- 3446,3452 ----
      {
        if (TARGET_PACKED_WORK_ITEMS)
  	{
! 	  /* v0 contains the X, Y and Z dimensions all in one.
  	     Expand them out for ABI compatibility.  */
  	  /* TODO: implement and use zero_extract.  */
  	  rtx v1 = gen_rtx_REG (V64SImode, VGPR_REGNO (1));
*************** gcn_expand_prologue ()
*** 3540,3547 ****
        emit_insn (gen_addsi3_scalar_carry (fp_lo, fp_lo, wave_offset, scc));
        emit_insn (gen_addcsi3_scalar_zero (fp_hi, fp_hi, scc));
  
!       /* Adding RTX_FRAME_RELATED_P effectively disables spliting, so we use
! 	 split add explictly, and specify the DImode add in the note.
           The DWARF info expects that the callee-save data is in the frame,
           even though it isn't (because this is the entry point), so we
           make a notional adjustment to the DWARF frame offset here.  */
--- 3540,3547 ----
        emit_insn (gen_addsi3_scalar_carry (fp_lo, fp_lo, wave_offset, scc));
        emit_insn (gen_addcsi3_scalar_zero (fp_hi, fp_hi, scc));
  
!       /* Adding RTX_FRAME_RELATED_P effectively disables splitting, so we use
! 	 split add explicitly, and specify the DImode add in the note.
           The DWARF info expects that the callee-save data is in the frame,
           even though it isn't (because this is the entry point), so we
           make a notional adjustment to the DWARF frame offset here.  */
*************** gcn_frame_pointer_rqd (void)
*** 3680,3686 ****
  {
    /* GDB needs the frame pointer in order to unwind properly,
       but that's not important for the entry point, unless alloca is used.
!      It's not important for code execution, so we should repect the
       -fomit-frame-pointer flag.  */
    return (!flag_omit_frame_pointer
  	  && cfun
--- 3680,3686 ----
  {
    /* GDB needs the frame pointer in order to unwind properly,
       but that's not important for the entry point, unless alloca is used.
!      It's not important for code execution, so we should respect the
       -fomit-frame-pointer flag.  */
    return (!flag_omit_frame_pointer
  	  && cfun
diff -Nrcpad gcc-17-20260531/gcc/config/gcn/gcn.h gcc-17-20260607/gcc/config/gcn/gcn.h
*** gcc-17-20260531/gcc/config/gcn/gcn.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/gcn/gcn.h	Sun Jun  7 22:32:06 2026
*************** STATIC_ASSERT (LAST_AVGPR_REG + 1 - FIRS
*** 216,222 ****
  #define NUM_PARM_REGS  6
  
  /* There is no arg pointer.  Just choose random fixed register that does
!    not intefere with anything.  */
  #define ARG_POINTER_REGNUM SOFT_ARG_REG
  
  #define HARD_FRAME_POINTER_IS_ARG_POINTER   0
--- 216,222 ----
  #define NUM_PARM_REGS  6
  
  /* There is no arg pointer.  Just choose random fixed register that does
!    not interfere with anything.  */
  #define ARG_POINTER_REGNUM SOFT_ARG_REG
  
  #define HARD_FRAME_POINTER_IS_ARG_POINTER   0
*************** enum gcn_builtin_codes
*** 865,871 ****
  
  /* Costs.  */
  
! /* Branches are to be dicouraged when theres an alternative.
     FIXME: This number is plucked from the air.  */
  #define BRANCH_COST(SPEED_P, PREDICABLE_P) 10
  
--- 865,871 ----
  
  /* Costs.  */
  
! /* Branches are to be dicouraged when there's an alternative.
     FIXME: This number is plucked from the air.  */
  #define BRANCH_COST(SPEED_P, PREDICABLE_P) 10
  
diff -Nrcpad gcc-17-20260531/gcc/config/gcn/gcn.md gcc-17-20260607/gcc/config/gcn/gcn.md
*** gcc-17-20260531/gcc/config/gcn/gcn.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/gcn/gcn.md	Sun Jun  7 22:32:06 2026
***************
*** 98,104 ****
  ;
  ; sop2 - scalar, two inputs, one output
  ;	 ssrc0/ssrc1: sgpr 0-102; flat_scratch,xnack,vcc,tba,tma,ttmp0-11,exec
! ;		      vccz,execz,scc,inline immedate,fp inline immediate
  ;	 sdst: sgpr 0-102; flat_scratch,xnack,vcc,tba,tma,ttmp0-11,exec
  ;
  ;	 Constraints "=SD, SD", "SSA,SSB","SSB,SSA"
--- 98,104 ----
  ;
  ; sop2 - scalar, two inputs, one output
  ;	 ssrc0/ssrc1: sgpr 0-102; flat_scratch,xnack,vcc,tba,tma,ttmp0-11,exec
! ;		      vccz,execz,scc,inline immediate,fp inline immediate
  ;	 sdst: sgpr 0-102; flat_scratch,xnack,vcc,tba,tma,ttmp0-11,exec
  ;
  ;	 Constraints "=SD, SD", "SSA,SSB","SSB,SSA"
***************
*** 115,121 ****
  ;
  ;	 Constraints "=SD", "SSA"
  ;
! ; sopc - scalar, two inputs, one comparsion
  ;	 ssrc0: same as sop2/ssc0.
  ;
  ;	 Constraints "SSI,SSA","SSA,SSI"
--- 115,121 ----
  ;
  ;	 Constraints "=SD", "SSA"
  ;
! ; sopc - scalar, two inputs, one comparison
  ;	 ssrc0: same as sop2/ssc0.
  ;
  ;	 Constraints "SSI,SSA","SSA,SSI"
***************
*** 147,153 ****
  ;
  ;	 constraints: "=v", "vBSv"
  ;
! ; vopc - vector, two inputs, one comparsion output;
  ;	 vsrc0: same as vop2/src0
  ;	 vsrc1: vgpr0-255
  ;	 vdst:
--- 147,153 ----
  ;
  ;	 constraints: "=v", "vBSv"
  ;
! ; vopc - vector, two inputs, one comparison output;
  ;	 vsrc0: same as vop2/src0
  ;	 vsrc1: vgpr0-255
  ;	 vdst:
***************
*** 1915,1921 ****
  ; into the L1 cache, this is not actually safe.
  ;
  ; Additionally, scalar flat instructions access L2 via a different cache
! ; (the "constant cache"), so they have separate constrol instructions.  We
  ; do not attempt to invalidate both caches at once; instead, atomics
  ; operating on scalar flat pointers will flush the constant cache, and
  ; atomics operating on flat or global pointers will flush L1.  It is up to
--- 1915,1921 ----
  ; into the L1 cache, this is not actually safe.
  ;
  ; Additionally, scalar flat instructions access L2 via a different cache
! ; (the "constant cache"), so they have separate control instructions.  We
  ; do not attempt to invalidate both caches at once; instead, atomics
  ; operating on scalar flat pointers will flush the constant cache, and
  ; atomics operating on flat or global pointers will flush L1.  It is up to
diff -Nrcpad gcc-17-20260531/gcc/config/i386/athlon.md gcc-17-20260607/gcc/config/i386/athlon.md
*** gcc-17-20260531/gcc/config/i386/athlon.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/athlon.md	Sun Jun  7 22:32:06 2026
***************
*** 70,76 ****
  (define_cpu_unit "athlon-decodev" "athlon")
  ;; Model the fact that double decoded instruction may take 2 cycles
  ;; to decode when decoder2 and decoder0 in next cycle
! ;; is used (this is needed to allow troughput of 1.5 double decoded
  ;; instructions per cycle).
  ;;
  ;; In order to avoid dependence between reservation of decoder
--- 70,76 ----
  (define_cpu_unit "athlon-decodev" "athlon")
  ;; Model the fact that double decoded instruction may take 2 cycles
  ;; to decode when decoder2 and decoder0 in next cycle
! ;; is used (this is needed to allow throughput of 1.5 double decoded
  ;; instructions per cycle).
  ;;
  ;; In order to avoid dependence between reservation of decoder
***************
*** 397,403 ****
  			 "athlon-vector,(athlon-ieu+athlon-agu),athlon-ieu,
  			  athlon-store")
  
! ;; Athlon floatin point unit
  (define_insn_reservation "athlon_fldxf" 12
  			 (and (eq_attr "cpu" "athlon")
  			      (and (eq_attr "type" "fmov")
--- 397,403 ----
  			 "athlon-vector,(athlon-ieu+athlon-agu),athlon-ieu,
  			  athlon-store")
  
! ;; Athlon floating point unit
  (define_insn_reservation "athlon_fldxf" 12
  			 (and (eq_attr "cpu" "athlon")
  			      (and (eq_attr "type" "fmov")
***************
*** 903,909 ****
  					(eq_attr "mode" "V2DF,V4SF,TI"))))
  			 "athlon-direct,athlon-fpsched,athlon-fstore")
  ;; cvtsi2sd mem,reg is directpath path  (cvtsi2sd reg,reg is doublepath)
! ;; cvtsi2sd has troughput 1 and is executed in store unit with latency of 6
  (define_insn_reservation "athlon_sseicvt_cvtsi2sd_load" 6
  			 (and (eq_attr "cpu" "athlon,k8")
  			      (and (eq_attr "type" "sseicvt")
--- 903,909 ----
  					(eq_attr "mode" "V2DF,V4SF,TI"))))
  			 "athlon-direct,athlon-fpsched,athlon-fstore")
  ;; cvtsi2sd mem,reg is directpath path  (cvtsi2sd reg,reg is doublepath)
! ;; cvtsi2sd has throughput 1 and is executed in store unit with latency of 6
  (define_insn_reservation "athlon_sseicvt_cvtsi2sd_load" 6
  			 (and (eq_attr "cpu" "athlon,k8")
  			      (and (eq_attr "type" "sseicvt")
***************
*** 970,976 ****
  					(and (eq_attr "mode" "SF,DF")
  					     (eq_attr "memory" "none")))))
  			 "athlon-vector,athlon-fploadk8,(athlon-faddmul+athlon-fstore)")
! ;; cvtsd2ss mem,reg is doublepath, troughput unknown, latency 9
  (define_insn_reservation "athlon_ssecvt_cvtsd2ss_load_k8" 9
  			 (and (eq_attr "cpu" "k8,athlon")
  			      (and (eq_attr "type" "ssecvt")
--- 970,976 ----
  					(and (eq_attr "mode" "SF,DF")
  					     (eq_attr "memory" "none")))))
  			 "athlon-vector,athlon-fploadk8,(athlon-faddmul+athlon-fstore)")
! ;; cvtsd2ss mem,reg is doublepath, throughput unknown, latency 9
  (define_insn_reservation "athlon_ssecvt_cvtsd2ss_load_k8" 9
  			 (and (eq_attr "cpu" "k8,athlon")
  			      (and (eq_attr "type" "ssecvt")
***************
*** 985,991 ****
  					(and (eq_attr "mode" "SF")
  					     (eq_attr "memory" "load")))))
  			 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)")
! ;; cvtsd2ss reg,reg is vectorpath, troughput unknown, latency 12
  (define_insn_reservation "athlon_ssecvt_cvtsd2ss" 12
  			 (and (eq_attr "cpu" "athlon,k8")
  			      (and (eq_attr "type" "ssecvt")
--- 985,991 ----
  					(and (eq_attr "mode" "SF")
  					     (eq_attr "memory" "load")))))
  			 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)")
! ;; cvtsd2ss reg,reg is vectorpath, throughput unknown, latency 12
  (define_insn_reservation "athlon_ssecvt_cvtsd2ss" 12
  			 (and (eq_attr "cpu" "athlon,k8")
  			      (and (eq_attr "type" "ssecvt")
***************
*** 1014,1021 ****
  					(and (eq_attr "mode" "V4SF,V2DF,TI")
  					     (eq_attr "memory" "load")))))
  			 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)")
! ;; cvtpd2ps mem,reg is vectorpath, troughput unknown, latency 10
! ;; ??? Why it is fater than cvtsd2ss?
  (define_insn_reservation "athlon_ssecvt_cvtpd2ps" 8
  			 (and (eq_attr "cpu" "athlon,k8")
  			      (and (eq_attr "type" "ssecvt")
--- 1014,1021 ----
  					(and (eq_attr "mode" "V4SF,V2DF,TI")
  					     (eq_attr "memory" "load")))))
  			 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)")
! ;; cvtpd2ps mem,reg is vectorpath, throughput unknown, latency 10
! ;; ??? Why it is faster than cvtsd2ss?
  (define_insn_reservation "athlon_ssecvt_cvtpd2ps" 8
  			 (and (eq_attr "cpu" "athlon,k8")
  			      (and (eq_attr "type" "ssecvt")
***************
*** 1030,1036 ****
  					(and (eq_attr "mode" "V4SF,V2DF,TI")
  					     (eq_attr "memory" "none")))))
  			 "athlon-double,athlon-fpsched,(athlon-faddmul+athlon-fstore)")
! ;; cvtsd2si mem,reg is doublepath, troughput 1, latency 9
  (define_insn_reservation "athlon_secvt_cvtsX2si_load" 9
  			 (and (eq_attr "cpu" "athlon,k8")
  			      (and (eq_attr "type" "sseicvt")
--- 1030,1036 ----
  					(and (eq_attr "mode" "V4SF,V2DF,TI")
  					     (eq_attr "memory" "none")))))
  			 "athlon-double,athlon-fpsched,(athlon-faddmul+athlon-fstore)")
! ;; cvtsd2si mem,reg is doublepath, throughput 1, latency 9
  (define_insn_reservation "athlon_secvt_cvtsX2si_load" 9
  			 (and (eq_attr "cpu" "athlon,k8")
  			      (and (eq_attr "type" "sseicvt")
***************
*** 1045,1051 ****
  					(and (eq_attr "mode" "SI,DI")
  					     (eq_attr "memory" "load")))))
  			 "athlon-double,athlon-fploadk8,(athlon-fadd+athlon-fstore)")
! ;; cvtsd2si reg,reg is doublepath, troughput 1, latency 9
  (define_insn_reservation "athlon_ssecvt_cvtsX2si" 9
  			 (and (eq_attr "cpu" "athlon")
  			      (and (eq_attr "type" "sseicvt")
--- 1045,1051 ----
  					(and (eq_attr "mode" "SI,DI")
  					     (eq_attr "memory" "load")))))
  			 "athlon-double,athlon-fploadk8,(athlon-fadd+athlon-fstore)")
! ;; cvtsd2si reg,reg is doublepath, throughput 1, latency 9
  (define_insn_reservation "athlon_ssecvt_cvtsX2si" 9
  			 (and (eq_attr "cpu" "athlon")
  			      (and (eq_attr "type" "sseicvt")
***************
*** 1067,1073 ****
  					(and (eq_attr "mode" "SI,DI")
  					     (eq_attr "memory" "none")))))
  			 "athlon-double,athlon-fpsched,(athlon-fadd+athlon-fstore)")
! ;; cvtpd2dq reg,mem is doublepath, troughput 1, latency 9 on amdfam10
  (define_insn_reservation "athlon_sseicvt_cvtpd2dq_load_amdfam10" 9
  			 (and (eq_attr "cpu" "amdfam10")
  			      (and (eq_attr "type" "sseicvt")
--- 1067,1073 ----
  					(and (eq_attr "mode" "SI,DI")
  					     (eq_attr "memory" "none")))))
  			 "athlon-double,athlon-fpsched,(athlon-fadd+athlon-fstore)")
! ;; cvtpd2dq reg,mem is doublepath, throughput 1, latency 9 on amdfam10
  (define_insn_reservation "athlon_sseicvt_cvtpd2dq_load_amdfam10" 9
  			 (and (eq_attr "cpu" "amdfam10")
  			      (and (eq_attr "type" "sseicvt")
***************
*** 1075,1081 ****
  					(and (eq_attr "mode" "TI")
  					     (eq_attr "memory" "load")))))
  			 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)")
! ;; cvtpd2dq reg,mem is doublepath, troughput 1, latency 7 on amdfam10
  (define_insn_reservation "athlon_sseicvt_cvtpd2dq_amdfam10" 7
  			 (and (eq_attr "cpu" "amdfam10")
  			      (and (eq_attr "type" "sseicvt")
--- 1075,1081 ----
  					(and (eq_attr "mode" "TI")
  					     (eq_attr "memory" "load")))))
  			 "athlon-double,athlon-fploadk8,(athlon-faddmul+athlon-fstore)")
! ;; cvtpd2dq reg,mem is doublepath, throughput 1, latency 7 on amdfam10
  (define_insn_reservation "athlon_sseicvt_cvtpd2dq_amdfam10" 7
  			 (and (eq_attr "cpu" "amdfam10")
  			      (and (eq_attr "type" "sseicvt")
diff -Nrcpad gcc-17-20260531/gcc/config/i386/avx512fintrin.h gcc-17-20260607/gcc/config/i386/avx512fintrin.h
*** gcc-17-20260531/gcc/config/i386/avx512fintrin.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/avx512fintrin.h	Sun Jun  7 22:32:06 2026
*************** typedef enum
*** 57,63 ****
  /* These _mm{,256}_avx512* intrins are initially duplicated from their
     _mm{,256}_* forms from AVX2 or before.  At that time, e need to add them
     to prevent target option mismatch when calling AVX512 intrins implemented
!    with these intrins under no-evex512 function attribute.  Thess intrins will
     still be here to avoid huge changes.  All AVX512 intrins calling those AVX2
     intrins or before have changed their calls to these AVX512 version.  */
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 57,63 ----
  /* These _mm{,256}_avx512* intrins are initially duplicated from their
     _mm{,256}_* forms from AVX2 or before.  At that time, e need to add them
     to prevent target option mismatch when calling AVX512 intrins implemented
!    with these intrins under no-evex512 function attribute.  These intrins will
     still be here to avoid huge changes.  All AVX512 intrins calling those AVX2
     intrins or before have changed their calls to these AVX512 version.  */
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-17-20260531/gcc/config/i386/btver2.md gcc-17-20260607/gcc/config/i386/btver2.md
*** gcc-17-20260531/gcc/config/i386/btver2.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/btver2.md	Sun Jun  7 22:32:06 2026
***************
*** 18,28 ****
  
  ;; AMD btver2 scheduling
  
! ;; Instructions decoded are that are classifed as direct (fast path single),
  ;; double (fast path double) and vector instructions.
! ;; Direct instrucions are decoded and convereted into 1 cop
! ;; Double instrucions are decoded and converetd into 2 cops
! ;; Vector instrucions are microcoded and they generated converted to 
  ;; 3 or more cops.
  
  (define_attr "btver2_decode" "direct,vector,double"
--- 18,28 ----
  
  ;; AMD btver2 scheduling
  
! ;; Instructions decoded are that are classified as direct (fast path single),
  ;; double (fast path double) and vector instructions.
! ;; Direct instructions are decoded and converted into 1 cop
! ;; Double instructions are decoded and converted into 2 cops
! ;; Vector instructions are microcoded and they generated converted to 
  ;; 3 or more cops.
  
  (define_attr "btver2_decode" "direct,vector,double"
***************
*** 257,263 ****
  					(eq_attr "memory" "store"))))
  			 "btver2-direct,btver2-alu,btver2-store")
  
! ;; Other integer instrucions 
  (define_insn_reservation "btver2_idirect" 1
  			 (and (eq_attr "cpu" "btver2")
  			      (and (eq_attr "btver2_decode" "direct")
--- 257,263 ----
  					(eq_attr "memory" "store"))))
  			 "btver2-direct,btver2-alu,btver2-store")
  
! ;; Other integer instructions 
  (define_insn_reservation "btver2_idirect" 1
  			 (and (eq_attr "cpu" "btver2")
  			      (and (eq_attr "btver2_decode" "direct")
***************
*** 509,515 ****
  					     (eq_attr "type" "sse")))))
  			 "btver2-double,btver2-load,btver2-fpm*42")
  
! ;; Bitmanipulation instrucions BMI LZCNT POPCNT 
  (define_insn_reservation "btver2_bmi_reg_direct"   1
  			 (and (eq_attr "cpu" "btver2")
  			      (and (eq_attr "btver2_decode" "direct")
--- 509,515 ----
  					     (eq_attr "type" "sse")))))
  			 "btver2-double,btver2-load,btver2-fpm*42")
  
! ;; Bitmanipulation instructions BMI LZCNT POPCNT 
  (define_insn_reservation "btver2_bmi_reg_direct"   1
  			 (and (eq_attr "cpu" "btver2")
  			      (and (eq_attr "btver2_decode" "direct")
diff -Nrcpad gcc-17-20260531/gcc/config/i386/c86-4g-m7.md gcc-17-20260607/gcc/config/i386/c86-4g-m7.md
*** gcc-17-20260531/gcc/config/i386/c86-4g-m7.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/c86-4g-m7.md	Sun Jun  7 22:32:06 2026
***************
*** 33,39 ****
  (define_cpu_unit "c86-4g-m7-decode3" "c86_4g_m7")
  
  ;; 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")
  
  ;; Direct instructions can be issued to any of the four decoders.
--- 33,39 ----
  (define_cpu_unit "c86-4g-m7-decode3" "c86_4g_m7")
  
  ;; Currently blocking all decoders for vector path instructions as
! ;; they are dispatched separately 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")
  
  ;; Direct instructions can be issued to any of the four decoders.
***************
*** 222,228 ****
  					(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
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "alu,negnot,rotate1,ishift1,test,incdec,icmp,
--- 222,228 ----
  					(eq_attr "memory" "load"))))
  			 "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*6")
  
! ;; Integer/general Instructions
  (define_insn_reservation "c86_4g_m7_insn" 1
  			 (and (eq_attr "cpu" "c86_4g_m7")
  			      (and (eq_attr "type" "alu,negnot,rotate1,ishift1,test,incdec,icmp,
diff -Nrcpad gcc-17-20260531/gcc/config/i386/c86-4g.md gcc-17-20260607/gcc/config/i386/c86-4g.md
*** gcc-17-20260531/gcc/config/i386/c86-4g.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/c86-4g.md	Sun Jun  7 22:32:06 2026
***************
*** 43,49 ****
  (define_cpu_unit "c86-4g-decode3" "c86_4g")
  
  ;; Currently blocking all decoders for vector path instructions as
! ;; they are dispatched separetely as microcode sequence.
  ;; Fix me: Need to revisit this.
  (define_reservation "c86-4g-vector" "c86-4g-decode0+c86-4g-decode1+c86-4g-decode2+c86-4g-decode3")
  
--- 43,49 ----
  (define_cpu_unit "c86-4g-decode3" "c86_4g")
  
  ;; Currently blocking all decoders for vector path instructions as
! ;; they are dispatched separately as microcode sequence.
  ;; Fix me: Need to revisit this.
  (define_reservation "c86-4g-vector" "c86-4g-decode0+c86-4g-decode1+c86-4g-decode2+c86-4g-decode3")
  
***************
*** 792,798 ****
  			 "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp1,c86-4g-fp1")
  
  ;; SSE moves
! ;; Fix me:  Need to revist this again some of the moves may be restricted
  ;; to some fpu pipes.
  
  ;; movnt doesn't touch cache, so latency modeling has little impact.
--- 792,798 ----
  			 "c86-4g-direct,c86-4g-load,c86-4g-fp0|c86-4g-fp1,c86-4g-fp1")
  
  ;; SSE moves
! ;; Fix me:  Need to revisit this again some of the moves may be restricted
  ;; to some fpu pipes.
  
  ;; movnt doesn't touch cache, so latency modeling has little impact.
diff -Nrcpad gcc-17-20260531/gcc/config/i386/cygwin.h gcc-17-20260607/gcc/config/i386/cygwin.h
*** gcc-17-20260531/gcc/config/i386/cygwin.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/cygwin.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 107,116 ****
  #if defined (USE_CYGWIN_LIBSTDCXX_WRAPPERS)
  
  #if USE_CYGWIN_LIBSTDCXX_WRAPPERS
! /* Default on, only explict -mno disables.  */
  #define CXX_WRAP_SPEC_OPT "!mno-use-libstdc-wrappers"
  #else
! /* Default off, only explict -m enables.  */
  #define CXX_WRAP_SPEC_OPT "muse-libstdc-wrappers"
  #endif
  
--- 107,116 ----
  #if defined (USE_CYGWIN_LIBSTDCXX_WRAPPERS)
  
  #if USE_CYGWIN_LIBSTDCXX_WRAPPERS
! /* Default on, only explicit -mno disables.  */
  #define CXX_WRAP_SPEC_OPT "!mno-use-libstdc-wrappers"
  #else
! /* Default off, only explicit -m enables.  */
  #define CXX_WRAP_SPEC_OPT "muse-libstdc-wrappers"
  #endif
  
diff -Nrcpad gcc-17-20260531/gcc/config/i386/i386-c.cc gcc-17-20260607/gcc/config/i386/i386-c.cc
*** gcc-17-20260531/gcc/config/i386/i386-c.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/i386-c.cc	Sun Jun  7 22:32:06 2026
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 44,50 ****
  			     void (*def_or_undef) (cpp_reader *,
  						   const char *))
  {
!   /* For some of the k6/pentium varients there weren't separate ISA bits to
       identify which tune/arch flag was passed, so figure it out here.  */
    size_t arch_len = strlen (ix86_arch_string);
    size_t tune_len = strlen (ix86_tune_string);
--- 44,50 ----
  			     void (*def_or_undef) (cpp_reader *,
  						   const char *))
  {
!   /* For some of the k6/pentium variants there weren't separate ISA bits to
       identify which tune/arch flag was passed, so figure it out here.  */
    size_t arch_len = strlen (ix86_arch_string);
    size_t tune_len = strlen (ix86_tune_string);
diff -Nrcpad gcc-17-20260531/gcc/config/i386/i386-expand.cc gcc-17-20260607/gcc/config/i386/i386-expand.cc
*** gcc-17-20260531/gcc/config/i386/i386-expand.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/i386-expand.cc	Sun Jun  7 22:32:06 2026
*************** ix86_expand_branch (enum rtx_code code,
*** 2466,2472 ****
    machine_mode mode = GET_MODE (op0);
    rtx tmp;
  
!   /* Handle special case - vector comparsion with boolean result, transform
       it using ptest instruction or vpcmpeq + kortest.  */
    if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
        || (mode == TImode && !TARGET_64BIT)
--- 2466,2472 ----
    machine_mode mode = GET_MODE (op0);
    rtx tmp;
  
!   /* Handle special case - vector comparison with boolean result, transform
       it using ptest instruction or vpcmpeq + kortest.  */
    if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
        || (mode == TImode && !TARGET_64BIT)
*************** ix86_expand_int_sse_cmp (rtx dest, enum
*** 4915,4921 ****
        && GET_MODE_CLASS (mode) == MODE_VECTOR_INT
        && GET_MODE_SIZE (mode) <= 16)
      ;
!   /* AVX512F supports all of the comparsions
       on all 128/256/512-bit vector int types.  */
    else if (ix86_use_mask_cmp_p (data_mode, mode, op_true, op_false))
      ;
--- 4915,4921 ----
        && GET_MODE_CLASS (mode) == MODE_VECTOR_INT
        && GET_MODE_SIZE (mode) <= 16)
      ;
!   /* AVX512F supports all of the comparisons
       on all 128/256/512-bit vector int types.  */
    else if (ix86_use_mask_cmp_p (data_mode, mode, op_true, op_false))
      ;
*************** ix86_expand_vec_perm (rtx operands[])
*** 5641,5651 ****
  	  else
  	    emit_insn (gen_avx2_pshufbv32qi3 (t1, mask, vt));
  
! 	  /* Multiply the shuffle indicies by two.  */
  	  t1 = expand_simple_binop (maskmode, PLUS, t1, t1, t1, 1,
  				    OPTAB_DIRECT);
  
! 	  /* Add one to the odd shuffle indicies:
  		t1 = { A*2, A*2+1, B*2, B*2+1, ... }.  */
  	  for (i = 0; i < w / 2; ++i)
  	    {
--- 5641,5651 ----
  	  else
  	    emit_insn (gen_avx2_pshufbv32qi3 (t1, mask, vt));
  
! 	  /* Multiply the shuffle indices by two.  */
  	  t1 = expand_simple_binop (maskmode, PLUS, t1, t1, t1, 1,
  				    OPTAB_DIRECT);
  
! 	  /* Add one to the odd shuffle indices:
  		t1 = { A*2, A*2+1, B*2, B*2+1, ... }.  */
  	  for (i = 0; i < w / 2; ++i)
  	    {
*************** expand_small_cpymem_or_setmem (rtx destm
*** 8812,8818 ****
  }
  
  /* Handle small memcpy (up to SIZE that is supposed to be small power of 2.
!    and get ready for the main memcpy loop by copying iniital DESIRED_ALIGN-ALIGN
     bytes and last SIZE bytes adjusitng DESTPTR/SRCPTR/COUNT in a way we can
     proceed with an loop copying SIZE bytes at once. Do moves in MODE.
     DONE_LABEL is a label after the whole copying sequence. The label is created
--- 8812,8818 ----
  }
  
  /* Handle small memcpy (up to SIZE that is supposed to be small power of 2.
!    and get ready for the main memcpy loop by copying initial DESIRED_ALIGN-ALIGN
     bytes and last SIZE bytes adjusitng DESTPTR/SRCPTR/COUNT in a way we can
     proceed with an loop copying SIZE bytes at once. Do moves in MODE.
     DONE_LABEL is a label after the whole copying sequence. The label is created
*************** ix86_copy_addr_to_reg (rtx addr)
*** 9521,9527 ****
       1) missaligned move prologue/epilogue containing:
          a) Prologue handling small memory blocks and jumping to done_label
  	   (skipped if blocks are known to be large enough)
! 	b) Signle move copying first DESIRED_ALIGN-ALIGN bytes if alignment is
             needed by single possibly misaligned move
  	   (skipped if alignment is not needed)
          c) Copy of last SIZE_NEEDED bytes by possibly misaligned moves
--- 9521,9527 ----
       1) missaligned move prologue/epilogue containing:
          a) Prologue handling small memory blocks and jumping to done_label
  	   (skipped if blocks are known to be large enough)
! 	b) Single move copying first DESIRED_ALIGN-ALIGN bytes if alignment is
             needed by single possibly misaligned move
  	   (skipped if alignment is not needed)
          c) Copy of last SIZE_NEEDED bytes by possibly misaligned moves
*************** ix86_expand_special_args_builtin (const
*** 14469,14475 ****
  	  op = fixup_modeless_constant (op, mode);
  
  	  /* NB: 3-operands load implied it's a mask load or v{p}expand*,
! 	     and that mask operand shoud be at the end.
  	     Keep all-ones mask which would be simplified by the expander.  */
  	  if (nargs == 3 && i == 2 && klass == load
  	      && constm1_operand (op, mode)
--- 14469,14475 ----
  	  op = fixup_modeless_constant (op, mode);
  
  	  /* NB: 3-operands load implied it's a mask load or v{p}expand*,
! 	     and that mask operand should be at the end.
  	     Keep all-ones mask which would be simplified by the expander.  */
  	  if (nargs == 3 && i == 2 && klass == load
  	      && constm1_operand (op, mode)
*************** ix86_expand_vector_init_interleave (mach
*** 18395,18401 ****
  	}
        else
  	{
! 	  /* Extend the odd elment to SImode using a paradoxical SUBREG.  */
  	  op0 = gen_reg_rtx (SImode);
  	  emit_move_insn (op0, gen_lowpart (SImode, op));
  
--- 18395,18401 ----
  	}
        else
  	{
! 	  /* Extend the odd element to SImode using a paradoxical SUBREG.  */
  	  op0 = gen_reg_rtx (SImode);
  	  emit_move_insn (op0, gen_lowpart (SImode, op));
  
*************** ix86_expand_vector_init_interleave (mach
*** 18408,18414 ****
  				   const1_rtx);
  	  emit_insn (gen_rtx_SET (op1, op0));
  
! 	  /* Cast the V4SImode vector back to a vector in orignal mode.  */
  	  op0 = gen_reg_rtx (mode);
  	  emit_move_insn (op0, gen_lowpart (mode, op1));
  
--- 18408,18414 ----
  				   const1_rtx);
  	  emit_insn (gen_rtx_SET (op1, op0));
  
! 	  /* Cast the V4SImode vector back to a vector in original mode.  */
  	  op0 = gen_reg_rtx (mode);
  	  emit_move_insn (op0, gen_lowpart (mode, op1));
  
*************** expand_vec_perm_shufps_shufps (struct ex
*** 22529,22535 ****
        perm1[3] = perm1[2]
  	= (count == 3) ? d->perm[pair_idx] : d->perm[pair_idx] + 4;
  
!       /* Alway put the vector contains lone indx at the first.  */
        if (count == 1)
  	std::swap (d->op0, d->op1);
  
--- 22529,22535 ----
        perm1[3] = perm1[2]
  	= (count == 3) ? d->perm[pair_idx] : d->perm[pair_idx] + 4;
  
!       /* Always put the vector contains lone indx at the first.  */
        if (count == 1)
  	std::swap (d->op0, d->op1);
  
*************** ix86_expand_sse2_mulvxdi3 (rtx op0, rtx
*** 26551,26557 ****
  		       gen_rtx_MULT (mode, op1, op2));
  }
  
! /* Return 1 if control tansfer instruction INSN
     should be encoded with notrack prefix.  */
  
  bool
--- 26551,26557 ----
  		       gen_rtx_MULT (mode, op1, op2));
  }
  
! /* Return 1 if control transfer instruction INSN
     should be encoded with notrack prefix.  */
  
  bool
*************** ix86_gen_ccmp_first (rtx_insn **prep_seq
*** 27139,27145 ****
  
    /* We only supports following scalar comparisons that use just 1
       instruction: DI/SI/QI/HI/DF/SF/HF.
!      Unordered/Ordered compare cannot be corretly indentified by
       ccmp so they are not supported.  */
    if (!(op_mode == DImode || op_mode == SImode || op_mode == HImode
  	|| op_mode == QImode || op_mode == DFmode || op_mode == SFmode
--- 27139,27145 ----
  
    /* We only supports following scalar comparisons that use just 1
       instruction: DI/SI/QI/HI/DF/SF/HF.
!      Unordered/Ordered compare cannot be correctly identified by
       ccmp so they are not supported.  */
    if (!(op_mode == DImode || op_mode == SImode || op_mode == HImode
  	|| op_mode == QImode || op_mode == DFmode || op_mode == SFmode
diff -Nrcpad gcc-17-20260531/gcc/config/i386/i386-features.cc gcc-17-20260607/gcc/config/i386/i386-features.cc
*** gcc-17-20260531/gcc/config/i386/i386-features.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/i386-features.cc	Sun Jun  7 22:32:06 2026
*************** general_scalar_to_vector_candidate_p (rt
*** 2478,2484 ****
        return REG_P (dst);
  
      case VEC_SELECT:
!       /* Excluding MEM_P (dst) avoids intefering with vpextr[dq].  */
        return REG_P (dst)
  	     && REG_P (XEXP (src, 0))
  	     && GET_MODE (XEXP (src, 0)) == (mode == DImode ? V2DImode
--- 2478,2484 ----
        return REG_P (dst);
  
      case VEC_SELECT:
!       /* Excluding MEM_P (dst) avoids interfering with vpextr[dq].  */
        return REG_P (dst)
  	     && REG_P (XEXP (src, 0))
  	     && GET_MODE (XEXP (src, 0)) == (mode == DImode ? V2DImode
*************** pass_x86_cse::x86_cse (void)
*** 4879,4885 ****
  	    continue;
  
  	  bool matched = false;
! 	  /* Remove redundant pattens if there are more than 2 of
  	     them.  */
  	  unsigned int threshold = 2;
  
--- 4879,4885 ----
  	    continue;
  
  	  bool matched = false;
! 	  /* Remove redundant patterns if there are more than 2 of
  	     them.  */
  	  unsigned int threshold = 2;
  
*************** ix86_apx_nf_convert (void)
*** 5302,5315 ****
  	    continue;
  
  	  /* Convert candidate insns after cstore, which should
! 	     satisify the two conditions:
  	     1. Is not flag user or producer, only clobbers
  	     FLAGS_REG.
  	     2. Have corresponding nf pattern.  */
  
  	  rtx pat = PATTERN (insn);
  
! 	  /* Starting convertion at first cstorecc.  */
  	  rtx set = NULL_RTX;
  	  if (!converting_seq
  	      && (set = single_set (insn))
--- 5302,5315 ----
  	    continue;
  
  	  /* Convert candidate insns after cstore, which should
! 	     satisfy the two conditions:
  	     1. Is not flag user or producer, only clobbers
  	     FLAGS_REG.
  	     2. Have corresponding nf pattern.  */
  
  	  rtx pat = PATTERN (insn);
  
! 	  /* Starting conversion at first cstorecc.  */
  	  rtx set = NULL_RTX;
  	  if (!converting_seq
  	      && (set = single_set (insn))
*************** dispatch_function_versions (tree dispatc
*** 5819,5825 ****
  
    gseq = bb_seq (*empty_bb);
    /* Function version dispatch is via IFUNC.  IFUNC resolvers fire before
!      constructors, so explicity call __builtin_cpu_init here.  */
    ifunc_cpu_init_stmt
      = gimple_build_call_vec (get_ix86_builtin (IX86_BUILTIN_CPU_INIT), vNULL);
    gimple_seq_add_stmt (&gseq, ifunc_cpu_init_stmt);
--- 5819,5825 ----
  
    gseq = bb_seq (*empty_bb);
    /* Function version dispatch is via IFUNC.  IFUNC resolvers fire before
!      constructors, so explicitly call __builtin_cpu_init here.  */
    ifunc_cpu_init_stmt
      = gimple_build_call_vec (get_ix86_builtin (IX86_BUILTIN_CPU_INIT), vNULL);
    gimple_seq_add_stmt (&gseq, ifunc_cpu_init_stmt);
diff -Nrcpad gcc-17-20260531/gcc/config/i386/i386-features.h gcc-17-20260607/gcc/config/i386/i386-features.h
*** gcc-17-20260531/gcc/config/i386/i386-features.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/i386-features.h	Sun Jun  7 22:32:06 2026
*************** class scalar_chain
*** 145,151 ****
    bitmap insns;
    /* All registers defined by a chain.  */
    bitmap defs;
!   /* Registers used in both vector and sclar modes.  */
    bitmap defs_conv;
  
    /* Limit on chain discovery.  */
--- 145,151 ----
    bitmap insns;
    /* All registers defined by a chain.  */
    bitmap defs;
!   /* Registers used in both vector and scalar modes.  */
    bitmap defs_conv;
  
    /* Limit on chain discovery.  */
diff -Nrcpad gcc-17-20260531/gcc/config/i386/i386-options.cc gcc-17-20260607/gcc/config/i386/i386-options.cc
*** gcc-17-20260531/gcc/config/i386/i386-options.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/i386-options.cc	Sun Jun  7 22:32:06 2026
*************** ix86_function_specific_restore (struct g
*** 878,884 ****
    opts->x_ix86_tune_memset_strategy = ptr->x_ix86_tune_memset_strategy;
    opts->x_ix86_tune_no_default = ptr->x_ix86_tune_no_default;
    ix86_tune_cost = processor_cost_table[ix86_tune];
!   /* TODO: ix86_cost should be chosen at instruction or function granuality
       so for cold code we use size_cost even in !optimize_size compilation.  */
    if (opts->x_optimize_size)
      ix86_cost = &ix86_size_cost;
--- 878,884 ----
    opts->x_ix86_tune_memset_strategy = ptr->x_ix86_tune_memset_strategy;
    opts->x_ix86_tune_no_default = ptr->x_ix86_tune_no_default;
    ix86_tune_cost = processor_cost_table[ix86_tune];
!   /* TODO: ix86_cost should be chosen at instruction or function granularity
       so for cold code we use size_cost even in !optimize_size compilation.  */
    if (opts->x_optimize_size)
      ix86_cost = &ix86_size_cost;
*************** ix86_valid_target_attribute_tree (tree f
*** 1454,1460 ****
  	opts->x_ix86_tune_string
  	  = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_TUNE]);
        /* If we have explicit arch string and no tune string specified, set
! 	 tune_string to NULL and later it will be overriden by arch_string
  	 so target clones can get proper optimization.  */
        else if (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]
  	       || orig_tune_defaulted)
--- 1454,1460 ----
  	opts->x_ix86_tune_string
  	  = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_TUNE]);
        /* If we have explicit arch string and no tune string specified, set
! 	 tune_string to NULL and later it will be overridden by arch_string
  	 so target clones can get proper optimization.  */
        else if (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]
  	       || orig_tune_defaulted)
*************** ix86_override_options_after_change_1 (st
*** 1959,1965 ****
  	OPTS (flag_web) = OPTS (flag_unroll_loops);
        if (!OPTS_SET_P (flag_rename_registers))
  	OPTS (flag_rename_registers) = OPTS (flag_unroll_loops);
!       /* -fcunroll-grow-size default follws -f[no]-unroll-loops.  */
        if (!OPTS_SET_P (flag_cunroll_grow_size))
  	OPTS (flag_cunroll_grow_size)
  	  = (OPTS (flag_unroll_loops)
--- 1959,1965 ----
  	OPTS (flag_web) = OPTS (flag_unroll_loops);
        if (!OPTS_SET_P (flag_rename_registers))
  	OPTS (flag_rename_registers) = OPTS (flag_unroll_loops);
!       /* -fcunroll-grow-size default follows -f[no]-unroll-loops.  */
        if (!OPTS_SET_P (flag_cunroll_grow_size))
  	OPTS (flag_cunroll_grow_size)
  	  = (OPTS (flag_unroll_loops)
*************** ix86_option_override_internal (bool main
*** 2532,2538 ****
    ix86_override_options_after_change_1 (opts, opts_set);
  
    ix86_tune_cost = processor_cost_table[ix86_tune];
!   /* TODO: ix86_cost should be chosen at instruction or function granuality
       so for cold code we use size_cost even in !optimize_size compilation.  */
    if (opts->x_optimize_size)
      ix86_cost = &ix86_size_cost;
--- 2532,2538 ----
    ix86_override_options_after_change_1 (opts, opts_set);
  
    ix86_tune_cost = processor_cost_table[ix86_tune];
!   /* TODO: ix86_cost should be chosen at instruction or function granularity
       so for cold code we use size_cost even in !optimize_size compilation.  */
    if (opts->x_optimize_size)
      ix86_cost = &ix86_size_cost;
diff -Nrcpad gcc-17-20260531/gcc/config/i386/i386.cc gcc-17-20260607/gcc/config/i386/i386.cc
*** gcc-17-20260531/gcc/config/i386/i386.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/i386.cc	Sun Jun  7 22:32:06 2026
*************** unsigned int const debugger64_register_m
*** 235,241 ****
    75, 76, 77, 78, 79, 80, 81, 82,
    /* Mask registers */
    118, 119, 120, 121, 122, 123, 124, 125,
!   /* rex2 extend interger registers */
    130, 131, 132, 133, 134, 135, 136, 137,
    138, 139, 140, 141, 142, 143, 144, 145
  };
--- 235,241 ----
    75, 76, 77, 78, 79, 80, 81, 82,
    /* Mask registers */
    118, 119, 120, 121, 122, 123, 124, 125,
!   /* rex2 extend integer registers */
    130, 131, 132, 133, 134, 135, 136, 137,
    138, 139, 140, 141, 142, 143, 144, 145
  };
*************** static rtx ix86_function_value (const_tr
*** 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);
--- 430,435 ----
*************** ix86_can_inline_p (tree caller, tree cal
*** 685,691 ****
      ret = false;
  
    else if (caller_opts->x_ix86_fpmath != callee_opts->x_ix86_fpmath
! 	   /* If the calle doesn't use FP expressions differences in
  	      ix86_fpmath can be ignored.  We are called from FEs
  	      for multi-versioning call optimization, so beware of
  	      ipa_fn_summaries not available.  */
--- 684,690 ----
      ret = false;
  
    else if (caller_opts->x_ix86_fpmath != callee_opts->x_ix86_fpmath
! 	   /* If the callee doesn't use FP expressions differences in
  	      ix86_fpmath can be ignored.  We are called from FEs
  	      for multi-versioning call optimization, so beware of
  	      ipa_fn_summaries not available.  */
*************** ix86_function_regparm (const_tree type,
*** 1321,1327 ****
  
  	      /* Each fixed register usage increases register pressure,
  		 so less registers should be used for argument passing.
! 		 This functionality can be overriden by an explicit
  		 regparm value.  */
  	      for (regno = AX_REG; regno <= DI_REG; regno++)
  		if (fixed_regs[regno])
--- 1320,1326 ----
  
  	      /* Each fixed register usage increases register pressure,
  		 so less registers should be used for argument passing.
! 		 This functionality can be overridden by an explicit
  		 regparm value.  */
  	      for (regno = AX_REG; regno <= DI_REG; regno++)
  		if (fixed_regs[regno])
*************** ix86_function_regparm (const_tree type,
*** 1344,1350 ****
     indicated TYPE and DECL.  DECL may be NULL when calling function
     indirectly or considering a libcall.  Return -1 if any FP parameter
     should be rejected by error.  This is used in siutation we imply SSE
!    calling convetion but the function is called from another function with
     SSE disabled. Otherwise return 0.  */
  
  static int
--- 1343,1349 ----
     indicated TYPE and DECL.  DECL may be NULL when calling function
     indirectly or considering a libcall.  Return -1 if any FP parameter
     should be rejected by error.  This is used in siutation we imply SSE
!    calling convention but the function is called from another function with
     SSE disabled. Otherwise return 0.  */
  
  static int
*************** ix86_must_pass_in_stack (const function_
*** 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.  */
--- 1631,1636 ----
*************** construct_container (machine_mode mode,
*** 3076,3082 ****
     and data type TYPE.  (TYPE is null for libcalls where that information
     may not be available.)
  
!    Return a number of integer regsiters advanced over.  */
  
  static int
  function_arg_advance_32 (CUMULATIVE_ARGS *cum, machine_mode mode,
--- 3067,3073 ----
     and data type TYPE.  (TYPE is null for libcalls where that information
     may not be available.)
  
!    Return a number of integer registers advanced over.  */
  
  static int
  function_arg_advance_32 (CUMULATIVE_ARGS *cum, machine_mode mode,
*************** ix86_return_in_memory (const_tree type,
*** 4521,4527 ****
  	  if (size < 8)
  	    return false;
  
! 	  /* Unless ABI prescibes otherwise,
  	     MMX/3dNow values are returned in MM0 if available.  */
  
  	  if (size == 8)
--- 4512,4518 ----
  	  if (size < 8)
  	    return false;
  
! 	  /* Unless ABI prescribes otherwise,
  	     MMX/3dNow values are returned in MM0 if available.  */
  
  	  if (size == 8)
*************** output_indirect_thunk (unsigned int regn
*** 6356,6362 ****
      fputs ("\tint3\n", asm_out_file);
  }
  
! /* Output a funtion with a call and return thunk for indirect branch.
     If REGNO != INVALID_REGNUM, the function address is in REGNO.
     Otherwise, the function address is on the top of stack.  Thunk is
     used for function return if RET_P is true.  */
--- 6347,6353 ----
      fputs ("\tint3\n", asm_out_file);
  }
  
! /* Output a function with a call and return thunk for indirect branch.
     If REGNO != INVALID_REGNUM, the function address is in REGNO.
     Otherwise, the function address is on the top of stack.  Thunk is
     used for function return if RET_P is true.  */
*************** ix86_compute_frame_layout (void)
*** 7088,7095 ****
    frame->nsseregs = ix86_nsaved_sseregs ();
  
    /* 64-bit MS ABI seem to require stack alignment to be always 16,
!      except for function prologues, leaf functions and when the defult
!      incoming stack boundary is overriden at command line or via
       force_align_arg_pointer attribute.
  
       Darwin's ABI specifies 128b alignment for both 32 and  64 bit variants
--- 7079,7086 ----
    frame->nsseregs = ix86_nsaved_sseregs ();
  
    /* 64-bit MS ABI seem to require stack alignment to be always 16,
!      except for function prologues, leaf functions and when the default
!      incoming stack boundary is overridden at command line or via
       force_align_arg_pointer attribute.
  
       Darwin's ABI specifies 128b alignment for both 32 and  64 bit variants
*************** ix86_compute_frame_layout (void)
*** 7118,7124 ****
    gcc_assert (preferred_alignment <= stack_alignment_needed);
  
    /* The only ABI saving SSE regs should be 64-bit ms_abi or with
!      no_caller_saved_registers attribue.  */
    gcc_assert (TARGET_64BIT
  	      || (cfun->machine->call_saved_registers
  		  == TYPE_NO_CALLER_SAVED_REGISTERS)
--- 7109,7115 ----
    gcc_assert (preferred_alignment <= stack_alignment_needed);
  
    /* The only ABI saving SSE regs should be 64-bit ms_abi or with
!      no_caller_saved_registers attribute.  */
    gcc_assert (TARGET_64BIT
  	      || (cfun->machine->call_saved_registers
  		  == TYPE_NO_CALLER_SAVED_REGISTERS)
*************** choose_basereg (HOST_WIDE_INT cfa_offset
*** 7564,7570 ****
  /* Return an RTX that points to CFA_OFFSET within the stack frame and
     the alignment of address.  If ALIGN is non-null, it should point to
     an alignment value (in bits) that is preferred or zero and will
!    recieve the alignment of the base register that was selected,
     irrespective of rather or not CFA_OFFSET is a multiple of that
     alignment value.  If it is possible for the base register offset to be
     non-immediate then SCRATCH_REGNO should specify a scratch register to
--- 7555,7561 ----
  /* Return an RTX that points to CFA_OFFSET within the stack frame and
     the alignment of address.  If ALIGN is non-null, it should point to
     an alignment value (in bits) that is preferred or zero and will
!    receive the alignment of the base register that was selected,
     irrespective of rather or not CFA_OFFSET is a multiple of that
     alignment value.  If it is possible for the base register offset to be
     non-immediate then SCRATCH_REGNO should specify a scratch register to
*************** ix86_emit_save_reg_using_mov (machine_mo
*** 7714,7720 ****
    addr = choose_baseaddr (cfa_offset, &align);
    mem = gen_frame_mem (mode, addr);
  
!   /* The location aligment depends upon the base register.  */
    align = MIN (GET_MODE_ALIGNMENT (mode), align);
    gcc_assert (! (cfa_offset & (align / BITS_PER_UNIT - 1)));
    set_mem_align (mem, align);
--- 7705,7711 ----
    addr = choose_baseaddr (cfa_offset, &align);
    mem = gen_frame_mem (mode, addr);
  
!   /* The location alignment depends upon the base register.  */
    align = MIN (GET_MODE_ALIGNMENT (mode), align);
    gcc_assert (! (cfa_offset & (align / BITS_PER_UNIT - 1)));
    set_mem_align (mem, align);
*************** pro_epilogue_adjust_stack (rtx dest, rtx
*** 7951,7957 ****
  }
  
  /* Find an available register to be used as dynamic realign argument
!    pointer regsiter.  Such a register will be written in prologue and
     used in begin of body, so it must not be
  	1. parameter passing register.
  	2. GOT pointer.
--- 7942,7948 ----
  }
  
  /* Find an available register to be used as dynamic realign argument
!    pointer register.  Such a register will be written in prologue and
     used in begin of body, so it must not be
  	1. parameter passing register.
  	2. GOT pointer.
*************** ix86_expand_prologue (void)
*** 9813,9819 ****
      }
    gcc_assert (m->fs.sp_offset == frame.stack_pointer_offset);
  
!   /* If we havn't already set up the frame pointer, do so now.  */
    if (frame_pointer_needed && !m->fs.fp_valid)
      {
        insn = gen_add3_insn (hard_frame_pointer_rtx, stack_pointer_rtx,
--- 9804,9810 ----
      }
    gcc_assert (m->fs.sp_offset == frame.stack_pointer_offset);
  
!   /* If we haven't already set up the frame pointer, do so now.  */
    if (frame_pointer_needed && !m->fs.fp_valid)
      {
        insn = gen_add3_insn (hard_frame_pointer_rtx, stack_pointer_rtx,
*************** ix86_expand_prologue (void)
*** 9845,9851 ****
        RTX_FRAME_RELATED_P (insn) = 1;
        add_reg_note (insn, REG_CFA_FLUSH_QUEUE, NULL_RTX);
        emit_insn (gen_prologue_use (pic));
!       /* Deleting already emmitted SET_GOT if exist and allocated to
  	 REAL_PIC_OFFSET_TABLE_REGNUM.  */
        ix86_elim_entry_set_got (pic);
      }
--- 9836,9842 ----
        RTX_FRAME_RELATED_P (insn) = 1;
        add_reg_note (insn, REG_CFA_FLUSH_QUEUE, NULL_RTX);
        emit_insn (gen_prologue_use (pic));
!       /* Deleting already emitted SET_GOT if exist and allocated to
  	 REAL_PIC_OFFSET_TABLE_REGNUM.  */
        ix86_elim_entry_set_got (pic);
      }
*************** ix86_emit_restore_sse_regs_using_mov (HO
*** 10160,10166 ****
  	mem = choose_baseaddr (cfa_offset, &align);
  	mem = gen_rtx_MEM (V4SFmode, mem);
  
! 	/* The location aligment depends upon the base register.  */
  	align = MIN (GET_MODE_ALIGNMENT (V4SFmode), align);
  	gcc_assert (! (cfa_offset & (align / BITS_PER_UNIT - 1)));
  	set_mem_align (mem, align);
--- 10151,10157 ----
  	mem = choose_baseaddr (cfa_offset, &align);
  	mem = gen_rtx_MEM (V4SFmode, mem);
  
! 	/* The location alignment depends upon the base register.  */
  	align = MIN (GET_MODE_ALIGNMENT (V4SFmode), align);
  	gcc_assert (! (cfa_offset & (align / BITS_PER_UNIT - 1)));
  	set_mem_align (mem, align);
*************** ix86_memory_address_reg_class (rtx_insn*
*** 12104,12110 ****
    /* Update recog_data for processing of alternatives.  */
    extract_insn_cached (insn);
  
!   /* If current alternative is not set, loop throught enabled
       alternatives and get the most limited register class.  */
    if (saved_alternative == -1)
      {
--- 12095,12101 ----
    /* Update recog_data for processing of alternatives.  */
    extract_insn_cached (insn);
  
!   /* If current alternative is not set, loop through enabled
       alternatives and get the most limited register class.  */
    if (saved_alternative == -1)
      {
*************** ix86_legitimate_address_p (machine_mode,
*** 12347,12353 ****
  #if TARGET_MACHO
  	  else if (MACHO_DYNAMIC_NO_PIC_P
  		   && !ix86_legitimate_constant_p (Pmode, disp))
! 	    /* displacment must be referenced via non_lazy_pointer */
  	    return false;
  #endif
  
--- 12338,12344 ----
  #if TARGET_MACHO
  	  else if (MACHO_DYNAMIC_NO_PIC_P
  		   && !ix86_legitimate_constant_p (Pmode, disp))
! 	    /* displacement must be referenced via non_lazy_pointer */
  	    return false;
  #endif
  
*************** ix86_avx_u128_mode_after (int mode, rtx_
*** 15760,15766 ****
        if (avx_upper_reg_found)
  	return AVX_U128_DIRTY;
  
!       /* If the function desn't clobber any sse registers or only clobber
  	 128-bit part, Then vzeroupper isn't issued before the function exit.
  	 the status not CLEAN but ANY after the function.  */
        const function_abi &abi = insn_callee_abi (insn);
--- 15751,15757 ----
        if (avx_upper_reg_found)
  	return AVX_U128_DIRTY;
  
!       /* If the function doesn't clobber any sse registers or only clobber
  	 128-bit part, Then vzeroupper isn't issued before the function exit.
  	 the status not CLEAN but ANY after the function.  */
        const function_abi &abi = insn_callee_abi (insn);
*************** ix86_output_addr_diff_elt (FILE *file, i
*** 16167,16173 ****
  /* Increase given DISTANCE in half-cycles according to
     dependencies between PREV and NEXT instructions.
     Add 1 half-cycle if there is no dependency and
!    go to next cycle if there is some dependecy.  */
  
  static unsigned int
  increase_distance (rtx_insn *prev, rtx_insn *next, unsigned int distance)
--- 16158,16164 ----
  /* Increase given DISTANCE in half-cycles according to
     dependencies between PREV and NEXT instructions.
     Add 1 half-cycle if there is no dependency and
!    go to next cycle if there is some dependency.  */
  
  static unsigned int
  increase_distance (rtx_insn *prev, rtx_insn *next, unsigned int distance)
*************** ix86_lea_outperforms (rtx_insn *insn, un
*** 16534,16540 ****
       lea priority.  */
    dist_define += split_cost + IX86_LEA_PRIORITY;
  
!   /* If there is no use in memory addess then we just check
       that split cost exceeds AGU stall.  */
    if (dist_use < 0)
      return dist_define > LEA_MAX_STALL;
--- 16525,16531 ----
       lea priority.  */
    dist_define += split_cost + IX86_LEA_PRIORITY;
  
!   /* If there is no use in memory address then we just check
       that split cost exceeds AGU stall.  */
    if (dist_use < 0)
      return dist_define > LEA_MAX_STALL;
*************** ix86_avoid_lea_for_addr (rtx_insn *insn,
*** 16660,16666 ****
       if split lea into a sequence of instructions.  */
    if (parts.base || parts.index)
      {
!       /* Have to use mov instruction if non desctructive
  	 destination form is used.  */
        if (regno1 != regno0 && regno2 != regno0)
  	split_cost += 1;
--- 16651,16657 ----
       if split lea into a sequence of instructions.  */
    if (parts.base || parts.index)
      {
!       /* Have to use mov instruction if non destructive
  	 destination form is used.  */
        if (regno1 != regno0 && regno2 != regno0)
  	split_cost += 1;
*************** ix86_cc_modes_compatible (machine_mode m
*** 17272,17278 ****
  }
  
  /* Return strategy to use for floating-point.  We assume that fcomi is always
!    preferrable where available, since that is also true when looking at size
     (2 bytes, vs. 3 for fnstsw+sahf and at least 5 for fnstsw+test).  */
  
  enum ix86_fpcmp_strategy
--- 17263,17269 ----
  }
  
  /* Return strategy to use for floating-point.  We assume that fcomi is always
!    preferable where available, since that is also true when looking at size
     (2 bytes, vs. 3 for fnstsw+sahf and at least 5 for fnstsw+test).  */
  
  enum ix86_fpcmp_strategy
*************** add_parameter_dependencies (rtx_insn *ca
*** 18310,18316 ****
  	}
        if (insn_is_function_arg (insn, &is_spilled))
  	{
! 	  /* Add output depdendence between two function arguments if chain
  	     of output arguments contains likely spilled HW registers.  */
  	  if (is_spilled)
  	    add_dependence (first_arg, insn, REG_DEP_OUTPUT);
--- 18301,18307 ----
  	}
        if (insn_is_function_arg (insn, &is_spilled))
  	{
! 	  /* Add output dependence between two function arguments if chain
  	     of output arguments contains likely spilled HW registers.  */
  	  if (is_spilled)
  	    add_dependence (first_arg, insn, REG_DEP_OUTPUT);
*************** ix86_data_alignment (tree type, unsigned
*** 18713,18719 ****
    return align;
  }
  
! /* Implememnt TARGET_LOWER_LOCAL_DECL_ALIGNMENT.  */
  static void
  ix86_lower_local_decl_alignment (tree decl)
  {
--- 18704,18710 ----
    return align;
  }
  
! /* Implement TARGET_LOWER_LOCAL_DECL_ALIGNMENT.  */
  static void
  ix86_lower_local_decl_alignment (tree decl)
  {
*************** ix86_gimple_fold_builtin (gimple_stmt_it
*** 20210,20216 ****
  	    {
  	      unsigned sel_idx;
  	      /* Imm[1:0](if VL > 128, then use Imm[3:2],Imm[5:4],Imm[7:6])
! 		 provide 2 select constrols for each element of the
  		 destination.  */
  	      if (imode == E_DFmode)
  		sel_idx = (i & 1) * elems + (i & ~1)
--- 20201,20207 ----
  	    {
  	      unsigned sel_idx;
  	      /* Imm[1:0](if VL > 128, then use Imm[3:2],Imm[5:4],Imm[7:6])
! 		 provide 2 select controls for each element of the
  		 destination.  */
  	      if (imode == E_DFmode)
  		sel_idx = (i & 1) * elems + (i & ~1)
*************** ix86_hard_regno_mode_ok (unsigned int re
*** 21880,21898 ****
    return false;
  }
  
- /* Implement TARGET_INSN_CALLEE_ABI.  */
- 
- const predefined_function_abi &
- ix86_insn_callee_abi (const rtx_insn *insn)
- {
-   unsigned int abi_id = 0;
-   rtx pat = PATTERN (insn);
-   if (vzeroupper_pattern (pat, VOIDmode))
-     abi_id = ABI_VZEROUPPER;
- 
-   return function_abis[abi_id];
- }
- 
  /* Initialize function_abis with corresponding abi_id,
     currently only handle vzeroupper.  */
  void
--- 21871,21876 ----
*************** ix86_expand_avx_vzeroupper (void)
*** 21914,21919 ****
--- 21892,21898 ----
    /* Initialize vzeroupper_abi here.  */
    ix86_initialize_callee_abi (ABI_VZEROUPPER);
    rtx_insn *insn = emit_call_insn (gen_avx_vzeroupper_callee_abi ());
+   CALL_INSN_ABI_ID (insn) = ABI_VZEROUPPER;
    /* Return false for non-local goto in can_nonlocal_goto.  */
    make_reg_eh_region_note (insn, 0, INT_MIN);
    /* Flag used for call_insn indicates it's a fake call.  */
*************** ix86_autovectorize_vector_modes (vector_
*** 26023,26029 ****
    return ix86_vect_compare_costs ? VECT_COMPARE_COSTS : 0;
  }
  
! /* Implemenation of targetm.vectorize.get_mask_mode.  */
  
  static opt_machine_mode
  ix86_get_mask_mode (machine_mode data_mode)
--- 26002,26008 ----
    return ix86_vect_compare_costs ? VECT_COMPARE_COSTS : 0;
  }
  
! /* Implementation of targetm.vectorize.get_mask_mode.  */
  
  static opt_machine_mode
  ix86_get_mask_mode (machine_mode data_mode)
*************** ix86_max_noce_ifcvt_seq_cost (edge e)
*** 26097,26103 ****
    /* For modern machines with deeper pipeline, the penalty for branch
       misprediction could be higher than before to reset the pipeline
       slots. Add parameter br_mispredict_scale as a factor to describe
!      the impact of reseting the pipeline.  */
  
    return BRANCH_COST (true, predictable_p)
  	 * ix86_tune_cost->br_mispredict_scale;
--- 26076,26082 ----
    /* For modern machines with deeper pipeline, the penalty for branch
       misprediction could be higher than before to reset the pipeline
       slots. Add parameter br_mispredict_scale as a factor to describe
!      the impact of resetting the pipeline.  */
  
    return BRANCH_COST (true, predictable_p)
  	 * ix86_tune_cost->br_mispredict_scale;
*************** private:
*** 26183,26188 ****
--- 26162,26169 ----
    unsigned m_num_sse_needed[3];
    /* Number of 256-bit vector permutation.  */
    unsigned m_num_avx256_vec_perm[3];
+   /* Number of 512-bit vector permutation.  */
+   unsigned m_num_avx512_vec_perm[3];
    /* Number of reductions for FMA/DOT_PROD_EXPR/SAD_EXPR  */
    unsigned m_num_reduc[X86_REDUC_LAST];
    /* Don't do unroll if m_prefer_unroll is false, default is true.  */
*************** ix86_vector_costs::ix86_vector_costs (ve
*** 26194,26199 ****
--- 26175,26181 ----
      m_num_gpr_needed (),
      m_num_sse_needed (),
      m_num_avx256_vec_perm (),
+     m_num_avx512_vec_perm (),
      m_num_reduc (),
      m_prefer_unroll (true)
  {}
*************** ix86_vectorize_create_costs (vec_info *v
*** 26206,26211 ****
--- 26188,26234 ----
    return new ix86_vector_costs (vinfo, costing_for_scalar);
  }
  
+ /* Return true if a vec_perm should be counted as a cross-lane vector
+    permutation for a vector with NUNITS elements.  */
+ static bool
+ ix86_count_cross_lane_perm_p (vec_info *vinfo, slp_tree node, unsigned nunits)
+ {
+   /* TODO: For loop vectorization with no SLP load-permutation
+      information, conservatively treat these perms as cross-lane.
+      Repeated-index cases such as {0, 0, 0, 0} are emitted as
+      separate vec_perm_exprs for each index, so we cannot reliably
+      separate false positives from real cross-lane shuffles yet.  */
+   if (!node
+       || !SLP_TREE_LOAD_PERMUTATION (node).exists ()
+       || !is_a<bb_vec_info> (vinfo))
+     return true;
+ 
+   unsigned half = nunits / 2;
+   bool allsame = true;
+   unsigned first = SLP_TREE_LOAD_PERMUTATION (node)[0];
+   bool cross_lane_p = false;
+ 
+   for (unsigned i = 0; i != SLP_TREE_LANES (node); i++)
+     {
+       unsigned tmp = SLP_TREE_LOAD_PERMUTATION (node)[i];
+       /* allsame is just a broadcast.  */
+       if (tmp != first)
+ 	allsame = false;
+ 
+       /* The load permutation can cover multiple vectors, so compare
+ 	 source and destination lanes modulo NUNITS.  */
+       tmp = tmp & (nunits - 1);
+       unsigned index = i & (nunits - 1);
+       if ((index < half && tmp >= half) || (index >= half && tmp < half))
+ 	cross_lane_p = true;
+ 
+       if (!allsame && cross_lane_p)
+ 	return true;
+     }
+ 
+   return false;
+ }
+ 
  unsigned
  ix86_vector_costs::add_stmt_cost (int count, vect_cost_for_stmt kind,
  				  stmt_vec_info stmt_info, slp_tree node,
*************** ix86_vector_costs::add_stmt_cost (int co
*** 26363,26369 ****
  		 p = a < b
  		 c = p ? x : y
  	       and we will account first statement as setcc.  Exception is when
! 	       p is loaded from memory as bool and then we will not acocunt
  	       the compare, but there is no way to check for this.  */
  
  	    int ninsns = TARGET_SSE4_1 ? 1 : 3;
--- 26386,26392 ----
  		 p = a < b
  		 c = p ? x : y
  	       and we will account first statement as setcc.  Exception is when
! 	       p is loaded from memory as bool and then we will not account
  	       the compare, but there is no way to check for this.  */
  
  	    int ninsns = TARGET_SSE4_1 ? 1 : 3;
*************** ix86_vector_costs::add_stmt_cost (int co
*** 26771,26828 ****
    if (stmt_cost == -1)
      stmt_cost = ix86_default_vector_cost (kind, mode);
  
!   if (kind == vec_perm && vectype
!       && GET_MODE_SIZE (TYPE_MODE (vectype)) == 32
!       /* BIT_FIELD_REF <vect_**, 64, 0> 0 times vec_perm costs 0 in body.  */
!       && count != 0)
      {
!       bool real_perm = true;
        unsigned nunits = TYPE_VECTOR_SUBPARTS (vectype);
  
!       if (node
! 	  && SLP_TREE_LOAD_PERMUTATION (node).exists ()
! 	  /* Loop vectorization will have 4 times vec_perm
! 	     with index as {0, 0, 0, 0}.
! 	     But it actually generates
! 	     vec_perm_expr <vect, vect, 0, 0, 0, 0>
! 	     vec_perm_expr <vect, vect, 1, 1, 1, 1>
! 	     vec_perm_expr <vect, vect, 2, 2, 2, 2>
! 	     Need to be handled separately.  */
! 	  && is_a <bb_vec_info> (m_vinfo))
! 	{
! 	  unsigned half = nunits / 2;
! 	  unsigned i = 0;
! 	  bool allsame = true;
! 	  unsigned first = SLP_TREE_LOAD_PERMUTATION (node)[0];
! 	  bool cross_lane_p = false;
! 	  for (i = 0 ; i != SLP_TREE_LANES (node); i++)
! 	    {
! 	      unsigned tmp = SLP_TREE_LOAD_PERMUTATION (node)[i];
! 	      /* allsame is just a broadcast.  */
! 	      if (tmp != first)
! 		allsame = false;
! 
! 	      /* 4 times vec_perm with number of lanes multiple of nunits.  */
! 	      tmp = tmp & (nunits - 1);
! 	      unsigned index = i & (nunits - 1);
! 	      if ((index < half && tmp >= half)
! 		  || (index >= half && tmp < half))
! 		cross_lane_p = true;
! 
! 	      if (!allsame && cross_lane_p)
! 		break;
! 	    }
! 
! 	  if (i == SLP_TREE_LANES (node))
! 	    real_perm = false;
! 	}
  
!       if (real_perm)
  	{
! 	  m_num_avx256_vec_perm[where] += count;
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    {
! 	      fprintf (dump_file, "Detected avx256 cross-lane permutation: ");
  	      if (stmt_info)
  		print_gimple_expr (dump_file, stmt_info->stmt, 0, TDF_SLIM);
  	      fprintf (dump_file, " \n");
--- 26794,26818 ----
    if (stmt_cost == -1)
      stmt_cost = ix86_default_vector_cost (kind, mode);
  
!   /* BIT_FIELD_REF <vect_**, 64, 0> with count 0 costs 0 in body.  */
!   if (kind == vec_perm && vectype && count != 0)
      {
!       unsigned vec_size = GET_MODE_SIZE (TYPE_MODE (vectype));
        unsigned nunits = TYPE_VECTOR_SUBPARTS (vectype);
+       unsigned *num_vec_perm = NULL;
  
!       if (vec_size == 32)
! 	num_vec_perm = m_num_avx256_vec_perm;
!       else if (vec_size == 64)
! 	num_vec_perm = m_num_avx512_vec_perm;
  
!       if (num_vec_perm && ix86_count_cross_lane_perm_p (m_vinfo, node, nunits))
  	{
! 	  num_vec_perm[where] += count;
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    {
! 	      fprintf (dump_file,
! 		       "Detected avx%u cross-lane permutation: ", vec_size * 8);
  	      if (stmt_info)
  		print_gimple_expr (dump_file, stmt_info->stmt, 0, TDF_SLIM);
  	      fprintf (dump_file, " \n");
*************** ix86_vector_costs::finish_cost (const ve
*** 26883,26889 ****
      {
        /* We are currently not asking the vectorizer to compare costs
  	 between different vector mode sizes.  When using predication
! 	 that will end up always choosing the prefered mode size even
  	 if there's a smaller mode covering all lanes.  Test for this
  	 situation and artificially reject the larger mode attempt.
  	 ???  We currently lack masked ops for sub-SSE sized modes,
--- 26873,26879 ----
      {
        /* We are currently not asking the vectorizer to compare costs
  	 between different vector mode sizes.  When using predication
! 	 that will end up always choosing the preferred mode size even
  	 if there's a smaller mode covering all lanes.  Test for this
  	 situation and artificially reject the larger mode attempt.
  	 ???  We currently lack masked ops for sub-SSE sized modes,
*************** ix86_vector_costs::finish_cost (const ve
*** 26945,26950 ****
--- 26935,26944 ----
  	&& TARGET_AVX256_AVOID_VEC_PERM)
        m_costs[i] = INT_MAX;
  
+   for (int i = 0; i != 3; i++)
+     if (m_num_avx512_vec_perm[i] && TARGET_AVX512_AVOID_VEC_PERM)
+       m_costs[i] = INT_MAX;
+ 
    /* When X86_TUNE_AVX512_TWO_EPILOGUES is enabled arrange for both
       a AVX2 and a SSE epilogue for AVX512 vectorized loops.  */
    if (loop_vinfo
*************** ix86_optab_supported_p (int op, machine_
*** 27711,27717 ****
     to use %fs and %gs segment prefixes.  Therefore:
  
      (a) All address spaces have the same modes,
!     (b) All address spaces have the same addresss forms,
      (c) While %fs and %gs are technically subsets of the generic
          address space, they are probably not subsets of each other.
      (d) Since we have no access to the segment base register values
--- 27705,27711 ----
     to use %fs and %gs segment prefixes.  Therefore:
  
      (a) All address spaces have the same modes,
!     (b) All address spaces have the same address forms,
      (c) While %fs and %gs are technically subsets of the generic
          address space, they are probably not subsets of each other.
      (d) Since we have no access to the segment base register values
*************** ix86_push_rounding (poly_int64 bytes)
*** 27863,27869 ****
  }
  
  /* Use 8 bits metadata start from bit48 for LAM_U48,
!    6 bits metadat start from bit57 for LAM_U57.  */
  #define IX86_HWASAN_SHIFT (ix86_lam_type == lam_u48		\
  			   ? 48					\
  			   : (ix86_lam_type == lam_u57 ? 57 : 0))
--- 27857,27863 ----
  }
  
  /* Use 8 bits metadata start from bit48 for LAM_U48,
!    6 bits metadata start from bit57 for LAM_U57.  */
  #define IX86_HWASAN_SHIFT (ix86_lam_type == lam_u48		\
  			   ? 48					\
  			   : (ix86_lam_type == lam_u57 ? 57 : 0))
*************** static const scoped_attribute_specs *con
*** 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
--- 28513,28518 ----
*************** ix86_libgcc_floating_mode_supported_p
*** 28814,28822 ****
  #define TARGET_HARD_REGNO_CALL_PART_CLOBBERED \
    ix86_hard_regno_call_part_clobbered
  
- #undef TARGET_INSN_CALLEE_ABI
- #define TARGET_INSN_CALLEE_ABI ix86_insn_callee_abi
- 
  #undef TARGET_CAN_CHANGE_MODE_CLASS
  #define TARGET_CAN_CHANGE_MODE_CLASS ix86_can_change_mode_class
  
--- 28806,28811 ----
diff -Nrcpad gcc-17-20260531/gcc/config/i386/i386.h gcc-17-20260607/gcc/config/i386/i386.h
*** gcc-17-20260531/gcc/config/i386/i386.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/i386.h	Sun Jun  7 22:32:06 2026
*************** extern unsigned char ix86_tune_features[
*** 480,485 ****
--- 480,487 ----
  	ix86_tune_features[X86_TUNE_AVX256_AVOID_VEC_PERM]
  #define TARGET_AVX512_SPLIT_REGS \
  	ix86_tune_features[X86_TUNE_AVX512_SPLIT_REGS]
+ #define TARGET_AVX512_AVOID_VEC_PERM \
+ 	ix86_tune_features[X86_TUNE_AVX512_AVOID_VEC_PERM]
  #define TARGET_GENERAL_REGS_SSE_SPILL \
  	ix86_tune_features[X86_TUNE_GENERAL_REGS_SSE_SPILL]
  #define TARGET_AVOID_MEM_OPND_FOR_CMOVE \
*************** extern unsigned char ix86_tune_features[
*** 511,517 ****
  	ix86_tune_features[X86_TUNE_ALIGN_TIGHT_LOOPS]
  #define TARGET_SSE_REDUCTION_PREFER_PSHUF \
  	ix86_tune_features[X86_TUNE_SSE_REDUCTION_PREFER_PSHUF]
! 
  
  /* Feature tests against the various architecture variations.  */
  enum ix86_arch_indices {
--- 513,522 ----
  	ix86_tune_features[X86_TUNE_ALIGN_TIGHT_LOOPS]
  #define TARGET_SSE_REDUCTION_PREFER_PSHUF \
  	ix86_tune_features[X86_TUNE_SSE_REDUCTION_PREFER_PSHUF]
! #define TARGET_DISABLE_SETZUCC \
! 	ix86_tune_features[X86_TUNE_DISABLE_SETZUCC]
! #define TARGET_ENABLE_NDD_MEM \
! 	ix86_tune_features[X86_TUNE_ENABLE_NDD_MEM]
  
  /* Feature tests against the various architecture variations.  */
  enum ix86_arch_indices {
*************** extern const char *host_detect_local_cpu
*** 791,797 ****
  
  /* 1 if -mstackrealign should be turned on by default.  It will
     generate an alternate prologue and epilogue that realigns the
!    runtime stack if nessary.  This supports mixing codes that keep a
     4-byte aligned stack, as specified by i386 psABI, with codes that
     need a 16-byte aligned stack, as required by SSE instructions.  */
  #define STACK_REALIGN_DEFAULT 0
--- 796,802 ----
  
  /* 1 if -mstackrealign should be turned on by default.  It will
     generate an alternate prologue and epilogue that realigns the
!    runtime stack if necessary.  This supports mixing codes that keep a
     4-byte aligned stack, as specified by i386 psABI, with codes that
     need a 16-byte aligned stack, as required by SSE instructions.  */
  #define STACK_REALIGN_DEFAULT 0
*************** extern const char *host_detect_local_cpu
*** 802,808 ****
  /* According to Windows x64 software convention, the maximum stack allocatable
     in the prologue is 4G - 8 bytes.  Furthermore, there is a limited set of
     instructions allowed to adjust the stack pointer in the epilog, forcing the
!    use of frame pointer for frames larger than 2 GB.  This theorical limit
     is reduced by 256, an over-estimated upper bound for the stack use by the
     prologue.
     We define only one threshold for both the prolog and the epilog.  When the
--- 807,813 ----
  /* According to Windows x64 software convention, the maximum stack allocatable
     in the prologue is 4G - 8 bytes.  Furthermore, there is a limited set of
     instructions allowed to adjust the stack pointer in the epilog, forcing the
!    use of frame pointer for frames larger than 2 GB.  This theoretical limit
     is reduced by 256, an over-estimated upper bound for the stack use by the
     prologue.
     We define only one threshold for both the prolog and the epilog.  When the
*************** enum reg_class
*** 1628,1634 ****
  
     FIXME: Unlike earlier implementations, the size of unwind info seems to
     actually grow with accumulation.  Is that because accumulated args
!    unwind info became unnecesarily bloated?
  
     With the 64-bit MS ABI, we can generate correct code with or without
     accumulated args, but because of OUTGOING_REG_PARM_STACK_SPACE the code
--- 1633,1639 ----
  
     FIXME: Unlike earlier implementations, the size of unwind info seems to
     actually grow with accumulation.  Is that because accumulated args
!    unwind info became unnecessarily bloated?
  
     With the 64-bit MS ABI, we can generate correct code with or without
     accumulated args, but because of OUTGOING_REG_PARM_STACK_SPACE the code
diff -Nrcpad gcc-17-20260531/gcc/config/i386/i386.md gcc-17-20260607/gcc/config/i386/i386.md
*** gcc-17-20260531/gcc/config/i386/i386.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/i386.md	Sun Jun  7 22:32:06 2026
***************
*** 193,199 ****
    ;; For CRC32 support
    UNSPEC_CRC32
  
!   ;; For LZCNT suppoprt
    UNSPEC_LZCNT
  
    ;; For BMI support
--- 193,199 ----
    ;; For CRC32 support
    UNSPEC_CRC32
  
!   ;; For LZCNT support
    UNSPEC_LZCNT
  
    ;; For BMI support
***************
*** 380,386 ****
     (ROUND_NO_EXC		0x8)
    ])
  
! ;; Constants to represent AVX512F embeded rounding
  (define_constants
    [(ROUND_NEAREST_INT			0)
     (ROUND_NEG_INF			1)
--- 380,386 ----
     (ROUND_NO_EXC		0x8)
    ])
  
! ;; Constants to represent AVX512F embedded rounding
  (define_constants
    [(ROUND_NEAREST_INT			0)
     (ROUND_NEG_INF			1)
***************
*** 1083,1090 ****
  ;; Base name for insn mnemonic.
  (define_code_attr rotate [(rotate "rol") (rotatert "ror")])
  
! ;; Counter rotate.
! (define_code_attr crotate [(rotate "rotatert") (rotatert "rotate")])
  
  ;; Mapping of abs neg operators
  (define_code_iterator absneg [abs neg])
--- 1083,1090 ----
  ;; Base name for insn mnemonic.
  (define_code_attr rotate [(rotate "rol") (rotatert "ror")])
  
! ;; Mapping to the inverse rotation RTL code.
! (define_code_attr inv_rotate [(rotate "rotatert") (rotatert "rotate")])
  
  ;; Mapping of abs neg operators
  (define_code_iterator absneg [abs neg])
***************
*** 1910,1916 ****
    DONE;
  })
  
! ;; For conditonal compare, the middle-end hook will convert
  ;; CCmode to sub-CCmode using SELECT_CC_MODE macro and try
  ;; to find cstore<submodes> in optab. Add ALL_CC to support
  ;; the cstore after ccmp sequence.
--- 1910,1916 ----
    DONE;
  })
  
! ;; For conditional compare, the middle-end hook will convert
  ;; CCmode to sub-CCmode using SELECT_CC_MODE macro and try
  ;; to find cstore<submodes> in optab. Add ALL_CC to support
  ;; the cstore after ccmp sequence.
***************
*** 6587,6596 ****
  })
  
  (define_insn_and_split "*add<dwi>3_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r,&r,&r")
  	(plus:<DWI>
! 	  (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,ro,r,ro,jO,r")
! 	  (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,r,<di>,K,<di>,r")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (PLUS, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
--- 6587,6596 ----
  })
  
  (define_insn_and_split "*add<dwi>3_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r,&r,&r,&r")
  	(plus:<DWI>
! 	  (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,o,r,r,o,jO,r")
! 	  (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,r,<di>,K,K,<di>,r")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (PLUS, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 6629,6642 ****
        DONE;
      }
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")])
  
  (define_insn_and_split "*add<dwi>3_doubleword_zext"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=r,o,&r,&r")
  	(plus:<DWI>
  	  (zero_extend:<DWI>
! 	    (match_operand:DWIH 2 "nonimmediate_operand" "rm,r,rm,r"))
! 	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,r,o")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (UNKNOWN, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
--- 6629,6646 ----
        DONE;
      }
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "2,5,6")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn_and_split "*add<dwi>3_doubleword_zext"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=r,o,&r,&r,&r")
  	(plus:<DWI>
  	  (zero_extend:<DWI>
! 	    (match_operand:DWIH 2 "nonimmediate_operand" "rm,r,r,m,r"))
! 	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,r,r,o")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (UNKNOWN, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 6655,6661 ****
  		     (const_int 0)))
  	      (clobber (reg:CC FLAGS_REG))])]
   "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[3]);"
!  [(set_attr "isa" "*,*,apx_ndd,apx_ndd")])
  
  (define_insn_and_split "*add<dwi>3_doubleword_concat"
    [(set (match_operand:<DWI> 0 "register_operand" "=&r")
--- 6659,6669 ----
  		     (const_int 0)))
  	      (clobber (reg:CC FLAGS_REG))])]
   "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[3]);"
!  [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!   (set (attr "preferred_for_speed")
!     (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn_and_split "*add<dwi>3_doubleword_concat"
    [(set (match_operand:<DWI> 0 "register_operand" "=&r")
***************
*** 6738,6747 ****
  	(clobber (reg:CC FLAGS_REG))])
  
  (define_insn "*add<mode>_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=r<nf_add_mem_constraint>,r<nf_mem_constraint>,r,r,r,r,r,r")
  	(plus:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "%0,0,0,r,r,rje,jM,r")
! 	  (match_operand:SWI48 2 "x86_64_general_operand" "r,e,BM,0,le,r,e,BM")))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)
    && <nf_condition>"
  {
--- 6746,6755 ----
  	(clobber (reg:CC FLAGS_REG))])
  
  (define_insn "*add<mode>_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=r<nf_add_mem_constraint>,r<nf_mem_constraint>,r,r,r,r,r,r,r")
  	(plus:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "%0,0,0,r,r,r,je,jM,r")
! 	  (match_operand:SWI48 2 "x86_64_general_operand" "r,e,BM,0,le,r,r,e,BM")))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)
    && <nf_condition>"
  {
***************
*** 6782,6788 ****
  		     : "<nf_prefix>add{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,*,*,apx_ndd,apx_ndd,apx_ndd")
     (set (attr "type")
       (cond [(eq_attr "alternative" "4")
                (const_string "lea")
--- 6790,6800 ----
  		     : "<nf_prefix>add{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "6,7,8")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "4")
                (const_string "lea")
***************
*** 6803,6812 ****
  ;; its upper bits [63:OSIZE] zeroed.
  
  (define_insn "*addqi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
! 	  (plus:QI (match_operand:QI 1 "nonimmediate_operand" "%rm,r")
! 		   (match_operand:QI 2 "general_operand" "rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
  {
--- 6815,6824 ----
  ;; its upper bits [63:OSIZE] zeroed.
  
  (define_insn "*addqi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI248x
! 	  (plus:QI (match_operand:QI 1 "nonimmediate_operand" "%r,m,r")
! 		   (match_operand:QI 2 "general_operand" "rn,rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
  {
***************
*** 6827,6833 ****
        return "<nf_prefix>add{b}\t{%2, %1, %b0|%b0, %1, %2}";
      }
  }
!   [(set (attr "type")
       (cond [(match_operand:QI 2 "incdec_operand")
  	      (const_string "incdec")
  	   ]
--- 6839,6849 ----
        return "<nf_prefix>add{b}\t{%2, %1, %b0|%b0, %1, %2}";
      }
  }
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set (attr "type")
       (cond [(match_operand:QI 2 "incdec_operand")
  	      (const_string "incdec")
  	   ]
***************
*** 6841,6850 ****
     (set_attr "mode" "QI")])
  
  (define_insn "*addhi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
! 	  (plus:HI (match_operand:HI 1 "nonimmediate_operand" "%rm,r")
! 		   (match_operand:HI 2 "general_operand" "rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
  {
--- 6857,6866 ----
     (set_attr "mode" "QI")])
  
  (define_insn "*addhi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI48x
! 	  (plus:HI (match_operand:HI 1 "nonimmediate_operand" "%r,m,r")
! 		   (match_operand:HI 2 "general_operand" "rn,rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
  {
***************
*** 6865,6871 ****
        return "<nf_prefix>add{w}\t{%2, %1, %w0|%w0, %1, %2}";
      }
  }
!   [(set (attr "type")
       (cond [(match_operand:QI 2 "incdec_operand")
  	      (const_string "incdec")
  	   ]
--- 6881,6891 ----
        return "<nf_prefix>add{w}\t{%2, %1, %w0|%w0, %1, %2}";
      }
  }
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set (attr "type")
       (cond [(match_operand:QI 2 "incdec_operand")
  	      (const_string "incdec")
  	   ]
***************
*** 6885,6894 ****
  ;; patterns constructed from addsi_1 to match.
  
  (define_insn "addsi_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r,r")
  	(zero_extend:DI
! 	  (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,r,r,r,rm,rjM")
! 		   (match_operand:SI 2 "x86_64_general_operand" "rBMe,0,le,rBMe,r,e"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
--- 6905,6914 ----
  ;; patterns constructed from addsi_1 to match.
  
  (define_insn "addsi_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r,r,r")
  	(zero_extend:DI
! 	  (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,r,r,r,r,m,jM")
! 		   (match_operand:SI 2 "x86_64_general_operand" "rBMe,0,le,BM,re,r,e"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
***************
*** 6924,6930 ****
  		     : "add{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd")
     (set (attr "type")
       (cond [(eq_attr "alternative" "2")
  	      (const_string "lea")
--- 6944,6954 ----
  		     : "add{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,5,6")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "2")
  	      (const_string "lea")
***************
*** 6940,6948 ****
     (set_attr "mode" "SI")])
  
  (define_insn "*addhi_1<nf_name>"
!   [(set (match_operand:HI 0 "nonimmediate_operand" "=rm,r,r,Yp,r,r")
! 	(plus:HI (match_operand:HI 1 "nonimmediate_operand" "%0,0,r,Yp,rm,r")
! 		 (match_operand:HI 2 "general_operand" "rn,m,0,ln,rn,m")))]
    "ix86_binary_operator_ok (PLUS, HImode, operands, TARGET_APX_NDD)
    && <nf_condition>"
  {
--- 6964,6972 ----
     (set_attr "mode" "SI")])
  
  (define_insn "*addhi_1<nf_name>"
!   [(set (match_operand:HI 0 "nonimmediate_operand" "=rm,r,r,Yp,r,r,r")
! 	(plus:HI (match_operand:HI 1 "nonimmediate_operand" "%0,0,r,Yp,r,m,r")
! 		 (match_operand:HI 2 "general_operand" "rn,m,0,ln,rn,rn,m")))]
    "ix86_binary_operator_ok (PLUS, HImode, operands, TARGET_APX_NDD)
    && <nf_condition>"
  {
***************
*** 6980,6986 ****
  		     : "<nf_prefix>add{w}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,*,apx_ndd,apx_ndd")
     (set (attr "type")
       (cond [(eq_attr "alternative" "3")
                (const_string "lea")
--- 7004,7014 ----
  		     : "<nf_prefix>add{w}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "5,6")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "3")
                (const_string "lea")
***************
*** 6994,7010 ****
  	(const_string "1")
  	(const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "HI,HI,HI,SI,HI,HI")])
  
  (define_insn "*addqi_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,q,r,r,Yp,r,r")
! 	(plus:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,q,0,r,Yp,rm,r")
! 		 (match_operand:QI 2 "general_operand" "qn,m,0,rn,0,ln,rn,m")))]
    "ix86_binary_operator_ok (PLUS, QImode, operands, TARGET_APX_NDD)
    && <nf_condition>"
  {
-   bool widen = (get_attr_mode (insn) != MODE_QI);
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
    switch (get_attr_type (insn))
      {
      case TYPE_LEA:
--- 7022,7038 ----
  	(const_string "1")
  	(const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "HI,HI,HI,SI,HI,HI,HI")])
  
  (define_insn "*addqi_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,q,r,r,Yp,r,r,r")
! 	(plus:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,q,0,r,Yp,r,m,r")
! 		 (match_operand:QI 2 "general_operand" "qn,m,0,rn,0,ln,rn,rn,m")))]
    "ix86_binary_operator_ok (PLUS, QImode, operands, TARGET_APX_NDD)
    && <nf_condition>"
  {
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
+   bool widen = (get_attr_mode (insn) != MODE_QI);
    switch (get_attr_type (insn))
      {
      case TYPE_LEA:
***************
*** 7049,7055 ****
  		     : "<nf_prefix>add{b}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,*,*,*,apx_ndd,apx_ndd")
     (set (attr "type")
       (cond [(eq_attr "alternative" "5")
                (const_string "lea")
--- 7077,7087 ----
  		     : "<nf_prefix>add{b}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,*,*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "7,8")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "5")
                (const_string "lea")
***************
*** 7063,7069 ****
  	(const_string "1")
  	(const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "QI,QI,QI,SI,SI,SI,QI,QI")
     ;; Potential partial reg stall on alternatives 3 and 4.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "3,4")
--- 7095,7101 ----
  	(const_string "1")
  	(const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "QI,QI,QI,SI,SI,SI,QI,QI,QI")
     ;; Potential partial reg stall on alternatives 3 and 4.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "3,4")
***************
*** 7247,7256 ****
    [(set (reg FLAGS_REG)
  	(compare
  	  (plus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,0,<r>,rm,r")
! 	    (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,0,r<i>,<m>"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,<r>,r,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCGOCmode)
     && ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
--- 7279,7288 ----
    [(set (reg FLAGS_REG)
  	(compare
  	  (plus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,0,<r>,r,m,r")
! 	    (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,0,r<i>,r<i>,<m>"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,<r>,r,r,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCGOCmode)
     && ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
***************
*** 7281,7287 ****
  		     : "add{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd")
     (set (attr "type")
       (if_then_else (match_operand:SWI 2 "incdec_operand")
  	(const_string "incdec")
--- 7313,7323 ----
  		     : "add{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (if_then_else (match_operand:SWI 2 "incdec_operand")
  	(const_string "incdec")
***************
*** 7297,7306 ****
  (define_insn "*addsi_2_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,r,r,rm")
! 		   (match_operand:SI 2 "x86_64_general_operand" "rBMe,0,rBMe,re"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode)
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
--- 7333,7342 ----
  (define_insn "*addsi_2_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (plus:SI (match_operand:SI 1 "nonimmediate_operand" "%0,r,r,r,m")
! 		   (match_operand:SI 2 "x86_64_general_operand" "rBMe,0,re,BM,re"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
  	(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode)
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
***************
*** 7331,7337 ****
  		     : "add{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set (attr "type")
       (if_then_else (match_operand:SI 2 "incdec_operand")
  	(const_string "incdec")
--- 7367,7377 ----
  		     : "add{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (if_then_else (match_operand:SI 2 "incdec_operand")
  	(const_string "incdec")
***************
*** 7346,7354 ****
  (define_insn "*add<mode>_3"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (neg:SWI (match_operand:SWI 2 "<general_operand>" "<g>,0,<g>,re"))
! 	  (match_operand:SWI 1 "nonimmediate_operand" "%0,<r>,r,rm")))
!    (clobber (match_scratch:SWI 0 "=<r>,<r>,r,r"))]
    "ix86_match_ccmode (insn, CCZmode)
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
  {
--- 7386,7394 ----
  (define_insn "*add<mode>_3"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (neg:SWI (match_operand:SWI 2 "<general_operand>" "<g>,0,<r><i>,m,r<i>"))
! 	  (match_operand:SWI 1 "nonimmediate_operand" "%0,<r>,r,r,m")))
!    (clobber (match_scratch:SWI 0 "=<r>,<r>,r,r,r"))]
    "ix86_match_ccmode (insn, CCZmode)
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
  {
***************
*** 7378,7384 ****
                       : "add{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set (attr "type")
       (if_then_else (match_operand:SWI 2 "incdec_operand")
  	(const_string "incdec")
--- 7418,7428 ----
                       : "add{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (if_then_else (match_operand:SWI 2 "incdec_operand")
  	(const_string "incdec")
***************
*** 7394,7402 ****
  (define_insn "*addsi_3_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (neg:SI (match_operand:SI 2 "x86_64_general_operand" "rBMe,0,rBMe,re"))
! 	  (match_operand:SI 1 "nonimmediate_operand" "%0,r,r,rm")))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCZmode)
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
--- 7438,7446 ----
  (define_insn "*addsi_3_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (neg:SI (match_operand:SI 2 "x86_64_general_operand" "rBMe,0,re,BM,re"))
! 	  (match_operand:SI 1 "nonimmediate_operand" "%0,r,r,r,m")))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
  	(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCZmode)
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
***************
*** 7425,7431 ****
  		     : "add{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set (attr "type")
       (if_then_else (match_operand:SI 2 "incdec_operand")
  	(const_string "incdec")
--- 7469,7479 ----
  		     : "add{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (if_then_else (match_operand:SI 2 "incdec_operand")
  	(const_string "incdec")
***************
*** 7530,7539 ****
    [(set (reg FLAGS_REG)
  	(compare
  	  (plus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,<r>,r,rm")
! 	    (match_operand:SWI 2 "<general_operand>" "<g>,0,<g>,re"))
  	  (const_int 0)))
!    (clobber (match_scratch:SWI 0 "=<r>,<r>,r,r"))]
    "ix86_match_ccmode (insn, CCGOCmode)
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
  {
--- 7578,7587 ----
    [(set (reg FLAGS_REG)
  	(compare
  	  (plus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,<r>,r,r,m")
! 	    (match_operand:SWI 2 "<general_operand>" "<g>,0,<r><i>,m,r<i>"))
  	  (const_int 0)))
!    (clobber (match_scratch:SWI 0 "=<r>,<r>,r,r,r"))]
    "ix86_match_ccmode (insn, CCGOCmode)
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
  {
***************
*** 7563,7569 ****
  		     : "add{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set (attr "type")
       (if_then_else (match_operand:SWI 2 "incdec_operand")
  	(const_string "incdec")
--- 7611,7621 ----
  		     : "add{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (if_then_else (match_operand:SWI 2 "incdec_operand")
  	(const_string "incdec")
***************
*** 7765,7784 ****
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (plus:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 1 "nonimmediate_operand" "%0,0,rm,r"))
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 2 "<general_sext_operand>" "<r>We,m,rWe,m")))
  		(sign_extend:<DWI>
  		   (plus:SWI (match_dup 1) (match_dup 2)))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
     add{<imodesuffix>}\t{%2, %0|%0, %2}
     add{<imodesuffix>}\t{%2, %0|%0, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
--- 7817,7841 ----
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (plus:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 1 "nonimmediate_operand" "%0,0,r,r,m"))
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 2 "<general_sext_operand>" "<r>We,m,rWe,m,rWe")))
  		(sign_extend:<DWI>
  		   (plus:SWI (match_dup 1) (match_dup 2)))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
     add{<imodesuffix>}\t{%2, %0|%0, %2}
     add{<imodesuffix>}\t{%2, %0|%0, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
***************
*** 7786,7806 ****
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (plus:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 1 "nonimmediate_operand" "0,rm"))
  		   (match_operand:<DWI> 3 "const_int_operand"))
  		(sign_extend:<DWI>
  		   (plus:SWI
  		     (match_dup 1)
! 		     (match_operand:SWI 2 "x86_64_immediate_operand" "<i>,<i>")))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)
     && CONST_INT_P (operands[2])
     && INTVAL (operands[2]) == INTVAL (operands[3])"
    "@
    add{<imodesuffix>}\t{%2, %0|%0, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")
     (set (attr "length_immediate")
--- 7843,7868 ----
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (plus:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 1 "nonimmediate_operand" "0,r,m"))
  		   (match_operand:<DWI> 3 "const_int_operand"))
  		(sign_extend:<DWI>
  		   (plus:SWI
  		     (match_dup 1)
! 		     (match_operand:SWI 2 "x86_64_immediate_operand" "<i>,<i>,<i>")))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)
     && CONST_INT_P (operands[2])
     && INTVAL (operands[2]) == INTVAL (operands[3])"
    "@
    add{<imodesuffix>}\t{%2, %0|%0, %2}
+   add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")
     (set (attr "length_immediate")
***************
*** 7818,7829 ****
  	(eq:CCO
  	  (plus:<QPWI>
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,ro,r"))
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 2 "nonimmediate_operand" "r,o,r,o")))
  	  (sign_extend:<QPWI>
  	    (plus:<DWI> (match_dup 1) (match_dup 2)))))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r")
  	(plus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
--- 7880,7891 ----
  	(eq:CCO
  	  (plus:<QPWI>
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,r,o,r"))
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 2 "nonimmediate_operand" "r,o,r,r,o")))
  	  (sign_extend:<QPWI>
  	    (plus:<DWI> (match_dup 1) (match_dup 2)))))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r")
  	(plus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 7856,7875 ****
  {
    split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd")])
  
  (define_insn_and_split "*addv<dwi>4_doubleword_1"
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO
  	  (plus:<QPWI>
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 1 "nonimmediate_operand" "%0,rjO"))
! 	    (match_operand:<QPWI> 3 "const_scalar_int_operand" "n,n"))
  	  (sign_extend:<QPWI>
  	    (plus:<DWI>
  	      (match_dup 1)
! 	      (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "<di>,<di>")))))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,&r")
  	(plus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <DWI>mode, operands, TARGET_APX_NDD)
     && CONST_SCALAR_INT_P (operands[2])
--- 7918,7941 ----
  {
    split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn_and_split "*addv<dwi>4_doubleword_1"
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO
  	  (plus:<QPWI>
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 1 "nonimmediate_operand" "%0,r,jO"))
! 	    (match_operand:<QPWI> 3 "const_scalar_int_operand" "n,n,n"))
  	  (sign_extend:<QPWI>
  	    (plus:<DWI>
  	      (match_dup 1)
! 	      (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "<di>,<di>,<di>")))))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,&r,&r")
  	(plus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <DWI>mode, operands, TARGET_APX_NDD)
     && CONST_SCALAR_INT_P (operands[2])
***************
*** 7912,7918 ****
        DONE;
      }
  }
! [(set_attr "isa" "*,apx_ndd")])
  
  (define_insn "*addv<mode>4_overflow_1"
    [(set (reg:CCO FLAGS_REG)
--- 7978,7988 ----
        DONE;
      }
  }
! [(set_attr "isa" "*,apx_ndd,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn "*addv<mode>4_overflow_1"
    [(set (reg:CCO FLAGS_REG)
***************
*** 7922,7930 ****
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)])
  	      (sign_extend:<DWI>
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,0,rm,r")))
  	    (sign_extend:<DWI>
! 	      (match_operand:SWI 2 "<general_sext_operand>" "rWe,m,rWe,m")))
  	  (sign_extend:<DWI>
  	    (plus:SWI
  	      (plus:SWI
--- 7992,8000 ----
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)])
  	      (sign_extend:<DWI>
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,0,r,r,m")))
  	    (sign_extend:<DWI>
! 	      (match_operand:SWI 2 "<general_sext_operand>" "rWe,m,rWe,m,rWe")))
  	  (sign_extend:<DWI>
  	    (plus:SWI
  	      (plus:SWI
***************
*** 7932,7938 ****
  		  [(match_dup 3) (const_int 0)])
  		(match_dup 1))
  	      (match_dup 2)))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=rm,r,r,r")
  	(plus:SWI
  	  (plus:SWI
  	    (match_op_dup 5 [(match_dup 3) (const_int 0)])
--- 8002,8008 ----
  		  [(match_dup 3) (const_int 0)])
  		(match_dup 1))
  	      (match_dup 2)))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=rm,r,r,r,r")
  	(plus:SWI
  	  (plus:SWI
  	    (match_op_dup 5 [(match_dup 3) (const_int 0)])
***************
*** 7943,7950 ****
     adc{<imodesuffix>}\t{%2, %0|%0, %2}
     adc{<imodesuffix>}\t{%2, %0|%0, %2}
     adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
--- 8013,8025 ----
     adc{<imodesuffix>}\t{%2, %0|%0, %2}
     adc{<imodesuffix>}\t{%2, %0|%0, %2}
     adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
***************
*** 7956,7971 ****
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)])
  	      (sign_extend:<DWI>
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,rm")))
! 	    (match_operand:<DWI> 6 "const_int_operand" "n,n"))
  	  (sign_extend:<DWI>
  	    (plus:SWI
  	      (plus:SWI
  		(match_operator:SWI 5 "ix86_carry_flag_operator"
  		  [(match_dup 3) (const_int 0)])
  		(match_dup 1))
! 	      (match_operand:SWI 2 "x86_64_immediate_operand" "e,e")))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=rm,r")
  	(plus:SWI
  	  (plus:SWI
  	    (match_op_dup 5 [(match_dup 3) (const_int 0)])
--- 8031,8046 ----
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)])
  	      (sign_extend:<DWI>
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,r,m")))
! 	    (match_operand:<DWI> 6 "const_int_operand" "n,n,n"))
  	  (sign_extend:<DWI>
  	    (plus:SWI
  	      (plus:SWI
  		(match_operator:SWI 5 "ix86_carry_flag_operator"
  		  [(match_dup 3) (const_int 0)])
  		(match_dup 1))
! 	      (match_operand:SWI 2 "x86_64_immediate_operand" "e,e,e")))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=rm,r,r")
  	(plus:SWI
  	  (plus:SWI
  	    (match_op_dup 5 [(match_dup 3) (const_int 0)])
***************
*** 7976,7983 ****
     && INTVAL (operands[2]) == INTVAL (operands[6])"
    "@
    adc{<imodesuffix>}\t{%2, %0|%0, %2}
    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")
     (set (attr "length_immediate")
--- 8051,8063 ----
     && INTVAL (operands[2]) == INTVAL (operands[6])"
    "@
    adc{<imodesuffix>}\t{%2, %0|%0, %2}
+   adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")
     (set (attr "length_immediate")
***************
*** 8176,8185 ****
  })
  
  (define_insn_and_split "*sub<dwi>3_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r")
  	(minus:<DWI>
! 	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,ro,r")
! 	  (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,r<di>,o")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "#"
--- 8256,8265 ----
  })
  
  (define_insn_and_split "*sub<dwi>3_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r")
  	(minus:<DWI>
! 	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,r,o,r")
! 	  (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,r<di>,r<di>,o")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 8206,8219 ****
        DONE;
      }
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd")])
  
  (define_insn_and_split "*sub<dwi>3_doubleword_zext"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=r,o,&r,&r")
  	(minus:<DWI>
! 	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,r,o")
  	  (zero_extend:<DWI>
! 	    (match_operand:DWIH 2 "nonimmediate_operand" "rm,r,rm,r"))))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (UNKNOWN, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
--- 8286,8303 ----
        DONE;
      }
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn_and_split "*sub<dwi>3_doubleword_zext"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=r,o,&r,&r,&r")
  	(minus:<DWI>
! 	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,r,r,o")
  	  (zero_extend:<DWI>
! 	    (match_operand:DWIH 2 "nonimmediate_operand" "rm,r,r,m,r"))))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (UNKNOWN, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 8230,8242 ****
  		     (const_int 0)))
  	      (clobber (reg:CC FLAGS_REG))])]
    "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[3]);"
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd")])
  
  (define_insn "*sub<mode>_1<nf_name>"
!   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r<nf_mem_constraint>,<r>,r,r,r")
  	(minus:SWI
! 	  (match_operand:SWI 1 "nonimmediate_operand" "0,0,0,rm,rjM,r")
! 	  (match_operand:SWI 2 "<general_operand>" "<r>,<i>,<m>,r,<i>,<m>")))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)
    && <nf_condition>"
    "@
--- 8314,8330 ----
  		     (const_int 0)))
  	      (clobber (reg:CC FLAGS_REG))])]
    "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[3]);"
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn "*sub<mode>_1<nf_name>"
!   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r<nf_mem_constraint>,<r>,r,r,r,r")
  	(minus:SWI
! 	  (match_operand:SWI 1 "nonimmediate_operand" "0,0,0,r,r,m,jM")
! 	  (match_operand:SWI 2 "<general_operand>" "<r>,<i>,<m>,r<i>,<m>,r,<i>")))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)
    && <nf_condition>"
    "@
***************
*** 8245,8297 ****
    <nf_prefix>sub{<imodesuffix>}\t{%2, %0|%0, %2}
    <nf_prefix>sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    <nf_prefix>sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    <nf_prefix>sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*subqi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
! 	  (minus:QI (match_operand:QI 1 "nonimmediate_operand" "rm,r")
! 		    (match_operand:QI 2 "x86_64_general_operand" "rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix>sub{b}\t{%2, %1, %b0|%b0, %1, %2}
    <nf_prefix>sub{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*subhi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
! 	  (minus:HI (match_operand:HI 1 "nonimmediate_operand" "rm,r")
! 		    (match_operand:HI 2 "x86_64_general_operand" "rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix>sub{w}\t{%2, %1, %w0|%w0, %1, %2}
    <nf_prefix>sub{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*subsi_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
! 	  (minus:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,rm")
! 		    (match_operand:SI 2 "x86_64_general_operand" "rBMe,rBMe,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (MINUS, SImode, operands, TARGET_APX_NDD)"
    "@
    sub{l}\t{%2, %k0|%k0, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
--- 8333,8405 ----
    <nf_prefix>sub{<imodesuffix>}\t{%2, %0|%0, %2}
    <nf_prefix>sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    <nf_prefix>sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   <nf_prefix>sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    <nf_prefix>sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4,5,6")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*subqi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI248x
! 	  (minus:QI (match_operand:QI 1 "nonimmediate_operand" "r,r,m")
! 		    (match_operand:QI 2 "x86_64_general_operand" "rn,m,rn"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix>sub{b}\t{%2, %1, %b0|%b0, %1, %2}
+   <nf_prefix>sub{b}\t{%2, %1, %b0|%b0, %1, %2}
    <nf_prefix>sub{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*subhi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI48x
! 	  (minus:HI (match_operand:HI 1 "nonimmediate_operand" "r,r,m")
! 		    (match_operand:HI 2 "x86_64_general_operand" "rn,m,rn"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix>sub{w}\t{%2, %1, %w0|%w0, %1, %2}
+   <nf_prefix>sub{w}\t{%2, %1, %w0|%w0, %1, %2}
    <nf_prefix>sub{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*subsi_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
! 	  (minus:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,r,m")
! 		    (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,BM,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (MINUS, SImode, operands, TARGET_APX_NDD)"
    "@
    sub{l}\t{%2, %k0|%k0, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}
+   sub{l}\t{%2, %1, %k0|%k0, %1, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
***************
*** 8377,8386 ****
    [(set (reg FLAGS_REG)
  	(compare
  	  (minus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "0,0,rm,r")
! 	    (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCGOCmode)
     && ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
--- 8485,8494 ----
    [(set (reg FLAGS_REG)
  	(compare
  	  (minus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "0,0,r,r,m")
! 	    (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>,r<i>"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCGOCmode)
     && ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
***************
*** 8388,8405 ****
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*subsi_2_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (minus:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,rm")
! 		    (match_operand:SI 2 "x86_64_general_operand" "rBMe,rBMe,re"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
  	  (minus:SI (match_dup 1)
  		    (match_dup 2))))]
--- 8496,8518 ----
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*subsi_2_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (minus:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,r,m")
! 		    (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,BM,re"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
  	  (minus:SI (match_dup 1)
  		    (match_dup 2))))]
***************
*** 8408,8415 ****
    "@
    sub{l}\t{%2, %k0|%k0, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
--- 8521,8533 ----
    "@
    sub{l}\t{%2, %k0|%k0, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}
+   sub{l}\t{%2, %1, %k0|%k0, %1, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
***************
*** 8526,8545 ****
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (minus:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 1 "nonimmediate_operand" "0,0,rm,r"))
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 2 "<general_sext_operand>" "<r>We,m,rWe,m")))
  		(sign_extend:<DWI>
  		   (minus:SWI (match_dup 1) (match_dup 2)))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
--- 8644,8668 ----
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (minus:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 1 "nonimmediate_operand" "0,0,r,r,m"))
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 2 "<general_sext_operand>" "<r>We,m,rWe,m,rWe")))
  		(sign_extend:<DWI>
  		   (minus:SWI (match_dup 1) (match_dup 2)))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
***************
*** 8547,8567 ****
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (minus:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 1 "nonimmediate_operand" "0,rm"))
  		   (match_operand:<DWI> 3 "const_int_operand"))
  		(sign_extend:<DWI>
  		   (minus:SWI
  		     (match_dup 1)
! 		     (match_operand:SWI 2 "x86_64_immediate_operand" "<i>,<i>")))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)
     && CONST_INT_P (operands[2])
     && INTVAL (operands[2]) == INTVAL (operands[3])"
    "@
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")
     (set (attr "length_immediate")
--- 8670,8695 ----
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (minus:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI 1 "nonimmediate_operand" "0,r,m"))
  		   (match_operand:<DWI> 3 "const_int_operand"))
  		(sign_extend:<DWI>
  		   (minus:SWI
  		     (match_dup 1)
! 		     (match_operand:SWI 2 "x86_64_immediate_operand" "<i>,<i>,<i>")))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)
     && CONST_INT_P (operands[2])
     && INTVAL (operands[2]) == INTVAL (operands[3])"
    "@
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
+   sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")
     (set (attr "length_immediate")
***************
*** 8576,8587 ****
  	(eq:CCO
  	  (minus:<QPWI>
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,ro,r"))
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 2 "nonimmediate_operand" "r,o,r,o")))
  	  (sign_extend:<QPWI>
  	    (minus:<DWI> (match_dup 1) (match_dup 2)))))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r")
  	(minus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "#"
--- 8704,8715 ----
  	(eq:CCO
  	  (minus:<QPWI>
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 1 "nonimmediate_operand" "0,0,r,o,r"))
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 2 "nonimmediate_operand" "r,o,r,r,o")))
  	  (sign_extend:<QPWI>
  	    (minus:<DWI> (match_dup 1) (match_dup 2)))))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r")
  	(minus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 8612,8631 ****
  {
    split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd")])
  
  (define_insn_and_split "*subv<dwi>4_doubleword_1"
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO
  	  (minus:<QPWI>
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 1 "nonimmediate_operand" "0,ro"))
  	    (match_operand:<QPWI> 3 "const_scalar_int_operand"))
  	  (sign_extend:<QPWI>
  	    (minus:<DWI>
  	      (match_dup 1)
! 	      (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "<di>,<di>")))))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,&r")
  	(minus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)
     && CONST_SCALAR_INT_P (operands[2])
--- 8740,8763 ----
  {
    split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn_and_split "*subv<dwi>4_doubleword_1"
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO
  	  (minus:<QPWI>
  	    (sign_extend:<QPWI>
! 	      (match_operand:<DWI> 1 "nonimmediate_operand" "0,r,o"))
  	    (match_operand:<QPWI> 3 "const_scalar_int_operand"))
  	  (sign_extend:<QPWI>
  	    (minus:<DWI>
  	      (match_dup 1)
! 	      (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "<di>,<di>,<di>")))))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,&r,&r")
  	(minus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)
     && CONST_SCALAR_INT_P (operands[2])
***************
*** 8666,8672 ****
        DONE;
      }
  }
! [(set_attr "isa" "*,apx_ndd")])
  
  (define_insn "*subv<mode>4_overflow_1"
    [(set (reg:CCO FLAGS_REG)
--- 8798,8808 ----
        DONE;
      }
  }
! [(set_attr "isa" "*,apx_ndd,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn "*subv<mode>4_overflow_1"
    [(set (reg:CCO FLAGS_REG)
***************
*** 8674,8684 ****
  	  (minus:<DWI>
  	    (minus:<DWI>
  	      (sign_extend:<DWI>
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,0,rm,r"))
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)]))
  	    (sign_extend:<DWI>
! 	      (match_operand:SWI 2 "<general_sext_operand>" "rWe,m,rWe,m")))
  	  (sign_extend:<DWI>
  	    (minus:SWI
  	      (minus:SWI
--- 8810,8820 ----
  	  (minus:<DWI>
  	    (minus:<DWI>
  	      (sign_extend:<DWI>
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,0,r,r,m"))
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)]))
  	    (sign_extend:<DWI>
! 	      (match_operand:SWI 2 "<general_sext_operand>" "rWe,m,rWe,m,rWe")))
  	  (sign_extend:<DWI>
  	    (minus:SWI
  	      (minus:SWI
***************
*** 8686,8692 ****
  		(match_operator:SWI 5 "ix86_carry_flag_operator"
  		  [(match_dup 3) (const_int 0)]))
  	      (match_dup 2)))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=rm,r,r,r")
  	(minus:SWI
  	  (minus:SWI
  	    (match_dup 1)
--- 8822,8828 ----
  		(match_operator:SWI 5 "ix86_carry_flag_operator"
  		  [(match_dup 3) (const_int 0)]))
  	      (match_dup 2)))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=rm,r,r,r,r")
  	(minus:SWI
  	  (minus:SWI
  	    (match_dup 1)
***************
*** 8697,8704 ****
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
--- 8833,8845 ----
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
***************
*** 8708,8725 ****
  	  (minus:<DWI>
  	    (minus:<DWI>
  	      (sign_extend:<DWI>
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,rm"))
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)]))
! 	    (match_operand:<DWI> 6 "const_int_operand" "n,n"))
  	  (sign_extend:<DWI>
  	    (minus:SWI
  	      (minus:SWI
  		(match_dup 1)
  		(match_operator:SWI 5 "ix86_carry_flag_operator"
  		  [(match_dup 3) (const_int 0)]))
! 	      (match_operand:SWI 2 "x86_64_immediate_operand" "e,e")))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=rm,r")
  	(minus:SWI
  	  (minus:SWI
  	    (match_dup 1)
--- 8849,8866 ----
  	  (minus:<DWI>
  	    (minus:<DWI>
  	      (sign_extend:<DWI>
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,r,m"))
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)]))
! 	    (match_operand:<DWI> 6 "const_int_operand" "n,n,n"))
  	  (sign_extend:<DWI>
  	    (minus:SWI
  	      (minus:SWI
  		(match_dup 1)
  		(match_operator:SWI 5 "ix86_carry_flag_operator"
  		  [(match_dup 3) (const_int 0)]))
! 	      (match_operand:SWI 2 "x86_64_immediate_operand" "e,e,e")))))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=rm,r,r")
  	(minus:SWI
  	  (minus:SWI
  	    (match_dup 1)
***************
*** 8730,8737 ****
     && INTVAL (operands[2]) == INTVAL (operands[6])"
    "@
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")
     (set (attr "length_immediate")
--- 8871,8883 ----
     && INTVAL (operands[2]) == INTVAL (operands[6])"
    "@
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
+   sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")
     (set (attr "length_immediate")
***************
*** 8764,8772 ****
  
  (define_insn "*sub<mode>_3"
    [(set (reg FLAGS_REG)
! 	(compare (match_operand:SWI 1 "nonimmediate_operand" "0,0,rm,r")
! 		 (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>")))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCmode)
     && ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
--- 8910,8918 ----
  
  (define_insn "*sub<mode>_3"
    [(set (reg FLAGS_REG)
! 	(compare (match_operand:SWI 1 "nonimmediate_operand" "0,0,r,r,m")
! 		 (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>,r<i>")))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r")
  	(minus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCmode)
     && ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
***************
*** 8774,8781 ****
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
--- 8920,8932 ----
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %0|%0, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sub{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
***************
*** 8892,8900 ****
  
  (define_insn "*subsi_3_zext"
    [(set (reg FLAGS_REG)
! 	(compare (match_operand:SI 1 "nonimmediate_operand" "0,r,rm")
! 		 (match_operand:SI 2 "x86_64_general_operand" "rBMe,rBMe,re")))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
  	  (minus:SI (match_dup 1)
  		    (match_dup 2))))]
--- 9043,9051 ----
  
  (define_insn "*subsi_3_zext"
    [(set (reg FLAGS_REG)
! 	(compare (match_operand:SI 1 "nonimmediate_operand" "0,r,r,m")
! 		 (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,BM,re")))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
  	  (minus:SI (match_dup 1)
  		    (match_dup 2))))]
***************
*** 8903,8931 ****
    "@
    sub{l}\t{%2, %1|%1, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
  ;; Add with carry and subtract with borrow
  
  (define_insn "@add<mode>3_carry"
!   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(plus:SWI
  	  (plus:SWI
  	    (match_operator:SWI 4 "ix86_carry_flag_operator"
  	     [(match_operand 3 "flags_reg_operand") (const_int 0)])
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,0,rm,r"))
! 	  (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
     adc{<imodesuffix>}\t{%2, %0|%0, %2}
     adc{<imodesuffix>}\t{%2, %0|%0, %2}
     adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
--- 9054,9092 ----
    "@
    sub{l}\t{%2, %1|%1, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}
+   sub{l}\t{%2, %1, %k0|%k0, %1, %2}
    sub{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
  ;; Add with carry and subtract with borrow
  
  (define_insn "@add<mode>3_carry"
!   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r")
  	(plus:SWI
  	  (plus:SWI
  	    (match_operator:SWI 4 "ix86_carry_flag_operator"
  	     [(match_operand 3 "flags_reg_operand") (const_int 0)])
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,0,r,r,m"))
! 	  (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>,r<i>")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
     adc{<imodesuffix>}\t{%2, %0|%0, %2}
     adc{<imodesuffix>}\t{%2, %0|%0, %2}
     adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
***************
*** 9082,9230 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*addqi3_carry_zext<mode>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
  	  (plus:QI
  	    (plus:QI (match_operator:QI 3 "ix86_carry_flag_operator"
  		      [(reg FLAGS_REG) (const_int 0)])
! 		     (match_operand:QI 1 "nonimmediate_operand" "%rm,r"))
! 	    (match_operand:QI 2 "x86_64_general_operand" "rn,m"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    adc{b}\t{%2, %1, %b0|%b0, %1, %2}
    adc{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*addhi3_carry_zext<mode>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
  	  (plus:HI
  	    (plus:HI (match_operator:HI 3 "ix86_carry_flag_operator"
  		      [(reg FLAGS_REG) (const_int 0)])
! 		     (match_operand:HI 1 "nonimmediate_operand" "%rm,r"))
! 	    (match_operand:HI 2 "x86_64_general_operand" "rn,m"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    adc{w}\t{%2, %1, %w0|%w0, %1, %2}
    adc{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*addsi3_carry_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
  	  (plus:SI
  	    (plus:SI (match_operator:SI 3 "ix86_carry_flag_operator"
  		      [(reg FLAGS_REG) (const_int 0)])
! 		     (match_operand:SI 1 "nonimmediate_operand" "%0,r,rm"))
! 	    (match_operand:SI 2 "x86_64_general_operand" "rBMe,rBMe,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
    "@
    adc{l}\t{%2, %k0|%k0, %2}
    adc{l}\t{%2, %1, %k0|%k0, %1, %2}
    adc{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
  (define_insn "*addqi3_carry_zext<mode>_0"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r")
  	(zero_extend:SWI248x
  	  (plus:QI (match_operator:QI 2 "ix86_carry_flag_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:QI 1 "nonimmediate_operand" "rm"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "adc{b}\t{$0, %1, %b0|%b0, %1, 0}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*addhi3_carry_zext<mode>_0"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r")
  	(zero_extend:SWI48x
  	  (plus:HI (match_operator:HI 2 "ix86_carry_flag_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:HI 1 "nonimmediate_operand" "rm"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "adc{w}\t{$0, %1, %w0|%w0, %1, 0}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*addsi3_carry_zext_0"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI
  	  (plus:SI (match_operator:SI 2 "ix86_carry_flag_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:SI 1 "nonimmediate_operand" "0,rm"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
    "@
    adc{l}\t{$0, %k0|%k0, 0}
    adc{l}\t{$0, %1, %k0|%k0, %1, 0}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
  (define_insn "*addqi3_carry_zext<mode>_0r"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r")
  	(zero_extend:SWI248x
  	  (plus:QI (match_operator:QI 2 "ix86_carry_flag_unset_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:QI 1 "nonimmediate_operand" "rm"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "sbb{b}\t{$-1, %1, %b0|%b0, %1, -1}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*addhi3_carry_zext<mode>_0r"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r")
  	(zero_extend:SWI48x
  	  (plus:HI (match_operator:HI 2 "ix86_carry_flag_unset_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:HI 1 "nonimmediate_operand" "rm"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "sbb{w}\t{$-1, %1, %w0|%w0, %1, -1}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*addsi3_carry_zext_0r"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI
  	  (plus:SI (match_operator:SI 2 "ix86_carry_flag_unset_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:SI 1 "nonimmediate_operand" "0,rm"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
    "@
    sbb{l}\t{$-1, %k0|%k0, -1}
    sbb{l}\t{$-1, %1, %k0|%k0, %1, -1}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
--- 9243,9432 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*addqi3_carry_zext<mode>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI248x
  	  (plus:QI
  	    (plus:QI (match_operator:QI 3 "ix86_carry_flag_operator"
  		      [(reg FLAGS_REG) (const_int 0)])
! 		     (match_operand:QI 1 "nonimmediate_operand" "%r,r,m"))
! 	    (match_operand:QI 2 "x86_64_general_operand" "rn,m,rn"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    adc{b}\t{%2, %1, %b0|%b0, %1, %2}
+   adc{b}\t{%2, %1, %b0|%b0, %1, %2}
    adc{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*addhi3_carry_zext<mode>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI48x
  	  (plus:HI
  	    (plus:HI (match_operator:HI 3 "ix86_carry_flag_operator"
  		      [(reg FLAGS_REG) (const_int 0)])
! 		     (match_operand:HI 1 "nonimmediate_operand" "%r,r,m"))
! 	    (match_operand:HI 2 "x86_64_general_operand" "rn,m,rn"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    adc{w}\t{%2, %1, %w0|%w0, %1, %2}
+   adc{w}\t{%2, %1, %w0|%w0, %1, %2}
    adc{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*addsi3_carry_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
  	  (plus:SI
  	    (plus:SI (match_operator:SI 3 "ix86_carry_flag_operator"
  		      [(reg FLAGS_REG) (const_int 0)])
! 		     (match_operand:SI 1 "nonimmediate_operand" "%0,r,r,m"))
! 	    (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,BM,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
    "@
    adc{l}\t{%2, %k0|%k0, %2}
    adc{l}\t{%2, %1, %k0|%k0, %1, %2}
+   adc{l}\t{%2, %1, %k0|%k0, %1, %2}
    adc{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
  (define_insn "*addqi3_carry_zext<mode>_0"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
  	  (plus:QI (match_operator:QI 2 "ix86_carry_flag_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:QI 1 "nonimmediate_operand" "r,m"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "adc{b}\t{$0, %1, %b0|%b0, %1, 0}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*addhi3_carry_zext<mode>_0"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
  	  (plus:HI (match_operator:HI 2 "ix86_carry_flag_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:HI 1 "nonimmediate_operand" "r,m"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "adc{w}\t{$0, %1, %w0|%w0, %1, 0}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*addsi3_carry_zext_0"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
  	  (plus:SI (match_operator:SI 2 "ix86_carry_flag_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:SI 1 "nonimmediate_operand" "0,r,m"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
    "@
    adc{l}\t{$0, %k0|%k0, 0}
+   adc{l}\t{$0, %1, %k0|%k0, %1, 0}
    adc{l}\t{$0, %1, %k0|%k0, %1, 0}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
  (define_insn "*addqi3_carry_zext<mode>_0r"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
  	  (plus:QI (match_operator:QI 2 "ix86_carry_flag_unset_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:QI 1 "nonimmediate_operand" "r,m"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "sbb{b}\t{$-1, %1, %b0|%b0, %1, -1}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*addhi3_carry_zext<mode>_0r"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
  	  (plus:HI (match_operator:HI 2 "ix86_carry_flag_unset_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:HI 1 "nonimmediate_operand" "r,m"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "sbb{w}\t{$-1, %1, %w0|%w0, %1, -1}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*addsi3_carry_zext_0r"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
  	  (plus:SI (match_operator:SI 2 "ix86_carry_flag_unset_operator"
  		    [(reg FLAGS_REG) (const_int 0)])
! 		   (match_operand:SI 1 "nonimmediate_operand" "0,r,m"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
    "@
    sbb{l}\t{$-1, %k0|%k0, -1}
+   sbb{l}\t{$-1, %1, %k0|%k0, %1, -1}
    sbb{l}\t{$-1, %1, %k0|%k0, %1, -1}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
***************
*** 9240,9252 ****
  	      (plus:SWI48
  		(match_operator:SWI48 5 "ix86_carry_flag_operator"
  		  [(match_operand 3 "flags_reg_operand") (const_int 0)])
! 		(match_operand:SWI48 1 "nonimmediate_operand" "%0,0,rm,r"))
! 	      (match_operand:SWI48 2 "nonimmediate_operand" "r,rm,r,m")))
  	  (plus:<DWI>
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_dup 3) (const_int 0)])
  	    (zero_extend:<DWI> (match_dup 2)))))
!    (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,r")
  	(plus:SWI48 (plus:SWI48 (match_op_dup 5
  				  [(match_dup 3) (const_int 0)])
  				(match_dup 1))
--- 9442,9454 ----
  	      (plus:SWI48
  		(match_operator:SWI48 5 "ix86_carry_flag_operator"
  		  [(match_operand 3 "flags_reg_operand") (const_int 0)])
! 		(match_operand:SWI48 1 "nonimmediate_operand" "%0,0,r,r,m"))
! 	      (match_operand:SWI48 2 "nonimmediate_operand" "r,rm,r,m,r")))
  	  (plus:<DWI>
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_dup 3) (const_int 0)])
  	    (zero_extend:<DWI> (match_dup 2)))))
!    (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,r,r")
  	(plus:SWI48 (plus:SWI48 (match_op_dup 5
  				  [(match_dup 3) (const_int 0)])
  				(match_dup 1))
***************
*** 9256,9263 ****
    adc{<imodesuffix>}\t{%2, %0|%0, %2}
    adc{<imodesuffix>}\t{%2, %0|%0, %2}
    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
--- 9458,9470 ----
    adc{<imodesuffix>}\t{%2, %0|%0, %2}
    adc{<imodesuffix>}\t{%2, %0|%0, %2}
    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
***************
*** 9538,9550 ****
  	      (plus:SWI48
  		(match_operator:SWI48 5 "ix86_carry_flag_operator"
  		  [(match_operand 3 "flags_reg_operand") (const_int 0)])
! 		(match_operand:SWI48 1 "nonimmediate_operand" "%0,rm"))
! 	      (match_operand:SWI48 2 "x86_64_immediate_operand" "e,e")))
  	  (plus:<DWI>
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_dup 3) (const_int 0)])
  	    (match_operand:<DWI> 6 "const_scalar_int_operand"))))
!    (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r")
  	(plus:SWI48 (plus:SWI48 (match_op_dup 5
  				 [(match_dup 3) (const_int 0)])
  				(match_dup 1))
--- 9745,9757 ----
  	      (plus:SWI48
  		(match_operator:SWI48 5 "ix86_carry_flag_operator"
  		  [(match_operand 3 "flags_reg_operand") (const_int 0)])
! 		(match_operand:SWI48 1 "nonimmediate_operand" "%0,r,m"))
! 	      (match_operand:SWI48 2 "x86_64_immediate_operand" "e,e,e")))
  	  (plus:<DWI>
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_dup 3) (const_int 0)])
  	    (match_operand:<DWI> 6 "const_scalar_int_operand"))))
!    (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r")
  	(plus:SWI48 (plus:SWI48 (match_op_dup 5
  				 [(match_dup 3) (const_int 0)])
  				(match_dup 1))
***************
*** 9564,9571 ****
  	  && CONST_WIDE_INT_ELT (operands[6], 1) == 0))"
    "@
    adc{<imodesuffix>}\t{%2, %0|%0, %2}
    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
--- 9771,9783 ----
  	  && CONST_WIDE_INT_ELT (operands[6], 1) == 0))"
    "@
    adc{<imodesuffix>}\t{%2, %0|%0, %2}
+   adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    adc{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
***************
*** 9576,9596 ****
         (const_string "4")))])
  
  (define_insn "@sub<mode>3_carry"
!   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(minus:SWI
  	  (minus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "0,0,rm,r")
  	    (match_operator:SWI 4 "ix86_carry_flag_operator"
  	     [(match_operand 3 "flags_reg_operand") (const_int 0)]))
! 	  (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
--- 9788,9813 ----
         (const_string "4")))])
  
  (define_insn "@sub<mode>3_carry"
!   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r")
  	(minus:SWI
  	  (minus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "0,0,r,r,m")
  	    (match_operator:SWI 4 "ix86_carry_flag_operator"
  	     [(match_operand 3 "flags_reg_operand") (const_int 0)]))
! 	  (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>,r<i>")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
***************
*** 9747,9904 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*subqi3_carry_zext<mode>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
  	  (minus:QI
  	    (minus:QI
! 	      (match_operand:QI 1 "nonimmediate_operand" "r,rm")
  	      (match_operator:QI 3 "ix86_carry_flag_operator"
  	       [(reg FLAGS_REG) (const_int 0)]))
! 	    (match_operand:QI 2 "x86_64_general_operand" "rBMe,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    sbb{b}\t{%2, %1, %b0|%b0, %1, %2}
    sbb{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*subhi3_carry_zext<mode>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
  	  (minus:HI
  	    (minus:HI
! 	      (match_operand:HI 1 "nonimmediate_operand" "r,rm")
  	      (match_operator:HI 3 "ix86_carry_flag_operator"
  	       [(reg FLAGS_REG) (const_int 0)]))
! 	    (match_operand:HI 2 "x86_64_general_operand" "rBMe,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    sbb{w}\t{%2, %1, %w0|%w0, %1, %2}
    sbb{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*subsi3_carry_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
  	  (minus:SI
  	    (minus:SI
! 	      (match_operand:SI 1 "nonimmediate_operand" "0,r,rm")
  	      (match_operator:SI 3 "ix86_carry_flag_operator"
  	       [(reg FLAGS_REG) (const_int 0)]))
! 	    (match_operand:SI 2 "x86_64_general_operand" "rBMe,rBMe,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (MINUS, SImode, operands, TARGET_APX_NDD)"
    "@
    sbb{l}\t{%2, %k0|%k0, %2}
    sbb{l}\t{%2, %1, %k0|%k0, %1, %2}
    sbb{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
  (define_insn "*subqi3_carry_zext<mode>_0"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r")
  	(zero_extend:SWI248x
  	  (minus:QI
! 	    (match_operand:QI 1 "nonimmediate_operand" "rm")
  	    (match_operator:QI 2 "ix86_carry_flag_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "sbb{b}\t{$0, %1, %b0|%b0, %1, 0}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*subhi3_carry_zext<mode>_0"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r")
  	(zero_extend:SWI48x
  	  (minus:HI
! 	    (match_operand:HI 1 "nonimmediate_operand" "rm")
  	    (match_operator:HI 2 "ix86_carry_flag_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "sbb{w}\t{$0, %1, %w0|%w0, %1, 0}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*subsi3_carry_zext_0"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI
  	  (minus:SI
! 	    (match_operand:SI 1 "nonimmediate_operand" "0,rm")
  	    (match_operator:SI 2 "ix86_carry_flag_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
    "@
    sbb{l}\t{$0, %k0|%k0, 0}
    sbb{l}\t{$0, %1, %k0|%k0, %1, 0}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
  (define_insn "*subqi3_carry_zext<mode>_0r"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r")
  	(zero_extend:SWI248x
  	  (minus:QI
! 	    (match_operand:QI 1 "nonimmediate_operand" "rm")
  	    (match_operator:QI 2 "ix86_carry_flag_unset_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "adc{b}\t{$-1, %1, %b0|%b0, %1, -1}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*subhi3_carry_zext<mode>_0r"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r")
  	(zero_extend:SWI48x
  	  (minus:HI
! 	    (match_operand:HI 1 "nonimmediate_operand" "rm")
  	    (match_operator:HI 2 "ix86_carry_flag_unset_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "adc{w}\t{$-1, %1, %w0|%w0, %1, -1}"
!   [(set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*subsi3_carry_zext_0r"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI
  	  (minus:SI
! 	    (match_operand:SI 1 "nonimmediate_operand" "0,rm")
  	    (match_operator:SI 2 "ix86_carry_flag_unset_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
    "@
    adc{l}\t{$-1, %k0|%k0, -1}
    adc{l}\t{$-1, %1, %k0|%k0, %1, -1}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
--- 9964,10162 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*subqi3_carry_zext<mode>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI248x
  	  (minus:QI
  	    (minus:QI
! 	      (match_operand:QI 1 "nonimmediate_operand" "r,r,m")
  	      (match_operator:QI 3 "ix86_carry_flag_operator"
  	       [(reg FLAGS_REG) (const_int 0)]))
! 	    (match_operand:QI 2 "x86_64_general_operand" "re,BM,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    sbb{b}\t{%2, %1, %b0|%b0, %1, %2}
+   sbb{b}\t{%2, %1, %b0|%b0, %1, %2}
    sbb{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*subhi3_carry_zext<mode>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI48x
  	  (minus:HI
  	    (minus:HI
! 	      (match_operand:HI 1 "nonimmediate_operand" "r,r,m")
  	      (match_operator:HI 3 "ix86_carry_flag_operator"
  	       [(reg FLAGS_REG) (const_int 0)]))
! 	    (match_operand:HI 2 "x86_64_general_operand" "re,BM,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    sbb{w}\t{%2, %1, %w0|%w0, %1, %2}
+   sbb{w}\t{%2, %1, %w0|%w0, %1, %2}
    sbb{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*subsi3_carry_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
  	  (minus:SI
  	    (minus:SI
! 	      (match_operand:SI 1 "nonimmediate_operand" "0,r,r,m")
  	      (match_operator:SI 3 "ix86_carry_flag_operator"
  	       [(reg FLAGS_REG) (const_int 0)]))
! 	    (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,BM,re"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (MINUS, SImode, operands, TARGET_APX_NDD)"
    "@
    sbb{l}\t{%2, %k0|%k0, %2}
    sbb{l}\t{%2, %1, %k0|%k0, %1, %2}
+   sbb{l}\t{%2, %1, %k0|%k0, %1, %2}
    sbb{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
  (define_insn "*subqi3_carry_zext<mode>_0"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
  	  (minus:QI
! 	    (match_operand:QI 1 "nonimmediate_operand" "r,m")
  	    (match_operator:QI 2 "ix86_carry_flag_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "sbb{b}\t{$0, %1, %b0|%b0, %1, 0}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*subhi3_carry_zext<mode>_0"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
  	  (minus:HI
! 	    (match_operand:HI 1 "nonimmediate_operand" "r,m")
  	    (match_operator:HI 2 "ix86_carry_flag_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "sbb{w}\t{$0, %1, %w0|%w0, %1, 0}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*subsi3_carry_zext_0"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
  	  (minus:SI
! 	    (match_operand:SI 1 "nonimmediate_operand" "0,r,m")
  	    (match_operator:SI 2 "ix86_carry_flag_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
    "@
    sbb{l}\t{$0, %k0|%k0, 0}
+   sbb{l}\t{$0, %1, %k0|%k0, %1, 0}
    sbb{l}\t{$0, %1, %k0|%k0, %1, 0}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "SI")])
  
  (define_insn "*subqi3_carry_zext<mode>_0r"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
  	  (minus:QI
! 	    (match_operand:QI 1 "nonimmediate_operand" "r,m")
  	    (match_operator:QI 2 "ix86_carry_flag_unset_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "adc{b}\t{$-1, %1, %b0|%b0, %1, -1}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "QI")])
  
  (define_insn "*subhi3_carry_zext<mode>_0r"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
  	  (minus:HI
! 	    (match_operand:HI 1 "nonimmediate_operand" "r,m")
  	    (match_operator:HI 2 "ix86_carry_flag_unset_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_APX_NDD"
    "adc{w}\t{$-1, %1, %w0|%w0, %1, -1}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
     (set_attr "mode" "HI")])
  
  (define_insn "*subsi3_carry_zext_0r"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
  	  (minus:SI
! 	    (match_operand:SI 1 "nonimmediate_operand" "0,r,m")
  	    (match_operator:SI 2 "ix86_carry_flag_unset_operator"
  	      [(reg FLAGS_REG) (const_int 0)]))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
    "@
    adc{l}\t{$-1, %k0|%k0, -1}
+   adc{l}\t{$-1, %1, %k0|%k0, %1, -1}
    adc{l}\t{$-1, %1, %k0|%k0, %1, -1}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
***************
*** 9954,9966 ****
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (zero_extend:<DWI>
! 	    (match_operand:SWI48 1 "nonimmediate_operand" "0,0,r,rm"))
  	  (plus:<DWI>
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_operand 3 "flags_reg_operand") (const_int 0)])
  	    (zero_extend:<DWI>
! 	      (match_operand:SWI48 2 "nonimmediate_operand" "r,rm,rm,r")))))
!    (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,r")
  	(minus:SWI48 (minus:SWI48
  		       (match_dup 1)
  		       (match_operator:SWI48 5 "ix86_carry_flag_operator"
--- 10212,10224 ----
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (zero_extend:<DWI>
! 	    (match_operand:SWI48 1 "nonimmediate_operand" "0,0,r,r,m"))
  	  (plus:<DWI>
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_operand 3 "flags_reg_operand") (const_int 0)])
  	    (zero_extend:<DWI>
! 	      (match_operand:SWI48 2 "nonimmediate_operand" "r,rm,r,m,r")))))
!    (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,r,r")
  	(minus:SWI48 (minus:SWI48
  		       (match_dup 1)
  		       (match_operator:SWI48 5 "ix86_carry_flag_operator"
***************
*** 9971,9978 ****
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
--- 10229,10241 ----
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %0|%0, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
***************
*** 10186,10202 ****
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (zero_extend:<DWI>
! 	    (match_operand:SWI48 1 "nonimmediate_operand" "0,rm"))
  	  (plus:<DWI>
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_operand 3 "flags_reg_operand") (const_int 0)])
  	    (match_operand:<DWI> 6 "const_scalar_int_operand"))))
!    (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r")
  	(plus:SWI48 (minus:SWI48
  		      (match_dup 1)
  		      (match_operator:SWI48 5 "ix86_carry_flag_operator"
  			[(match_dup 3) (const_int 0)]))
! 		    (match_operand:SWI48 2 "x86_64_immediate_operand" "e,e")))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)
     && CONST_INT_P (operands[2])
     /* Check that operands[6] is -operands[2] zero extended from
--- 10449,10465 ----
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (zero_extend:<DWI>
! 	    (match_operand:SWI48 1 "nonimmediate_operand" "0,r,m"))
  	  (plus:<DWI>
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_operand 3 "flags_reg_operand") (const_int 0)])
  	    (match_operand:<DWI> 6 "const_scalar_int_operand"))))
!    (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r")
  	(plus:SWI48 (minus:SWI48
  		      (match_dup 1)
  		      (match_operator:SWI48 5 "ix86_carry_flag_operator"
  			[(match_dup 3) (const_int 0)]))
! 		    (match_operand:SWI48 2 "x86_64_immediate_operand" "e,e,e")))]
    "ix86_binary_operator_ok (MINUS, <MODE>mode, operands, TARGET_APX_NDD)
     && CONST_INT_P (operands[2])
     /* Check that operands[6] is -operands[2] zero extended from
***************
*** 10213,10225 ****
  	  && CONST_WIDE_INT_ELT (operands[6], 1) == 0))"
  {
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
- 
    operands[2] = GEN_INT (-INTVAL (operands[2]));
  
    return use_ndd ? "sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
  		 : "sbb{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
--- 10476,10491 ----
  	  && CONST_WIDE_INT_ELT (operands[6], 1) == 0))"
  {
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
    operands[2] = GEN_INT (-INTVAL (operands[2]));
  
    return use_ndd ? "sbb{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
  		 : "sbb{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "use_carry" "1")
     (set_attr "pent_pair" "pu")
***************
*** 10349,10364 ****
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,r,rm")
! 	    (match_operand:SWI 2 "<general_operand>" "<g>,<g>,re"))
  	  (match_dup 1)))
!    (clobber (match_scratch:SWI 0 "=<r>,r,r"))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    add{<imodesuffix>}\t{%2, %0|%0, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
--- 10615,10635 ----
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,r,r,m")
! 	    (match_operand:SWI 2 "<general_operand>" "<g>,m,re,re"))
  	  (match_dup 1)))
!    (clobber (match_scratch:SWI 0 "=<r>,r,r,r"))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    add{<imodesuffix>}\t{%2, %0|%0, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
***************
*** 10366,10375 ****
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	    (plus:SWI
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,0,rm,rjM,r")
! 		(match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r,<i>,<m>"))
  	    (match_dup 1)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
--- 10637,10646 ----
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	    (plus:SWI
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,0,r,r,m,jM")
! 		(match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>,r,<i>"))
  	    (match_dup 1)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
***************
*** 10377,10384 ****
     add{<imodesuffix>}\t{%2, %0|%0, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
--- 10648,10660 ----
     add{<imodesuffix>}\t{%2, %0|%0, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
***************
*** 10424,10441 ****
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:SI
! 	    (match_operand:SI 1 "nonimmediate_operand" "%0,r,rm")
! 	    (match_operand:SI 2 "x86_64_general_operand" "rBMe,rBMe,re"))
  	  (match_dup 1)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
    "@
    add{l}\t{%2, %k0|%k0, %2}
    add{l}\t{%2, %1, %k0|%k0, %1, %2}
    add{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
--- 10700,10722 ----
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:SI
! 	    (match_operand:SI 1 "nonimmediate_operand" "%0,r,r,m")
! 	    (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,BM,re"))
  	  (match_dup 1)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
    "@
    add{l}\t{%2, %k0|%k0, %2}
    add{l}\t{%2, %1, %k0|%k0, %1, %2}
+   add{l}\t{%2, %1, %k0|%k0, %1, %2}
    add{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
***************
*** 10443,10458 ****
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,r,rm")
! 	    (match_operand:SWI 2 "<general_operand>" "<g>,<g>,re"))
  	  (match_dup 2)))
!    (clobber (match_scratch:SWI 0 "=<r>,r,r"))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    add{<imodesuffix>}\t{%2, %0|%0, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
--- 10724,10745 ----
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "%0,r,r,m,jM")
! 	    (match_operand:SWI 2 "<general_operand>" "<g>,r<i>,<m>,r,<i>"))
  	  (match_dup 2)))
!    (clobber (match_scratch:SWI 0 "=<r>,r,r,r,r"))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    add{<imodesuffix>}\t{%2, %0|%0, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
***************
*** 10460,10477 ****
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	    (plus:SWI
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,0,rm,r")
! 		(match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>"))
  	    (match_dup 2)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
    add{<imodesuffix>}\t{%2, %0|%0, %2}
    add{<imodesuffix>}\t{%2, %0|%0, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
--- 10747,10770 ----
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	    (plus:SWI
! 		(match_operand:SWI 1 "nonimmediate_operand" "%0,0,r,r,m,jM")
! 		(match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>,r,<i>"))
  	    (match_dup 2)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r,r")
  	(plus:SWI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
    add{<imodesuffix>}\t{%2, %0|%0, %2}
    add{<imodesuffix>}\t{%2, %0|%0, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    add{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
***************
*** 10479,10496 ****
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:SI
! 	    (match_operand:SI 1 "nonimmediate_operand" "%0,r,rm")
! 	    (match_operand:SI 2 "x86_64_general_operand" "rBMe,rBMe,re"))
  	  (match_dup 2)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
    "@
    add{l}\t{%2, %k0|%k0, %2}
    add{l}\t{%2, %1, %k0|%k0, %1, %2}
    add{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
--- 10772,10794 ----
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:SI
! 	    (match_operand:SI 1 "nonimmediate_operand" "%0,r,r,m")
! 	    (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,BM,re"))
  	  (match_dup 2)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI (plus:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (PLUS, SImode, operands, TARGET_APX_NDD)"
    "@
    add{l}\t{%2, %k0|%k0, %2}
    add{l}\t{%2, %1, %k0|%k0, %1, %2}
+   add{l}\t{%2, %1, %k0|%k0, %1, %2}
    add{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
***************
*** 10498,10507 ****
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:<DWI>
! 	    (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,ro,r,ro,jO,r")
! 	    (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,r,<di>,K,<di>,o"))
  	  (match_dup 1)))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r,&r,&r")
  	(plus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
--- 10796,10805 ----
    [(set (reg:CCC FLAGS_REG)
  	(compare:CCC
  	  (plus:<DWI>
! 	    (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,r,o,r,r,o,jO,r")
! 	    (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,r,r,<di>,K,K,<di>,o"))
  	  (match_dup 1)))
!    (set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r,&r,&r,&r,&r")
  	(plus:<DWI> (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (PLUS, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 10543,10552 ****
    else
      operands[6] = gen_rtx_ZERO_EXTEND (<DWI>mode, operands[5]);
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")])
  
  ;; x == 0 with zero flag test can be done also as x < 1U with carry flag
! ;; test, where the latter is preferrable if we have some carry consuming
  ;; instruction.
  ;; For x != 0, we need to use x < 1U with negation of carry, i.e.
  ;; + (1 - CF).
--- 10841,10854 ----
    else
      operands[6] = gen_rtx_ZERO_EXTEND (<DWI>mode, operands[5]);
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "3,6,7,8")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  ;; x == 0 with zero flag test can be done also as x < 1U with carry flag
! ;; test, where the latter is preferable if we have some carry consuming
  ;; instruction.
  ;; For x != 0, we need to use x < 1U with negation of carry, i.e.
  ;; + (1 - CF).
***************
*** 11022,11047 ****
  ;; On BDVER1, all HI MULs use DoublePath
  
  (define_insn "*mul<mode>3_1<nf_name>"
!   [(set (match_operand:SWIM248 0 "register_operand" "=r,r,r,r")
  	(mult:SWIM248
! 	  (match_operand:SWIM248 1 "nonimmediate_operand" "%rm,rm,0,r")
! 	  (match_operand:SWIM248 2 "<general_operand>" "K,<i>,<m>r,<m>r")))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))
     && <nf_condition>"
    "@
     <nf_prefix>imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>imul{<imodesuffix>}\t{%2, %0|%0, %2}
     <nf_prefix>imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "imul")
!    (set_attr "prefix_0f" "0,0,1,1")
!    (set_attr "isa" "*,*,*,apx_ndd")
     (set (attr "athlon_decode")
  	(cond [(eq_attr "cpu" "athlon")
  		  (const_string "vector")
  	       (eq_attr "alternative" "1")
  		  (const_string "vector")
! 	       (and (eq_attr "alternative" "2,3")
  	       	    (ior (match_test "<MODE>mode == HImode")
  		         (match_operand 1 "memory_operand")))
  		  (const_string "vector")]
--- 11324,11354 ----
  ;; On BDVER1, all HI MULs use DoublePath
  
  (define_insn "*mul<mode>3_1<nf_name>"
!   [(set (match_operand:SWIM248 0 "register_operand" "=r,r,r,r,r")
  	(mult:SWIM248
! 	  (match_operand:SWIM248 1 "nonimmediate_operand" "%rm,rm,0,r,r")
! 	  (match_operand:SWIM248 2 "<general_operand>" "K,<i>,<m>r,r,<m>")))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))
     && <nf_condition>"
    "@
     <nf_prefix>imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>imul{<imodesuffix>}\t{%2, %0|%0, %2}
+    <nf_prefix>imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "imul")
!    (set_attr "prefix_0f" "0,0,1,1,1")
!    (set_attr "isa" "*,*,*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "athlon_decode")
  	(cond [(eq_attr "cpu" "athlon")
  		  (const_string "vector")
  	       (eq_attr "alternative" "1")
  		  (const_string "vector")
! 	       (and (eq_attr "alternative" "2,3,4")
  	       	    (ior (match_test "<MODE>mode == HImode")
  		         (match_operand 1 "memory_operand")))
  		  (const_string "vector")]
***************
*** 11073,11082 ****
     (set_attr "mode" "HI")])
  
  (define_insn "*mulsi3_1_zext<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
! 	  (mult:SI (match_operand:SI 1 "nonimmediate_operand" "%rm,rm,0,r")
! 		   (match_operand:SI 2 "x86_64_general_operand" "K,e,BMr,BMr"))))]
    "TARGET_64BIT
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))
     && <nf_condition>"
--- 11380,11389 ----
     (set_attr "mode" "HI")])
  
  (define_insn "*mulsi3_1_zext<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
  	(zero_extend:DI
! 	  (mult:SI (match_operand:SI 1 "nonimmediate_operand" "%rm,rm,0,r,r")
! 		   (match_operand:SI 2 "x86_64_general_operand" "K,e,BMr,r,BM"))))]
    "TARGET_64BIT
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))
     && <nf_condition>"
***************
*** 11084,11093 ****
     <nf_prefix>imul{l}\t{%2, %1, %k0|%k0, %1, %2}
     <nf_prefix>imul{l}\t{%2, %1, %k0|%k0, %1, %2}
     <nf_prefix>imul{l}\t{%2, %k0|%k0, %2}
     <nf_prefix>imul{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "imul")
!    (set_attr "prefix_0f" "0,0,1,1")
!    (set_attr "isa" "*,*,*,apx_ndd")
     (set (attr "athlon_decode")
  	(cond [(eq_attr "cpu" "athlon")
  		  (const_string "vector")
--- 11391,11405 ----
     <nf_prefix>imul{l}\t{%2, %1, %k0|%k0, %1, %2}
     <nf_prefix>imul{l}\t{%2, %1, %k0|%k0, %1, %2}
     <nf_prefix>imul{l}\t{%2, %k0|%k0, %2}
+    <nf_prefix>imul{l}\t{%2, %1, %k0|%k0, %1, %2}
     <nf_prefix>imul{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "imul")
!    (set_attr "prefix_0f" "0,0,1,1,1")
!    (set_attr "isa" "*,*,*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "athlon_decode")
  	(cond [(eq_attr "cpu" "athlon")
  		  (const_string "vector")
***************
*** 11157,11188 ****
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (mult:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI48 1 "nonimmediate_operand" "%rm,0,r"))
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI48 2 "x86_64_sext_operand" "We,mr,mr")))
  		(sign_extend:<DWI>
  		   (mult:SWI48 (match_dup 1) (match_dup 2)))))
!    (set (match_operand:SWI48 0 "register_operand" "=r,r,r")
  	(mult:SWI48 (match_dup 1) (match_dup 2)))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
     imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     imul{<imodesuffix>}\t{%2, %0|%0, %2}
     imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "imul")
!    (set_attr "prefix_0f" "0,1,1")
!    (set_attr "isa" "*,*,apx_ndd")
     (set (attr "athlon_decode")
  	(cond [(eq_attr "cpu" "athlon")
  		  (const_string "vector")
  	       (eq_attr "alternative" "0")
  		  (const_string "vector")
! 	       (and (eq_attr "alternative" "1,2")
  		    (match_operand 1 "memory_operand"))
  		  (const_string "vector")]
  	      (const_string "direct")))
     (set (attr "amdfam10_decode")
! 	(cond [(and (eq_attr "alternative" "1,2")
  		    (match_operand 1 "memory_operand"))
  		  (const_string "vector")]
  	      (const_string "direct")))
--- 11469,11505 ----
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (mult:<DWI>
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI48 1 "nonimmediate_operand" "%rm,0,r,r"))
  		   (sign_extend:<DWI>
! 		      (match_operand:SWI48 2 "x86_64_sext_operand" "We,mr,r,m")))
  		(sign_extend:<DWI>
  		   (mult:SWI48 (match_dup 1) (match_dup 2)))))
!    (set (match_operand:SWI48 0 "register_operand" "=r,r,r,r")
  	(mult:SWI48 (match_dup 1) (match_dup 2)))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
     imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     imul{<imodesuffix>}\t{%2, %0|%0, %2}
+    imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     imul{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "imul")
!    (set_attr "prefix_0f" "0,1,1,1")
!    (set_attr "isa" "*,*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "athlon_decode")
  	(cond [(eq_attr "cpu" "athlon")
  		  (const_string "vector")
  	       (eq_attr "alternative" "0")
  		  (const_string "vector")
! 	       (and (eq_attr "alternative" "1,2,3")
  		    (match_operand 1 "memory_operand"))
  		  (const_string "vector")]
  	      (const_string "direct")))
     (set (attr "amdfam10_decode")
! 	(cond [(and (eq_attr "alternative" "1,2,3")
  		    (match_operand 1 "memory_operand"))
  		  (const_string "vector")]
  	      (const_string "direct")))
***************
*** 11193,11212 ****
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (mult:SI
  		   (sign_extend:SI
! 		      (match_operand:HI 1 "nonimmediate_operand" "%0,r"))
  		   (sign_extend:SI
! 		      (match_operand:HI 2 "nonimmediate_operand" "mr,mr")))
  		(sign_extend:SI
  		   (mult:HI (match_dup 1) (match_dup 2)))))
!    (set (match_operand:HI 0 "register_operand" "=r,r")
  	(mult:HI (match_dup 1) (match_dup 2)))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
     imul{w}\t{%2, %0|%0, %2}
     imul{w}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "imul")
     (set_attr "prefix_0f" "1")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "athlon_decode" "vector")
     (set_attr "amdfam10_decode" "direct")
     (set_attr "bdver1_decode" "double")
--- 11510,11534 ----
    [(set (reg:CCO FLAGS_REG)
  	(eq:CCO (mult:SI
  		   (sign_extend:SI
! 		      (match_operand:HI 1 "nonimmediate_operand" "%0,r,r"))
  		   (sign_extend:SI
! 		      (match_operand:HI 2 "nonimmediate_operand" "mr,r,m")))
  		(sign_extend:SI
  		   (mult:HI (match_dup 1) (match_dup 2)))))
!    (set (match_operand:HI 0 "register_operand" "=r,r,r")
  	(mult:HI (match_dup 1) (match_dup 2)))]
    "!(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
     imul{w}\t{%2, %0|%0, %2}
+    imul{w}\t{%2, %1, %0|%0, %1, %2}
     imul{w}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "imul")
     (set_attr "prefix_0f" "1")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "athlon_decode" "vector")
     (set_attr "amdfam10_decode" "direct")
     (set_attr "bdver1_decode" "double")
***************
*** 12918,12927 ****
  })
  
  (define_insn_and_split "*and<dwi>3_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r,&r,&r")
  	(and:<DWI>
! 	 (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,ro,r,ro,jO,r")
! 	 (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,r,<di>,K,<di>,o")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (AND, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
--- 13240,13249 ----
  })
  
  (define_insn_and_split "*and<dwi>3_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r,&r,&r,&r")
  	(and:<DWI>
! 	 (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,r,o,r,o,jO,r")
! 	 (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,r<di>,r,K,K,<di>,o")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (AND, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 12958,12970 ****
  
    DONE;
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")])
  
  (define_insn "*anddi_1<nf_name>"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,rm,r<nf_mem_constraint>,r,r,r,r,r,?k")
  	(and:DI
! 	 (match_operand:DI 1 "nonimmediate_operand" "%0,r,0,0,0,rm,rjM,r,qm,k")
! 	 (match_operand:DI 2 "x86_64_szext_general_operand" "Z,Z,r,e,m,r,e,m,L,k")))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (AND, DImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
--- 13280,13296 ----
  
    DONE;
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "3,5,6,7")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn "*anddi_1<nf_name>"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,rm,r<nf_mem_constraint>,r,r,r,r,r,r,?k")
  	(and:DI
! 	 (match_operand:DI 1 "nonimmediate_operand" "%0,r,0,0,0,r,m,jM,r,qm,k")
! 	 (match_operand:DI 2 "x86_64_szext_general_operand" "Z,Z,r,e,m,re,r,e,m,L,k")))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (AND, DImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
***************
*** 12977,12987 ****
     <nf_prefix>and{q}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{q}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{q}\t{%2, %1, %0|%0, %1, %2}
     #
     #"
!   [(set_attr "isa" "x64,apx_ndd,x64,x64,x64,apx_ndd,apx_ndd,apx_ndd,<nf_nonf_x64_attr>,avx512bw")
!    (set_attr "type" "alu,alu,alu,alu,alu,alu,alu,alu,imovx,msklog")
!    (set_attr "length_immediate" "*,*,*,*,*,*,*,*,0,*")
     (set (attr "prefix_rex")
       (if_then_else
         (and (eq_attr "type" "imovx")
--- 13303,13318 ----
     <nf_prefix>and{q}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{q}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{q}\t{%2, %1, %0|%0, %1, %2}
+    <nf_prefix>and{q}\t{%2, %1, %0|%0, %1, %2}
     #
     #"
!   [(set_attr "isa" "x64,apx_ndd,x64,x64,x64,apx_ndd,apx_ndd,apx_ndd,apx_ndd,<nf_nonf_x64_attr>,avx512bw")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "6,7,8")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu,alu,alu,alu,alu,alu,alu,alu,alu,imovx,msklog")
!    (set_attr "length_immediate" "*,*,*,*,*,*,*,*,*,0,*")
     (set (attr "prefix_rex")
       (if_then_else
         (and (eq_attr "type" "imovx")
***************
*** 12990,12996 ****
         (const_string "1")
         (const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "SI,SI,DI,DI,DI,DI,DI,DI,SI,DI")])
  
  (define_insn_and_split "*anddi_1_btr"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
--- 13321,13327 ----
         (const_string "1")
         (const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "SI,SI,DI,DI,DI,DI,DI,DI,DI,SI,DI")])
  
  (define_insn_and_split "*anddi_1_btr"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
***************
*** 13045,13083 ****
  })
  
  (define_insn "*andqi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
! 	  (and:QI (match_operand:QI 1 "nonimmediate_operand" "%rm,r")
! 		  (match_operand:QI 2 "x86_64_general_operand" "rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix>and{b}\t{%2, %1, %b0|%b0, %1, %2}
    <nf_prefix>and{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*andhi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
! 	  (and:HI (match_operand:HI 1 "nonimmediate_operand" "%rm,r")
! 		  (match_operand:HI 2 "x86_64_general_operand" "rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix>and{w}\t{%2, %1, %w0|%w0, %1, %2}
    <nf_prefix>and{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  (define_insn "*andsi_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
! 	  (and:SI (match_operand:SI 1 "nonimmediate_operand" "%0,rm,rjM,r")
! 		  (match_operand:SI 2 "x86_64_general_operand" "rBMe,r,e,BM"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (AND, SImode, operands, TARGET_APX_NDD)"
--- 13376,13424 ----
  })
  
  (define_insn "*andqi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI248x
! 	  (and:QI (match_operand:QI 1 "nonimmediate_operand" "%r,m,r")
! 		  (match_operand:QI 2 "x86_64_general_operand" "rn,rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix>and{b}\t{%2, %1, %b0|%b0, %1, %2}
+   <nf_prefix>and{b}\t{%2, %1, %b0|%b0, %1, %2}
    <nf_prefix>and{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*andhi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI48x
! 	  (and:HI (match_operand:HI 1 "nonimmediate_operand" "%r,m,r")
! 		  (match_operand:HI 2 "x86_64_general_operand" "rn,rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix>and{w}\t{%2, %1, %w0|%w0, %1, %2}
+   <nf_prefix>and{w}\t{%2, %1, %w0|%w0, %1, %2}
    <nf_prefix>and{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  (define_insn "*andsi_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
  	(zero_extend:DI
! 	  (and:SI (match_operand:SI 1 "nonimmediate_operand" "%0,r,m,jM,r")
! 		  (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,r,e,BM"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (AND, SImode, operands, TARGET_APX_NDD)"
***************
*** 13085,13099 ****
    and{l}\t{%2, %k0|%k0, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
     (set_attr "mode" "SI")])
  
  (define_insn "*and<mode>_1<nf_name>"
!   [(set (match_operand:SWI24 0 "nonimmediate_operand" "=rm,r<nf_mem_constraint>,r,r,r,r,Ya,?k")
! 	(and:SWI24 (match_operand:SWI24 1 "nonimmediate_operand" "%0,0,0,rm,rjM,r,qm,k")
! 		   (match_operand:SWI24 2 "<general_operand>" "r,<i>,<m>,r,<i>,<m>,L,k")))]
    "ix86_binary_operator_ok (AND, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
--- 13426,13445 ----
    and{l}\t{%2, %k0|%k0, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}
+   and{l}\t{%2, %1, %k0|%k0, %1, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "SI")])
  
  (define_insn "*and<mode>_1<nf_name>"
!   [(set (match_operand:SWI24 0 "nonimmediate_operand" "=rm,r<nf_mem_constraint>,r,r,r,r,r,r,Ya,?k")
! 	(and:SWI24 (match_operand:SWI24 1 "nonimmediate_operand" "%0,0,0,r,m,r,jM,r,qm,k")
! 		   (match_operand:SWI24 2 "<general_operand>" "r,<i>,<m>,r,r,<i>,<i>,<m>,L,k")))]
    "ix86_binary_operator_ok (AND, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
***************
*** 13103,13123 ****
     <nf_prefix>and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     #
     #"
    [(set (attr "isa")
! 	(cond [(eq_attr "alternative" "3,4,5")
  		 (const_string "apx_ndd")
! 	       (eq_attr "alternative" "6")
  		 (const_string "<nf_nonf_attr>")
! 	       (eq_attr "alternative" "7")
  		 (if_then_else (eq_attr "mode" "SI")
  		   (const_string "avx512bw")
  		   (const_string "avx512f"))
  	      ]
  	      (const_string "*")))
!    (set_attr "type" "alu,alu,alu,alu,alu,alu,imovx,msklog")
!    (set_attr "length_immediate" "*,*,*,*,*,*,0,*")
     (set (attr "prefix_rex")
       (if_then_else
         (and (eq_attr "type" "imovx")
--- 13449,13471 ----
     <nf_prefix>and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+    <nf_prefix>and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+    <nf_prefix>and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     #
     #"
    [(set (attr "isa")
! 	(cond [(eq_attr "alternative" "3,4,5,6,7")
  		 (const_string "apx_ndd")
! 	       (eq_attr "alternative" "8")
  		 (const_string "<nf_nonf_attr>")
! 	       (eq_attr "alternative" "9")
  		 (if_then_else (eq_attr "mode" "SI")
  		   (const_string "avx512bw")
  		   (const_string "avx512f"))
  	      ]
  	      (const_string "*")))
!    (set_attr "type" "alu,alu,alu,alu,alu,alu,alu,alu,imovx,msklog")
!    (set_attr "length_immediate" "*,*,*,*,*,*,*,*,0,*")
     (set (attr "prefix_rex")
       (if_then_else
         (and (eq_attr "type" "imovx")
***************
*** 13126,13137 ****
         (const_string "1")
         (const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "<MODE>,<MODE>,<MODE>,<MODE>,<MODE>,<MODE>,SI,<MODE>")])
  
  (define_insn "*andqi_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r,?k")
! 	(and:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,rm,r,k")
! 		(match_operand:QI 2 "general_operand" "qn,m,rn,rn,m,k")))]
    "ix86_binary_operator_ok (AND, QImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
--- 13474,13489 ----
         (const_string "1")
         (const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "<MODE>,<MODE>,<MODE>,<MODE>,<MODE>,<MODE>,<MODE>,<MODE>,SI,<MODE>")
!    (set (attr "preferred_for_speed")
! 	(cond [(eq_attr "alternative" "4,6,7")
! 		 (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	      (symbol_ref "true")))])
  
  (define_insn "*andqi_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r,r,?k")
! 	(and:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,r,m,r,k")
! 		(match_operand:QI 2 "general_operand" "qn,m,rn,rn,rn,m,k")))]
    "ix86_binary_operator_ok (AND, QImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
***************
*** 13140,13153 ****
     <nf_prefix>and{l}\t{%k2, %k0|%k0, %k2}
     <nf_prefix>and{b}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{b}\t{%2, %1, %0|%0, %1, %2}
     #"
!   [(set_attr "type" "alu,alu,alu,alu,alu,msklog")
!    (set_attr "isa" "*,*,*,apx_ndd,apx_ndd,*")
     (set_attr "has_nf" "1")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "2")
  		 (const_string "SI")
! 		(and (eq_attr "alternative" "5")
  		     (match_test "!TARGET_AVX512DQ"))
  		 (const_string "HI")
  	       ]
--- 13492,13510 ----
     <nf_prefix>and{l}\t{%k2, %k0|%k0, %k2}
     <nf_prefix>and{b}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>and{b}\t{%2, %1, %0|%0, %1, %2}
+    <nf_prefix>and{b}\t{%2, %1, %0|%0, %1, %2}
     #"
!   [(set_attr "type" "alu,alu,alu,alu,alu,alu,msklog")
!    (set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,*")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "2")
  		 (const_string "SI")
! 		(and (eq_attr "alternative" "6")
  		     (match_test "!TARGET_AVX512DQ"))
  		 (const_string "HI")
  	       ]
***************
*** 13320,13329 ****
    [(set (reg FLAGS_REG)
  	(compare
  	 (and:DI
! 	  (match_operand:DI 1 "nonimmediate_operand" "%0,0,0,r,rm,r")
! 	  (match_operand:DI 2 "x86_64_szext_general_operand" "Z,re,m,Z,re,m"))
  	 (const_int 0)))
!    (set (match_operand:DI 0 "nonimmediate_operand" "=r,rm,r,r,r,r")
  	(and:DI (match_dup 1) (match_dup 2)))]
    "TARGET_64BIT
     && ix86_match_ccmode
--- 13677,13686 ----
    [(set (reg FLAGS_REG)
  	(compare
  	 (and:DI
! 	  (match_operand:DI 1 "nonimmediate_operand" "%0,0,0,r,r,m,r")
! 	  (match_operand:DI 2 "x86_64_szext_general_operand" "Z,re,m,Z,re,re,m"))
  	 (const_int 0)))
!    (set (match_operand:DI 0 "nonimmediate_operand" "=r,rm,r,r,r,r,r")
  	(and:DI (match_dup 1) (match_dup 2)))]
    "TARGET_64BIT
     && ix86_match_ccmode
***************
*** 13344,13380 ****
     and{q}\t{%2, %0|%0, %2}
     and{l}\t{%k2, %k1, %k0|%k0, %k1, %k2}
     and{q}\t{%2, %1, %0|%0, %1, %2}
     and{q}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set_attr "mode" "SI,DI,DI,SI,DI,DI")])
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  (define_insn "*andsi_2_zext"
    [(set (reg FLAGS_REG)
  	(compare (and:SI
! 		  (match_operand:SI 1 "nonimmediate_operand" "%0,rm,r")
! 		  (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,BM"))
  		 (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI (and:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (AND, SImode, operands, TARGET_APX_NDD)"
    "@
    and{l}\t{%2, %k0|%k0, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "mode" "SI")])
  
  (define_insn "*andqi_2_maybe_si"
    [(set (reg FLAGS_REG)
  	(compare (and:QI
! 		  (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,rm,r")
! 		  (match_operand:QI 2 "general_operand" "qn,m,n,rn,m"))
  		 (const_int 0)))
!    (set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r")
  	(and:QI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (AND, QImode, operands, TARGET_APX_NDD)
     && ix86_match_ccmode (insn,
--- 13701,13747 ----
     and{q}\t{%2, %0|%0, %2}
     and{l}\t{%k2, %k1, %k0|%k0, %k1, %k2}
     and{q}\t{%2, %1, %0|%0, %1, %2}
+    and{q}\t{%2, %1, %0|%0, %1, %2}
     and{q}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "5,6")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "mode" "SI,DI,DI,SI,DI,DI,DI")])
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  (define_insn "*andsi_2_zext"
    [(set (reg FLAGS_REG)
  	(compare (and:SI
! 		  (match_operand:SI 1 "nonimmediate_operand" "%0,r,m,r")
! 		  (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,re,BM"))
  		 (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI (and:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (AND, SImode, operands, TARGET_APX_NDD)"
    "@
    and{l}\t{%2, %k0|%k0, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}
+   and{l}\t{%2, %1, %k0|%k0, %1, %2}
    and{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "SI")])
  
  (define_insn "*andqi_2_maybe_si"
    [(set (reg FLAGS_REG)
  	(compare (and:QI
! 		  (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,r,m,r")
! 		  (match_operand:QI 2 "general_operand" "qn,m,n,rn,rn,m"))
  		 (const_int 0)))
!    (set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r,r")
  	(and:QI (match_dup 1) (match_dup 2)))]
    "ix86_binary_operator_ok (AND, QImode, operands, TARGET_APX_NDD)
     && ix86_match_ccmode (insn,
***************
*** 13392,13400 ****
    return "and{b}\t{%2, %0|%0, %2}";
  }
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,*,*,apx_ndd,apx_ndd")
     (set (attr "mode")
!      (cond [(eq_attr "alternative" "3,4")
  	      (const_string "QI")
  	    (eq_attr "alternative" "2")
  	      (const_string "SI")
--- 13759,13771 ----
    return "and{b}\t{%2, %0|%0, %2}";
  }
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "mode")
!      (cond [(eq_attr "alternative" "3,4,5")
  	      (const_string "QI")
  	    (eq_attr "alternative" "2")
  	      (const_string "SI")
***************
*** 13413,13422 ****
  (define_insn "*and<mode>_2"
    [(set (reg FLAGS_REG)
  	(compare (and:SWI124
! 		  (match_operand:SWI124 1 "nonimmediate_operand" "%0,0,rm,r")
! 		  (match_operand:SWI124 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>"))
  		 (const_int 0)))
!    (set (match_operand:SWI124 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(and:SWI124 (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (AND, <MODE>mode, operands, TARGET_APX_NDD)"
--- 13784,13793 ----
  (define_insn "*and<mode>_2"
    [(set (reg FLAGS_REG)
  	(compare (and:SWI124
! 		  (match_operand:SWI124 1 "nonimmediate_operand" "%0,0,r,m,r")
! 		  (match_operand:SWI124 2 "<general_operand>" "<r><i>,<m>,r<i>,r<i>,<m>"))
  		 (const_int 0)))
!    (set (match_operand:SWI124 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r")
  	(and:SWI124 (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (AND, <MODE>mode, operands, TARGET_APX_NDD)"
***************
*** 13424,13432 ****
    and{<imodesuffix>}\t{%2, %0|%0, %2}
    and{<imodesuffix>}\t{%2, %0|%0, %2}
    and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*<code>qi_ext<mode>_0"
--- 13795,13808 ----
    and{<imodesuffix>}\t{%2, %0|%0, %2}
    and{<imodesuffix>}\t{%2, %0|%0, %2}
    and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    and{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*<code>qi_ext<mode>_0"
***************
*** 13925,13932 ****
  (define_insn_and_split "*<code><dwi>3_doubleword"
    [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r,&r,&r")
  	(any_or:<DWI>
! 	 (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,ro,r,ro,jO,r")
! 	 (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,r,<di>,K,<di>,o")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (<CODE>, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
--- 14301,14308 ----
  (define_insn_and_split "*<code><dwi>3_doubleword"
    [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,&r,&r,&r,&r,&r")
  	(any_or:<DWI>
! 	 (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0,r,o,r,jO,r")
! 	 (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o,rK,rK,<di>,<di>,o")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (<CODE>, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 13979,13991 ****
  
    DONE;
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")])
  
  (define_insn "*<code><mode>_1<nf_name>"
!   [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,r<nf_mem_constraint>,r,r,r,r,?k")
  	(any_or:SWI248
! 	 (match_operand:SWI248 1 "nonimmediate_operand" "%0,0,0,rm,rjM,r,k")
! 	 (match_operand:SWI248 2 "<general_operand>" "r,<i>,<m>,r,<i>,<m>,k")))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
--- 14355,14371 ----
  
    DONE;
  }
! [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "3,5,6")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn "*<code><mode>_1<nf_name>"
!   [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,r<nf_mem_constraint>,r,r,r,r,r,?k")
  	(any_or:SWI248
! 	 (match_operand:SWI248 1 "nonimmediate_operand" "%0,0,0,r,m,jM,r,k")
! 	 (match_operand:SWI248 2 "<general_operand>" "r,<i>,<m>,r<i>,r,<i>,<m>,k")))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
***************
*** 13995,14012 ****
     <nf_prefix><logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix><logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix><logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     #"
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,<kmov_isa>")
!    (set_attr "type" "alu,alu, alu, alu, alu, alu, msklog")
     (set_attr "has_nf" "1")
     (set_attr "mode" "<MODE>")])
  
  (define_insn_and_split "*notxor<mode>_1"
!   [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,r,r,r,?k")
  	(not:SWI248
  	  (xor:SWI248
! 	    (match_operand:SWI248 1 "nonimmediate_operand" "%0,0,rm,r,k")
! 	    (match_operand:SWI248 2 "<general_operand>" "r<i>,<m>,r<i>,<m>,k"))))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (XOR, <MODE>mode, operands, TARGET_APX_NDD)"
    "#"
--- 14375,14397 ----
     <nf_prefix><logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix><logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix><logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+    <nf_prefix><logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     #"
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd,<kmov_isa>")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4,5,6")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu, alu, alu, alu, alu, alu, alu, msklog")
     (set_attr "has_nf" "1")
     (set_attr "mode" "<MODE>")])
  
  (define_insn_and_split "*notxor<mode>_1"
!   [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,r,r,r,r,?k")
  	(not:SWI248
  	  (xor:SWI248
! 	    (match_operand:SWI248 1 "nonimmediate_operand" "%0,0,r,m,r,k")
! 	    (match_operand:SWI248 2 "<general_operand>" "r<i>,<m>,r<i>,r<i>,<m>,k"))))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (XOR, <MODE>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 14024,14031 ****
        DONE;
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,<kmov_isa>")
!    (set_attr "type" "alu, alu, alu, alu, msklog")
     (set_attr "mode" "<MODE>")])
  
  (define_insn_and_split "*iordi_1_bts"
--- 14409,14420 ----
        DONE;
      }
  }
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,<kmov_isa>")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu, alu, alu, alu, alu, msklog")
     (set_attr "mode" "<MODE>")])
  
  (define_insn_and_split "*iordi_1_bts"
***************
*** 14114,14152 ****
  })
  
  (define_insn "*<code>qi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
! 	 (any_or:QI (match_operand:QI 1 "nonimmediate_operand" "%rm,r")
! 		    (match_operand:QI 2 "x86_64_general_operand" "rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix><logic>{b}\t{%2, %1, %b0|%b0, %1, %2}
    <nf_prefix><logic>{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*<code>hi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
! 	 (any_or:HI (match_operand:HI 1 "nonimmediate_operand" "%rm,r")
! 		    (match_operand:HI 2 "x86_64_general_operand" "rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix><logic>{w}\t{%2, %1, %w0|%w0, %1, %2}
    <nf_prefix><logic>{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  (define_insn "*<code>si_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
! 	 (any_or:SI (match_operand:SI 1 "nonimmediate_operand" "%0,rm,rjM,r")
! 		    (match_operand:SI 2 "x86_64_general_operand" "rBMe,r,e,BM"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
--- 14503,14551 ----
  })
  
  (define_insn "*<code>qi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI248x
! 	 (any_or:QI (match_operand:QI 1 "nonimmediate_operand" "%r,m,r")
! 		    (match_operand:QI 2 "x86_64_general_operand" "rn,rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix><logic>{b}\t{%2, %1, %b0|%b0, %1, %2}
+   <nf_prefix><logic>{b}\t{%2, %1, %b0|%b0, %1, %2}
    <nf_prefix><logic>{b}\t{%2, %1, %b0|%b0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*<code>hi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r,r")
  	(zero_extend:SWI48x
! 	 (any_or:HI (match_operand:HI 1 "nonimmediate_operand" "%r,m,r")
! 		    (match_operand:HI 2 "x86_64_general_operand" "rn,rn,m"))))]
    "TARGET_APX_NDD && <nf_condition>
     && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
    <nf_prefix><logic>{w}\t{%2, %1, %w0|%w0, %1, %2}
+   <nf_prefix><logic>{w}\t{%2, %1, %w0|%w0, %1, %2}
    <nf_prefix><logic>{w}\t{%2, %1, %w0|%w0, %1, %2}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  (define_insn "*<code>si_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
  	(zero_extend:DI
! 	 (any_or:SI (match_operand:SI 1 "nonimmediate_operand" "%0,r,m,jM,r")
! 		    (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,r,e,BM"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
***************
*** 14154,14183 ****
    <logic>{l}\t{%2, %k0|%k0, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
     (set_attr "mode" "SI")])
  
  (define_insn "*<code>si_1_zext_imm"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(any_or:DI
! 	 (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "%0,rm"))
! 	 (match_operand:DI 2 "x86_64_zext_immediate_operand" "Z,Z")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
    "@
    <logic>{l}\t{%2, %k0|%k0, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "SI")])
  
  (define_insn "*<code>qi_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r,?k")
! 	(any_or:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,rm,r,k")
! 		   (match_operand:QI 2 "general_operand" "qn,m,rn,rn,m,k")))]
    "ix86_binary_operator_ok (<CODE>, QImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
--- 14553,14592 ----
    <logic>{l}\t{%2, %k0|%k0, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
+   <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "SI")])
  
  (define_insn "*<code>si_1_zext_imm"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(any_or:DI
! 	 (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "%0,r,m"))
! 	 (match_operand:DI 2 "x86_64_zext_immediate_operand" "Z,Z,Z")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
    "@
    <logic>{l}\t{%2, %k0|%k0, %2}
+   <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "SI")])
  
  (define_insn "*<code>qi_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r,r,?k")
! 	(any_or:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,r,m,r,k")
! 		   (match_operand:QI 2 "general_operand" "qn,m,rn,rn,rn,m,k")))]
    "ix86_binary_operator_ok (<CODE>, QImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
***************
*** 14186,14199 ****
     <nf_prefix><logic>{l}\t{%k2, %k0|%k0, %k2}
     <nf_prefix><logic>{b}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix><logic>{b}\t{%2, %1, %0|%0, %1, %2}
     #"
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,avx512f")
!    (set_attr "type" "alu,alu,alu,alu,alu,msklog")
     (set_attr "has_nf" "1")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "2")
  		 (const_string "SI")
! 		(and (eq_attr "alternative" "5")
  		     (match_test "!TARGET_AVX512DQ"))
  		 (const_string "HI")
  	       ]
--- 14595,14613 ----
     <nf_prefix><logic>{l}\t{%k2, %k0|%k0, %k2}
     <nf_prefix><logic>{b}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix><logic>{b}\t{%2, %1, %0|%0, %1, %2}
+    <nf_prefix><logic>{b}\t{%2, %1, %0|%0, %1, %2}
     #"
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,avx512f")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu,alu,alu,alu,alu,alu,msklog")
     (set_attr "has_nf" "1")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "2")
  		 (const_string "SI")
! 		(and (eq_attr "alternative" "6")
  		     (match_test "!TARGET_AVX512DQ"))
  		 (const_string "HI")
  	       ]
***************
*** 14205,14214 ****
  	   (symbol_ref "true")))])
  
  (define_insn_and_split "*notxorqi_1"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r,?k")
  	(not:QI
! 	  (xor:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,rm,r,k")
! 		  (match_operand:QI 2 "general_operand" "qn,m,rn,rn,m,k"))))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (XOR, QImode, operands, TARGET_APX_NDD)"
    "#"
--- 14619,14628 ----
  	   (symbol_ref "true")))])
  
  (define_insn_and_split "*notxorqi_1"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r,r,?k")
  	(not:QI
! 	  (xor:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,r,m,r,k")
! 		  (match_operand:QI 2 "general_operand" "qn,m,rn,rn,rn,m,k"))))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (XOR, QImode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 14226,14237 ****
        DONE;
      }
  }
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,avx512f")
!    (set_attr "type" "alu,alu,alu,alu,alu,msklog")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "2")
  		 (const_string "SI")
! 		(and (eq_attr "alternative" "5")
  		     (match_test "!TARGET_AVX512DQ"))
  		 (const_string "HI")
  	       ]
--- 14640,14655 ----
        DONE;
      }
  }
!   [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,avx512f")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4,5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "alu,alu,alu,alu,alu,alu,msklog")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "2")
  		 (const_string "SI")
! 		(and (eq_attr "alternative" "6")
  		     (match_test "!TARGET_AVX512DQ"))
  		 (const_string "HI")
  	       ]
***************
*** 14279,14288 ****
  (define_insn "*<code><mode>_2"
    [(set (reg FLAGS_REG)
  	(compare (any_or:SWI
! 		  (match_operand:SWI 1 "nonimmediate_operand" "%0,0,rm,r")
! 		  (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,<m>"))
  		 (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r")
  	(any_or:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands, TARGET_APX_NDD)"
--- 14697,14706 ----
  (define_insn "*<code><mode>_2"
    [(set (reg FLAGS_REG)
  	(compare (any_or:SWI
! 		  (match_operand:SWI 1 "nonimmediate_operand" "%0,0,r,m,r")
! 		  (match_operand:SWI 2 "<general_operand>" "<r><i>,<m>,r<i>,r<i>,<m>"))
  		 (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>,r,r,r")
  	(any_or:SWI (match_dup 1) (match_dup 2)))]
    "ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (<CODE>, <MODE>mode, operands, TARGET_APX_NDD)"
***************
*** 14290,14334 ****
    <logic>{<imodesuffix>}\t{%2, %0|%0, %2}
    <logic>{<imodesuffix>}\t{%2, %0|%0, %2}
    <logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    <logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "mode" "<MODE>")])
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  ;; ??? Special case for immediate operand is missing - it is tricky.
  (define_insn "*<code>si_2_zext"
    [(set (reg FLAGS_REG)
! 	(compare (any_or:SI (match_operand:SI 1 "nonimmediate_operand" "%0,rm,r")
! 			    (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,BM"))
  		 (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI (any_or:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
    "@
    <logic>{l}\t{%2, %k0|%k0, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
     (set_attr "mode" "SI")])
  
  (define_insn "*<code>si_2_zext_imm"
    [(set (reg FLAGS_REG)
  	(compare (any_or:SI
! 		  (match_operand:SI 1 "nonimmediate_operand" "%0,rm")
! 		  (match_operand:SI 2 "x86_64_zext_immediate_operand" "Z,Z"))
  		 (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r")
  	(any_or:DI (zero_extend:DI (match_dup 1)) (match_dup 2)))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
    "@
    <logic>{l}\t{%2, %k0|%k0, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "SI")])
  
  ;; It must be put before *<code><mode>_3, the one below.
--- 14708,14767 ----
    <logic>{<imodesuffix>}\t{%2, %0|%0, %2}
    <logic>{<imodesuffix>}\t{%2, %0|%0, %2}
    <logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
+   <logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
    <logic>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "<MODE>")])
  
  ;; See comment for addsi_1_zext why we do use nonimmediate_operand
  ;; ??? Special case for immediate operand is missing - it is tricky.
  (define_insn "*<code>si_2_zext"
    [(set (reg FLAGS_REG)
! 	(compare (any_or:SI (match_operand:SI 1 "nonimmediate_operand" "%0,r,m,r")
! 			    (match_operand:SI 2 "x86_64_general_operand" "rBMe,re,re,BM"))
  		 (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI (any_or:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
    "@
    <logic>{l}\t{%2, %k0|%k0, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
+   <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2,3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "SI")])
  
  (define_insn "*<code>si_2_zext_imm"
    [(set (reg FLAGS_REG)
  	(compare (any_or:SI
! 		  (match_operand:SI 1 "nonimmediate_operand" "%0,r,m")
! 		  (match_operand:SI 2 "x86_64_zext_immediate_operand" "Z,Z,Z"))
  		 (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(any_or:DI (zero_extend:DI (match_dup 1)) (match_dup 2)))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
    "@
    <logic>{l}\t{%2, %k0|%k0, %2}
+   <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}
    <logic>{l}\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "alu")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "SI")])
  
  ;; It must be put before *<code><mode>_3, the one below.
***************
*** 14653,14660 ****
  })
  
  (define_insn_and_split "*neg<dwi>2_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,&r")
! 	(neg:<DWI> (match_operand:<DWI> 1 "nonimmediate_operand" "0,ro")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_unary_operator_ok (NEG, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
--- 15086,15093 ----
  })
  
  (define_insn_and_split "*neg<dwi>2_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,&r,&r")
! 	(neg:<DWI> (match_operand:<DWI> 1 "nonimmediate_operand" "0,r,o")))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_unary_operator_ok (NEG, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
***************
*** 14674,14680 ****
  	  (neg:DWIH (match_dup 2)))
       (clobber (reg:CC FLAGS_REG))])]
    "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[2]);"
!   [(set_attr "isa" "*,apx_ndd")])
  
  ;; Convert:
  ;;   mov %esi, %edx
--- 15107,15117 ----
  	  (neg:DWIH (match_dup 2)))
       (clobber (reg:CC FLAGS_REG))])]
    "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[2]);"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  ;; Convert:
  ;;   mov %esi, %edx
***************
*** 14763,14812 ****
       (clobber (reg:CC FLAGS_REG))])])
  
  (define_insn "*neg<mode>_1<nf_name>"
!   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r")
! 	(neg:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,rm")))]
    "ix86_unary_operator_ok (NEG, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
    <nf_prefix>neg{<imodesuffix>}\t%0
    <nf_prefix>neg{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "has_nf" "1")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*negqi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r")
  	(zero_extend:SWI248x
! 	  (neg:QI (match_operand:QI 1 "nonimmediate_operand" "rm"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>neg{b}\t{%b1, %b0|%b0, %b1}"
!   [(set_attr "type" "negnot")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*neghi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r")
  	(zero_extend:SWI48x
! 	  (neg:HI (match_operand:HI 1 "nonimmediate_operand" "rm"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>neg{w}\t{%w1, %w0|%w0, %w1}"
    [(set_attr "type" "negnot")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*negsi_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI
! 	  (neg:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_unary_operator_ok (NEG, SImode, operands, TARGET_APX_NDD)"
    "@
    neg{l}\t%k0
    neg{l}\t{%k1, %k0|%k0, %k1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "SI")])
  
  ;; Alternative 1 is needed to work around LRA limitation, see PR82524.
--- 15200,15267 ----
       (clobber (reg:CC FLAGS_REG))])])
  
  (define_insn "*neg<mode>_1<nf_name>"
!   [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r,r")
! 	(neg:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,r,m")))]
    "ix86_unary_operator_ok (NEG, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
    "@
    <nf_prefix>neg{<imodesuffix>}\t%0
+   <nf_prefix>neg{<imodesuffix>}\t{%1, %0|%0, %1}
    <nf_prefix>neg{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*negqi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
! 	  (neg:QI (match_operand:QI 1 "nonimmediate_operand" "r,m"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>neg{b}\t{%b1, %b0|%b0, %b1}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "negnot")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*neghi_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
! 	  (neg:HI (match_operand:HI 1 "nonimmediate_operand" "r,m"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>neg{w}\t{%w1, %w0|%w0, %w1}"
    [(set_attr "type" "negnot")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*negsi_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
! 	  (neg:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,m"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_unary_operator_ok (NEG, SImode, operands, TARGET_APX_NDD)"
    "@
    neg{l}\t%k0
+   neg{l}\t{%k1, %k0|%k0, %k1}
    neg{l}\t{%k1, %k0|%k0, %k1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "SI")])
  
  ;; Alternative 1 is needed to work around LRA limitation, see PR82524.
***************
*** 14832,14894 ****
  (define_insn "*neg<mode>_2"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (neg:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,rm"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r")
  	(neg:SWI (match_dup 1)))]
    "ix86_match_ccmode (insn, CCGOCmode)
     && ix86_unary_operator_ok (NEG, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
     neg{<imodesuffix>}\t%0
     neg{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*negsi_2_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (neg:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI
  	  (neg:SI (match_dup 1))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode)
     && ix86_unary_operator_ok (NEG, SImode, operands, TARGET_APX_NDD)"
    "@
     neg{l}\t%k0
     neg{l}\t{%1, %k0|%k0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "SI")])
  
  (define_insn "*neg<mode>_ccc_1"
    [(set (reg:CCC FLAGS_REG)
  	(unspec:CCC
! 	  [(match_operand:SWI 1 "nonimmediate_operand" "0,rm")
  	   (const_int 0)] UNSPEC_CC_NE))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r")
  	(neg:SWI (match_dup 1)))]
    ""
    "@
    neg{<imodesuffix>}\t%0
    neg{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*neg<mode>_ccc_2"
    [(set (reg:CCC FLAGS_REG)
  	(unspec:CCC
! 	  [(match_operand:SWI 1 "nonimmediate_operand" "0,rm")
  	   (const_int 0)] UNSPEC_CC_NE))
!    (clobber (match_scratch:SWI 0 "=<r>,r"))]
    ""
    "@
    neg{<imodesuffix>}\t%0
    neg{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "<MODE>")])
  
  (define_expand "x86_neg<mode>_ccc"
--- 15287,15369 ----
  (define_insn "*neg<mode>_2"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (neg:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,r,m"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r,r")
  	(neg:SWI (match_dup 1)))]
    "ix86_match_ccmode (insn, CCGOCmode)
     && ix86_unary_operator_ok (NEG, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
     neg{<imodesuffix>}\t%0
+    neg{<imodesuffix>}\t{%1, %0|%0, %1}
     neg{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*negsi_2_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (neg:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,m"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
  	  (neg:SI (match_dup 1))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCGOCmode)
     && ix86_unary_operator_ok (NEG, SImode, operands, TARGET_APX_NDD)"
    "@
     neg{l}\t%k0
+    neg{l}\t{%1, %k0|%k0, %1}
     neg{l}\t{%1, %k0|%k0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "SI")])
  
  (define_insn "*neg<mode>_ccc_1"
    [(set (reg:CCC FLAGS_REG)
  	(unspec:CCC
! 	  [(match_operand:SWI 1 "nonimmediate_operand" "0,r,m")
  	   (const_int 0)] UNSPEC_CC_NE))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r,r")
  	(neg:SWI (match_dup 1)))]
    ""
    "@
    neg{<imodesuffix>}\t%0
+   neg{<imodesuffix>}\t{%1, %0|%0, %1}
    neg{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*neg<mode>_ccc_2"
    [(set (reg:CCC FLAGS_REG)
  	(unspec:CCC
! 	  [(match_operand:SWI 1 "nonimmediate_operand" "0,r,m")
  	   (const_int 0)] UNSPEC_CC_NE))
!    (clobber (match_scratch:SWI 0 "=<r>,r,r"))]
    ""
    "@
    neg{<imodesuffix>}\t%0
+   neg{<imodesuffix>}\t{%1, %0|%0, %1}
    neg{<imodesuffix>}\t{%1, %0|%0, %1}"
    [(set_attr "type" "negnot")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "<MODE>")])
  
  (define_expand "x86_neg<mode>_ccc"
***************
*** 15402,15409 ****
  })
  
  (define_insn_and_split "*one_cmpl<dwi>2_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,&r")
! 	(not:<DWI> (match_operand:<DWI> 1 "nonimmediate_operand" "0,ro")))]
    "ix86_unary_operator_ok (NOT, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
    "&& reload_completed"
--- 15877,15884 ----
  })
  
  (define_insn_and_split "*one_cmpl<dwi>2_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,&r,&r")
! 	(not:<DWI> (match_operand:<DWI> 1 "nonimmediate_operand" "0,r,o")))]
    "ix86_unary_operator_ok (NOT, <DWI>mode, operands, TARGET_APX_NDD)"
    "#"
    "&& reload_completed"
***************
*** 15412,15478 ****
     (set (match_dup 2)
  	(not:DWIH (match_dup 3)))]
    "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[2]);"
!   [(set_attr "isa" "*,apx_ndd")])
  
  (define_insn "*one_cmpl<mode>2_1"
!   [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,r,?k")
! 	(not:SWI248 (match_operand:SWI248 1 "nonimmediate_operand" "0,rm,k")))]
    "ix86_unary_operator_ok (NOT, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
     not{<imodesuffix>}\t%0
     not{<imodesuffix>}\t{%1, %0|%0, %1}
     #"
!   [(set_attr "isa" "*,apx_ndd,<kmov_isa>")
!    (set_attr "type" "negnot,negnot,msklog")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*one_cmplqi2_1_zext<mode>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r")
  	(zero_extend:SWI248x
! 	  (not:QI (match_operand:QI 1 "nonimmediate_operand" "rm"))))]
    "TARGET_APX_NDD"
    "not{b}\t{%1, %b0|%b0, %1}"
!   [(set_attr "type" "negnot")
     (set_attr "mode" "QI")])
  
  (define_insn "*one_cmplhi2_1_zext<mode>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r")
  	(zero_extend:SWI48x
! 	  (not:HI (match_operand:HI 1 "nonimmediate_operand" "rm"))))]
    "TARGET_APX_NDD"
    "not{w}\t{%1, %w0|%w0, %1}"
    [(set_attr "type" "negnot")
     (set_attr "mode" "HI")])
  
  (define_insn "*one_cmplsi2_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,?k")
  	(zero_extend:DI
! 	  (not:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm,k"))))]
    "TARGET_64BIT
     && ix86_unary_operator_ok (NOT, SImode, operands, TARGET_APX_NDD)"
    "@
     not{l}\t%k0
     not{l}\t{%1, %k0|%k0, %1}
     #"
!   [(set_attr "isa" "x64,apx_ndd,avx512bw")
!    (set_attr "type" "negnot,negnot,msklog")
!    (set_attr "mode" "SI,SI,SI")])
  
  (define_insn "*one_cmplqi2_1"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,r,r,?k")
! 	(not:QI (match_operand:QI 1 "nonimmediate_operand" "0,0,rm,k")))]
    "ix86_unary_operator_ok (NOT, QImode, operands, TARGET_APX_NDD)"
    "@
     not{b}\t%0
     not{l}\t%k0
     not{b}\t{%1, %0|%0, %1}
     #"
!   [(set_attr "isa" "*,*,apx_ndd,avx512f")
!    (set_attr "type" "negnot,negnot,negnot,msklog")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "1")
  		 (const_string "SI")
! 		(and (eq_attr "alternative" "3")
  		     (match_test "!TARGET_AVX512DQ"))
  		 (const_string "HI")
  	       ]
--- 15887,15980 ----
     (set (match_dup 2)
  	(not:DWIH (match_dup 3)))]
    "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[2]);"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn "*one_cmpl<mode>2_1"
!   [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,r,r,?k")
! 	(not:SWI248 (match_operand:SWI248 1 "nonimmediate_operand" "0,r,m,k")))]
    "ix86_unary_operator_ok (NOT, <MODE>mode, operands, TARGET_APX_NDD)"
    "@
     not{<imodesuffix>}\t%0
     not{<imodesuffix>}\t{%1, %0|%0, %1}
+    not{<imodesuffix>}\t{%1, %0|%0, %1}
     #"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd,<kmov_isa>")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "negnot,negnot,negnot,msklog")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*one_cmplqi2_1_zext<mode>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
! 	  (not:QI (match_operand:QI 1 "nonimmediate_operand" "r,m"))))]
    "TARGET_APX_NDD"
    "not{b}\t{%1, %b0|%b0, %1}"
!   [(set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "negnot")
     (set_attr "mode" "QI")])
  
  (define_insn "*one_cmplhi2_1_zext<mode>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
! 	  (not:HI (match_operand:HI 1 "nonimmediate_operand" "r,m"))))]
    "TARGET_APX_NDD"
    "not{w}\t{%1, %w0|%w0, %1}"
    [(set_attr "type" "negnot")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "mode" "HI")])
  
  (define_insn "*one_cmplsi2_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,?k")
  	(zero_extend:DI
! 	  (not:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,m,k"))))]
    "TARGET_64BIT
     && ix86_unary_operator_ok (NOT, SImode, operands, TARGET_APX_NDD)"
    "@
     not{l}\t%k0
     not{l}\t{%1, %k0|%k0, %1}
+    not{l}\t{%1, %k0|%k0, %1}
     #"
!   [(set_attr "isa" "x64,apx_ndd,apx_ndd,avx512bw")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "negnot,negnot,negnot,msklog")
!    (set_attr "mode" "SI,SI,SI,SI")])
  
  (define_insn "*one_cmplqi2_1"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,r,r,r,?k")
! 	(not:QI (match_operand:QI 1 "nonimmediate_operand" "0,0,r,m,k")))]
    "ix86_unary_operator_ok (NOT, QImode, operands, TARGET_APX_NDD)"
    "@
     not{b}\t%0
     not{l}\t%k0
     not{b}\t{%1, %0|%0, %1}
+    not{b}\t{%1, %0|%0, %1}
     #"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,avx512f")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "negnot,negnot,negnot,negnot,msklog")
     (set (attr "mode")
  	(cond [(eq_attr "alternative" "1")
  		 (const_string "SI")
! 		(and (eq_attr "alternative" "4")
  		     (match_test "!TARGET_AVX512DQ"))
  		 (const_string "HI")
  	       ]
***************
*** 15502,15516 ****
  
  (define_insn "*one_cmpl<mode>2_2"
    [(set (reg FLAGS_REG)
! 	(compare (not:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,rm"))
  		 (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r")
  	(not:SWI (match_dup 1)))]
    "ix86_match_ccmode (insn, CCNOmode)
     && ix86_unary_operator_ok (NOT, <MODE>mode, operands, TARGET_APX_NDD)"
    "#"
    [(set_attr "type" "alu1")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "<MODE>")])
  
  (define_split
--- 16004,16022 ----
  
  (define_insn "*one_cmpl<mode>2_2"
    [(set (reg FLAGS_REG)
! 	(compare (not:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,r,m"))
  		 (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r,r")
  	(not:SWI (match_dup 1)))]
    "ix86_match_ccmode (insn, CCNOmode)
     && ix86_unary_operator_ok (NOT, <MODE>mode, operands, TARGET_APX_NDD)"
    "#"
    [(set_attr "type" "alu1")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "<MODE>")])
  
  (define_split
***************
*** 15529,15543 ****
  
  (define_insn "*one_cmplsi2_2_zext"
    [(set (reg FLAGS_REG)
! 	(compare (not:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm"))
  		 (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI (not:SI (match_dup 1))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)
     && ix86_unary_operator_ok (NOT, SImode, operands, TARGET_APX_NDD)"
    "#"
    [(set_attr "type" "alu1")
!    (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "SI")])
  
  (define_split
--- 16035,16053 ----
  
  (define_insn "*one_cmplsi2_2_zext"
    [(set (reg FLAGS_REG)
! 	(compare (not:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,m"))
  		 (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI (not:SI (match_dup 1))))]
    "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)
     && ix86_unary_operator_ok (NOT, SImode, operands, TARGET_APX_NDD)"
    "#"
    [(set_attr "type" "alu1")
!    (set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "mode" "SI")])
  
  (define_split
***************
*** 15781,15789 ****
  })
  
  (define_insn_and_split "*ashl<dwi>3_doubleword_highpart"
!   [(set (match_operand:<DWI> 0 "register_operand" "=r")
  	(ashift:<DWI>
! 	  (any_extend:<DWI> (match_operand:DWIH 1 "nonimmediate_operand" "rm"))
  	  (match_operand:QI 2 "const_int_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "INTVAL (operands[2]) >= <MODE_SIZE> * BITS_PER_UNIT
--- 16291,16299 ----
  })
  
  (define_insn_and_split "*ashl<dwi>3_doubleword_highpart"
!   [(set (match_operand:<DWI> 0 "register_operand" "=r,r")
  	(ashift:<DWI>
! 	  (any_extend:<DWI> (match_operand:DWIH 1 "nonimmediate_operand" "r,m"))
  	  (match_operand:QI 2 "const_int_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "INTVAL (operands[2]) >= <MODE_SIZE> * BITS_PER_UNIT
***************
*** 15809,15815 ****
      }
    ix86_expand_clear (operands[0]);
    DONE;
! })
  
  (define_insn "x86_64_shld<nf_name>"
    [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m")
--- 16319,16330 ----
      }
    ix86_expand_clear (operands[0]);
    DONE;
! }
! [(set_attr "isa" "*,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "1")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn "x86_64_shld<nf_name>"
    [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m")
***************
*** 15833,15851 ****
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_64_shld_ndd<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r")
!         (ior:DI (ashift:DI (match_operand:DI 1 "nonimmediate_operand" "rm")
! 		  (and:QI (match_operand:QI 3 "nonmemory_operand" "Jc")
  			  (const_int 63)))
  		(subreg:DI
  		  (lshiftrt:TI
  		    (zero_extend:TI
! 		      (match_operand:DI 2 "register_operand" "r"))
  		    (minus:QI (const_int 64)
  			      (and:QI (match_dup 3) (const_int 63)))) 0)))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>shld{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
     (set_attr "has_nf" "1")
     (set_attr "mode" "DI")])
  
--- 16348,16370 ----
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_64_shld_ndd<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
!         (ior:DI (ashift:DI (match_operand:DI 1 "nonimmediate_operand" "r,m")
! 		  (and:QI (match_operand:QI 3 "nonmemory_operand" "Jc,Jc")
  			  (const_int 63)))
  		(subreg:DI
  		  (lshiftrt:TI
  		    (zero_extend:TI
! 		      (match_operand:DI 2 "register_operand" "r,r"))
  		    (minus:QI (const_int 64)
  			      (and:QI (match_dup 3) (const_int 63)))) 0)))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>shld{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "DI")])
  
***************
*** 15872,15890 ****
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_64_shld_ndd_1<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r")
!         (ior:DI (ashift:DI (match_operand:DI 1 "nonimmediate_operand" "rm")
  			   (match_operand:QI 3 "const_0_to_63_operand"))
  		(subreg:DI
  		  (lshiftrt:TI
  		    (zero_extend:TI
! 		      (match_operand:DI 2 "register_operand" "r"))
  		    (match_operand:QI 4 "const_0_to_255_operand")) 0)))]
    "TARGET_APX_NDD
     && INTVAL (operands[4]) == 64 - INTVAL (operands[3])
     && <nf_condition>"
    "<nf_prefix>shld{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
     (set_attr "has_nf" "1")
     (set_attr "mode" "DI")
     (set_attr "length_immediate" "1")])
--- 16391,16413 ----
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_64_shld_ndd_1<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
!         (ior:DI (ashift:DI (match_operand:DI 1 "nonimmediate_operand" "r,m")
  			   (match_operand:QI 3 "const_0_to_63_operand"))
  		(subreg:DI
  		  (lshiftrt:TI
  		    (zero_extend:TI
! 		      (match_operand:DI 2 "register_operand" "r,r"))
  		    (match_operand:QI 4 "const_0_to_255_operand")) 0)))]
    "TARGET_APX_NDD
     && INTVAL (operands[4]) == 64 - INTVAL (operands[3])
     && <nf_condition>"
    "<nf_prefix>shld{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "DI")
     (set_attr "length_immediate" "1")])
***************
*** 16064,16082 ****
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_shld_ndd<nf_name>"
!   [(set (match_operand:SI 0 "nonimmediate_operand" "=r")
!         (ior:SI (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "rm")
! 		  (and:QI (match_operand:QI 3 "nonmemory_operand" "Ic")
  			  (const_int 31)))
  		(subreg:SI
  		  (lshiftrt:DI
  		    (zero_extend:DI
! 		      (match_operand:SI 2 "register_operand" "r"))
  		    (minus:QI (const_int 32)
  			      (and:QI (match_dup 3) (const_int 31)))) 0)))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>shld{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
     (set_attr "has_nf" "1")
     (set_attr "mode" "SI")])
  
--- 16587,16609 ----
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_shld_ndd<nf_name>"
!   [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r")
!         (ior:SI (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "r,m")
! 		  (and:QI (match_operand:QI 3 "nonmemory_operand" "Ic,Ic")
  			  (const_int 31)))
  		(subreg:SI
  		  (lshiftrt:DI
  		    (zero_extend:DI
! 		      (match_operand:SI 2 "register_operand" "r,r"))
  		    (minus:QI (const_int 32)
  			      (and:QI (match_dup 3) (const_int 31)))) 0)))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>shld{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "SI")])
  
***************
*** 16104,16122 ****
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_shld_ndd_1<nf_name>"
!   [(set (match_operand:SI 0 "register_operand" "=r")
!         (ior:SI (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "rm")
  			   (match_operand:QI 3 "const_0_to_31_operand"))
  		(subreg:SI
  		  (lshiftrt:DI
  		    (zero_extend:DI
! 		      (match_operand:SI 2 "register_operand" "r"))
  		    (match_operand:QI 4 "const_0_to_63_operand")) 0)))]
    "TARGET_APX_NDD 
     && INTVAL (operands[4]) == 32 - INTVAL (operands[3])
     && <nf_condition>"
    "<nf_prefix>shld{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
     (set_attr "length_immediate" "1")
     (set_attr "has_nf" "1")
     (set_attr "mode" "SI")])
--- 16631,16653 ----
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_shld_ndd_1<nf_name>"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
!         (ior:SI (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "r,m")
  			   (match_operand:QI 3 "const_0_to_31_operand"))
  		(subreg:SI
  		  (lshiftrt:DI
  		    (zero_extend:DI
! 		      (match_operand:SI 2 "register_operand" "r,r"))
  		    (match_operand:QI 4 "const_0_to_63_operand")) 0)))]
    "TARGET_APX_NDD 
     && INTVAL (operands[4]) == 32 - INTVAL (operands[3])
     && <nf_condition>"
    "<nf_prefix>shld{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "length_immediate" "1")
     (set_attr "has_nf" "1")
     (set_attr "mode" "SI")])
***************
*** 16327,16335 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*ashl<mode>3_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,?k,r")
! 	(ashift:SWI48 (match_operand:SWI48 1 "nonimmediate_operand" "0,l,rm,k,rm")
! 		      (match_operand:QI 2 "nonmemory_operand" "c<S>,M,r,<KS>,c<S>")))]
    "ix86_binary_operator_ok (ASHIFT, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
--- 16858,16866 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*ashl<mode>3_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,?k,r,r")
! 	(ashift:SWI48 (match_operand:SWI48 1 "nonimmediate_operand" "0,l,rm,k,r,m")
! 		      (match_operand:QI 2 "nonmemory_operand" "c<S>,M,r,<KS>,c<S>,c<S>")))]
    "ix86_binary_operator_ok (ASHIFT, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
***************
*** 16356,16362 ****
  		     : "<nf_prefix>sal{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,bmi2,avx512bw,apx_ndd")
     (set (attr "type")
       (cond [(eq_attr "alternative" "1")
  	      (const_string "lea")
--- 16887,16897 ----
  		     : "<nf_prefix>sal{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,bmi2,avx512bw,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "1")
  	      (const_string "lea")
***************
*** 16364,16370 ****
  	      (const_string "ishiftx")
  	    (eq_attr "alternative" "3")
  	      (const_string "msklog")
! 	    (eq_attr "alternative" "4")
  	      (const_string "ishift")
  	    (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
--- 16899,16905 ----
  	      (const_string "ishiftx")
  	    (eq_attr "alternative" "3")
  	      (const_string "msklog")
! 	    (eq_attr "alternative" "4,5")
  	      (const_string "ishift")
  	    (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
***************
*** 16415,16446 ****
     (set_attr "mode" "SI")])
  
  (define_insn "*ashlqi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r")
  	(zero_extend:SWI248x
! 	  (ashift:QI (match_operand:QI 1 "nonimmediate_operand" "rm")
! 		     (match_operand:QI 2 "nonmemory_operand" "cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>sal{b}\t{%2, %1, %b0|%b0, %1, %2}"
    [(set_attr "type" "ishiftx")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*ashlhi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r")
  	(zero_extend:SWI48x
! 	  (ashift:HI (match_operand:HI 1 "nonimmediate_operand" "rm")
! 		     (match_operand:QI 2 "nonmemory_operand" "cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>sal{w}\t{%2, %1, %w0|%w0, %1, %2}"
    [(set_attr "type" "ishiftx")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*ashlsi3_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
! 	  (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "0,l,rm,rm")
! 		     (match_operand:QI 2 "nonmemory_operand" "cI,M,r,cI"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (ASHIFT, SImode, operands, TARGET_APX_NDD)"
--- 16950,16989 ----
     (set_attr "mode" "SI")])
  
  (define_insn "*ashlqi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
! 	  (ashift:QI (match_operand:QI 1 "nonimmediate_operand" "r,m")
! 		     (match_operand:QI 2 "nonmemory_operand" "cI,cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>sal{b}\t{%2, %1, %b0|%b0, %1, %2}"
    [(set_attr "type" "ishiftx")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*ashlhi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
! 	  (ashift:HI (match_operand:HI 1 "nonimmediate_operand" "r,m")
! 		     (match_operand:QI 2 "nonmemory_operand" "cI,cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>sal{w}\t{%2, %1, %w0|%w0, %1, %2}"
    [(set_attr "type" "ishiftx")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*ashlsi3_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
  	(zero_extend:DI
! 	  (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "0,l,rm,r,m")
! 		     (match_operand:QI 2 "nonmemory_operand" "cI,M,r,cI,cI"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (ASHIFT, SImode, operands, TARGET_APX_NDD)"
***************
*** 16461,16473 ****
  		     : "sal{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,bmi2,apx_ndd")
     (set (attr "type")
       (cond [(eq_attr "alternative" "1")
  	      (const_string "lea")
  	    (eq_attr "alternative" "2")
  	      (const_string "ishiftx")
! 	    (eq_attr "alternative" "3")
  	      (const_string "ishift")
              (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		 (match_operand 2 "const1_operand"))
--- 17004,17020 ----
  		     : "sal{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,bmi2,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "1")
  	      (const_string "lea")
  	    (eq_attr "alternative" "2")
  	      (const_string "ishiftx")
! 	    (eq_attr "alternative" "3,4")
  	      (const_string "ishift")
              (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		 (match_operand 2 "const1_operand"))
***************
*** 16496,16504 ****
    "operands[2] = gen_lowpart (SImode, operands[2]);")
  
  (define_insn "*ashlhi3_1<nf_name>"
!   [(set (match_operand:HI 0 "nonimmediate_operand" "=rm,Yp,?k,r")
! 	(ashift:HI (match_operand:HI 1 "nonimmediate_operand" "0,l,k,rm")
! 		   (match_operand:QI 2 "nonmemory_operand" "cI,M,Ww,cI")))]
    "ix86_binary_operator_ok (ASHIFT, HImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
--- 17043,17051 ----
    "operands[2] = gen_lowpart (SImode, operands[2]);")
  
  (define_insn "*ashlhi3_1<nf_name>"
!   [(set (match_operand:HI 0 "nonimmediate_operand" "=rm,Yp,?k,r,r")
! 	(ashift:HI (match_operand:HI 1 "nonimmediate_operand" "0,l,k,r,m")
! 		   (match_operand:QI 2 "nonmemory_operand" "cI,M,Ww,cI,cI")))]
    "ix86_binary_operator_ok (ASHIFT, HImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
***************
*** 16523,16535 ****
  		     : "<nf_prefix>sal{w}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,avx512f,apx_ndd")
     (set (attr "type")
       (cond [(eq_attr "alternative" "1")
  	      (const_string "lea")
  	    (eq_attr "alternative" "2")
  	      (const_string "msklog")
! 	    (eq_attr "alternative" "3")
  	      (const_string "ishift")
              (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
--- 17070,17086 ----
  		     : "<nf_prefix>sal{w}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,avx512f,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "1")
  	      (const_string "lea")
  	    (eq_attr "alternative" "2")
  	      (const_string "msklog")
! 	    (eq_attr "alternative" "3,4")
  	      (const_string "ishift")
              (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
***************
*** 16545,16556 ****
         (const_string "0")
         (const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "HI,SI,HI,HI")])
  
  (define_insn "*ashlqi3_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,r,Yp,?k,r")
! 	(ashift:QI (match_operand:QI 1 "nonimmediate_operand" "0,0,l,k,rm")
! 		   (match_operand:QI 2 "nonmemory_operand" "cI,cI,M,Wb,cI")))]
    "ix86_binary_operator_ok (ASHIFT, QImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
--- 17096,17107 ----
         (const_string "0")
         (const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "HI,SI,HI,HI,HI")])
  
  (define_insn "*ashlqi3_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,r,Yp,?k,r,r")
! 	(ashift:QI (match_operand:QI 1 "nonimmediate_operand" "0,0,l,k,r,m")
! 		   (match_operand:QI 2 "nonmemory_operand" "cI,cI,M,Wb,cI,cI")))]
    "ix86_binary_operator_ok (ASHIFT, QImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
***************
*** 16581,16593 ****
  		       : "<nf_prefix>sal{b}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,avx512dq,apx_ndd")
     (set (attr "type")
       (cond [(eq_attr "alternative" "2")
  	      (const_string "lea")
  	    (eq_attr "alternative" "3")
  	      (const_string "msklog")
! 	    (eq_attr "alternative" "4")
  	      (const_string "ishift")
              (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
--- 17132,17148 ----
  		       : "<nf_prefix>sal{b}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,*,*,avx512dq,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "5")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
       (cond [(eq_attr "alternative" "2")
  	      (const_string "lea")
  	    (eq_attr "alternative" "3")
  	      (const_string "msklog")
! 	    (eq_attr "alternative" "4,5")
  	      (const_string "ishift")
              (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
***************
*** 16603,16612 ****
         (const_string "0")
         (const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "QI,SI,SI,QI,QI")
     ;; Potential partial reg stall on alternative 1.
     (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,4")
  	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
--- 17158,17167 ----
         (const_string "0")
         (const_string "*")))
     (set_attr "has_nf" "1")
!    (set_attr "mode" "QI,SI,SI,QI,QI,QI")
     ;; Potential partial reg stall on alternative 1.
     (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "1,4,5")
  	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
***************
*** 16713,16722 ****
  (define_insn "*ashl<mode>3_cmp"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (ashift:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,rm")
! 		      (match_operand:QI 2 "<shift_immediate_operand>" "<S>,<S>"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r")
  	(ashift:SWI (match_dup 1) (match_dup 2)))]
    "(optimize_function_for_size_p (cfun)
      || !TARGET_PARTIAL_FLAG_REG_STALL
--- 17268,17277 ----
  (define_insn "*ashl<mode>3_cmp"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (ashift:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,r,m")
! 		      (match_operand:QI 2 "<shift_immediate_operand>" "<S>,<S>,<S>"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r,r")
  	(ashift:SWI (match_dup 1) (match_dup 2)))]
    "(optimize_function_for_size_p (cfun)
      || !TARGET_PARTIAL_FLAG_REG_STALL
***************
*** 16736,16744 ****
  		     : "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,apx_ndd")
     (set (attr "type")
!      (cond [(eq_attr "alternative" "1")
  	      (const_string "ishift")
  	    (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
--- 17291,17303 ----
  		     : "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
!      (cond [(eq_attr "alternative" "1,2")
  	      (const_string "ishift")
  	    (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
***************
*** 16758,16767 ****
  (define_insn "*ashlsi3_cmp_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm")
  		     (match_operand:QI 2 "const_1_to_31_operand"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI (ashift:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT
     && (optimize_function_for_size_p (cfun)
--- 17317,17326 ----
  (define_insn "*ashlsi3_cmp_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,m")
  		     (match_operand:QI 2 "const_1_to_31_operand"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI (ashift:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT
     && (optimize_function_for_size_p (cfun)
***************
*** 16782,16790 ****
  		     : "sal{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,apx_ndd")
     (set (attr "type")
!      (cond [(eq_attr "alternative" "1")
  	      (const_string "ishift")
  	    (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		 (match_operand 2 "const1_operand"))
--- 17341,17353 ----
  		     : "sal{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
!      (cond [(eq_attr "alternative" "1,2")
  	      (const_string "ishift")
  	    (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		 (match_operand 2 "const1_operand"))
***************
*** 16803,16812 ****
  (define_insn "*ashl<mode>3_cconly"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (ashift:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,rm")
! 		      (match_operand:QI 2 "<shift_immediate_operand>" "<S>,<S>"))
  	  (const_int 0)))
!    (clobber (match_scratch:SWI 0 "=<r>,r"))]
    "(optimize_function_for_size_p (cfun)
      || !TARGET_PARTIAL_FLAG_REG_STALL
      || operands[2] == const1_rtx)
--- 17366,17375 ----
  (define_insn "*ashl<mode>3_cconly"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (ashift:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,r,m")
! 		      (match_operand:QI 2 "<shift_immediate_operand>" "<S>,<S>,<S>"))
  	  (const_int 0)))
!    (clobber (match_scratch:SWI 0 "=<r>,r,r"))]
    "(optimize_function_for_size_p (cfun)
      || !TARGET_PARTIAL_FLAG_REG_STALL
      || operands[2] == const1_rtx)
***************
*** 16824,16832 ****
  		     : "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,apx_ndd")
     (set (attr "type")
!      (cond [(eq_attr "alternative" "1")
  	      (const_string "ishift")
  	    (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
--- 17387,17399 ----
  		     : "sal{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set (attr "type")
!      (cond [(eq_attr "alternative" "1,2")
  	      (const_string "ishift")
  	    (and (and (match_test "TARGET_DOUBLE_WITH_ADD")
  		      (match_operand 0 "register_operand"))
***************
*** 17139,17157 ****
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_64_shrd_ndd<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r")
!         (ior:DI (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "rm")
! 		  (and:QI (match_operand:QI 3 "nonmemory_operand" "Jc")
  			  (const_int 63)))
  		(subreg:DI
  		  (ashift:TI
  		    (zero_extend:TI
! 		      (match_operand:DI 2 "register_operand" "r"))
  		    (minus:QI (const_int 64)
  			      (and:QI (match_dup 3) (const_int 63)))) 0)))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>shrd{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
     (set_attr "has_nf" "1")
     (set_attr "mode" "DI")])
  
--- 17706,17728 ----
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_64_shrd_ndd<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
!         (ior:DI (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "r,m")
! 		  (and:QI (match_operand:QI 3 "nonmemory_operand" "Jc,Jc")
  			  (const_int 63)))
  		(subreg:DI
  		  (ashift:TI
  		    (zero_extend:TI
! 		      (match_operand:DI 2 "register_operand" "r,r"))
  		    (minus:QI (const_int 64)
  			      (and:QI (match_dup 3) (const_int 63)))) 0)))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>shrd{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "DI")])
  
***************
*** 17178,17196 ****
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_64_shrd_ndd_1<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r")
!         (ior:DI (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "rm")
  			     (match_operand:QI 3 "const_0_to_63_operand"))
  		(subreg:DI
  		  (ashift:TI
  		    (zero_extend:TI
! 		      (match_operand:DI 2 "register_operand" "r"))
  		    (match_operand:QI 4 "const_0_to_255_operand")) 0)))]
    "TARGET_APX_NDD
     && INTVAL (operands[4]) == 64 - INTVAL (operands[3])
     && <nf_condition>"
    "<nf_prefix>shrd{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
     (set_attr "length_immediate" "1")
     (set_attr "has_nf" "1")
     (set_attr "mode" "DI")])
--- 17749,17771 ----
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_64_shrd_ndd_1<nf_name>"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
!         (ior:DI (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "r,m")
  			     (match_operand:QI 3 "const_0_to_63_operand"))
  		(subreg:DI
  		  (ashift:TI
  		    (zero_extend:TI
! 		      (match_operand:DI 2 "register_operand" "r,r"))
  		    (match_operand:QI 4 "const_0_to_255_operand")) 0)))]
    "TARGET_APX_NDD
     && INTVAL (operands[4]) == 64 - INTVAL (operands[3])
     && <nf_condition>"
    "<nf_prefix>shrd{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "length_immediate" "1")
     (set_attr "has_nf" "1")
     (set_attr "mode" "DI")])
***************
*** 17370,17388 ****
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_shrd_ndd<nf_name>"
!   [(set (match_operand:SI 0 "register_operand" "=r")
!         (ior:SI (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "rm")
! 		  (and:QI (match_operand:QI 3 "nonmemory_operand" "Ic")
  			  (const_int 31)))
  		(subreg:SI
  		  (ashift:DI
  		    (zero_extend:DI
! 		      (match_operand:SI 2 "register_operand" "r"))
  		    (minus:QI (const_int 32)
  			      (and:QI (match_dup 3) (const_int 31)))) 0)))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>shrd{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
     (set_attr "has_nf" "1")
     (set_attr "mode" "SI")])
  
--- 17945,17967 ----
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_shrd_ndd<nf_name>"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
!         (ior:SI (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "r,m")
! 		  (and:QI (match_operand:QI 3 "nonmemory_operand" "Ic,Ic")
  			  (const_int 31)))
  		(subreg:SI
  		  (ashift:DI
  		    (zero_extend:DI
! 		      (match_operand:SI 2 "register_operand" "r,r"))
  		    (minus:QI (const_int 32)
  			      (and:QI (match_dup 3) (const_int 31)))) 0)))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix>shrd{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "SI")])
  
***************
*** 17409,17427 ****
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_shrd_ndd_1<nf_name>"
!   [(set (match_operand:SI 0 "register_operand" "=r")
!         (ior:SI (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "rm")
  			     (match_operand:QI 3 "const_0_to_31_operand"))
  		(subreg:SI
  		  (ashift:DI
  		    (zero_extend:DI
! 		      (match_operand:SI 2 "register_operand" "r"))
  		    (match_operand:QI 4 "const_0_to_63_operand")) 0)))]
    "TARGET_APX_NDD
     && (INTVAL (operands[4]) == 32 - INTVAL (operands[3]))
     && <nf_condition>"
    "<nf_prefix>shrd{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
     (set_attr "length_immediate" "1")
     (set_attr "has_nf" "1")
     (set_attr "mode" "SI")])
--- 17988,18010 ----
     (set_attr "bdver1_decode" "vector")])
  
  (define_insn "x86_shrd_ndd_1<nf_name>"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
!         (ior:SI (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "r,m")
  			     (match_operand:QI 3 "const_0_to_31_operand"))
  		(subreg:SI
  		  (ashift:DI
  		    (zero_extend:DI
! 		      (match_operand:SI 2 "register_operand" "r,r"))
  		    (match_operand:QI 4 "const_0_to_63_operand")) 0)))]
    "TARGET_APX_NDD
     && (INTVAL (operands[4]) == 32 - INTVAL (operands[3]))
     && <nf_condition>"
    "<nf_prefix>shrd{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "length_immediate" "1")
     (set_attr "has_nf" "1")
     (set_attr "mode" "SI")])
***************
*** 17582,17590 ****
    [(SI "{cltd|cdq}") (DI "{cqto|cqo}")])
  
  (define_insn "ashr<mode>3_cvt<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=*d,rm,r")
  	(ashiftrt:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "*a,0,rm")
  	  (match_operand:QI 2 "const_int_operand")))]
    "INTVAL (operands[2]) == GET_MODE_BITSIZE (<MODE>mode)-1
     && (TARGET_USE_CLTD || optimize_function_for_size_p (cfun))
--- 18165,18173 ----
    [(SI "{cltd|cdq}") (DI "{cqto|cqo}")])
  
  (define_insn "ashr<mode>3_cvt<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=*d,rm,r,r")
  	(ashiftrt:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "*a,0,r,m")
  	  (match_operand:QI 2 "const_int_operand")))]
    "INTVAL (operands[2]) == GET_MODE_BITSIZE (<MODE>mode)-1
     && (TARGET_USE_CLTD || optimize_function_for_size_p (cfun))
***************
*** 17593,17611 ****
    "@
     <cvt_mnemonic>
     <nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}
     <nf_prefix>sar{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd")
!    (set_attr "type" "imovx,ishift,ishift")
!    (set_attr "prefix_0f" "0,*,*")
!    (set_attr "length_immediate" "0,*,*")
!    (set_attr "modrm" "0,1,1")
     (set_attr "has_nf" "1")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*ashrsi3_cvt_zext"
!   [(set (match_operand:DI 0 "register_operand" "=*d,r,r")
  	(zero_extend:DI
! 	  (ashiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "*a,0,rm")
  		       (match_operand:QI 2 "const_int_operand"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && INTVAL (operands[2]) == 31
--- 18176,18199 ----
    "@
     <cvt_mnemonic>
     <nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}
+    <nf_prefix>sar{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}
     <nf_prefix>sar{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "imovx,ishift,ishift,ishift")
!    (set_attr "prefix_0f" "0,*,*,*")
!    (set_attr "length_immediate" "0,*,*,*")
!    (set_attr "modrm" "0,1,1,1")
     (set_attr "has_nf" "1")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*ashrsi3_cvt_zext"
!   [(set (match_operand:DI 0 "register_operand" "=*d,r,r,r")
  	(zero_extend:DI
! 	  (ashiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "*a,0,r,m")
  		       (match_operand:QI 2 "const_int_operand"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && INTVAL (operands[2]) == 31
***************
*** 17614,17625 ****
    "@
     {cltd|cdq}
     sar{l}\t{%2, %k0|%k0, %2}
     sar{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd")
!    (set_attr "type" "imovx,ishift,ishift")
!    (set_attr "prefix_0f" "0,*,*")
!    (set_attr "length_immediate" "0,*,*")
!    (set_attr "modrm" "0,1,1")
     (set_attr "mode" "SI")])
  
  (define_expand "@x86_shift<mode>_adj_3"
--- 18202,18218 ----
    "@
     {cltd|cdq}
     sar{l}\t{%2, %k0|%k0, %2}
+    sar{l}\t{%2, %1, %k0|%k0, %1, %2}
     sar{l}\t{%2, %1, %k0|%k0, %1, %2}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "imovx,ishift,ishift,ishift")
!    (set_attr "prefix_0f" "0,*,*,*")
!    (set_attr "length_immediate" "0,*,*,*")
!    (set_attr "modrm" "0,1,1,1")
     (set_attr "mode" "SI")])
  
  (define_expand "@x86_shift<mode>_adj_3"
***************
*** 17661,17670 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*ashr<mode>3_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r")
  	(ashiftrt:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "0,rm,rm")
! 	  (match_operand:QI 2 "nonmemory_operand" "c<S>,r,c<S>")))]
    "ix86_binary_operator_ok (ASHIFTRT, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
--- 18254,18263 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*ashr<mode>3_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,r")
  	(ashiftrt:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "0,rm,r,m")
! 	  (match_operand:QI 2 "nonmemory_operand" "c<S>,r,c<S>,c<S>")))]
    "ix86_binary_operator_ok (ASHIFTRT, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
***************
*** 17679,17686 ****
  		     : "<nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,apx_ndd")
!    (set_attr "type" "ishift,ishiftx,ishift")
     (set (attr "length_immediate")
       (if_then_else
         (match_operand 2 "const1_operand")
--- 18272,18283 ----
  		     : "<nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "ishift,ishiftx,ishift,ishift")
     (set (attr "length_immediate")
       (if_then_else
         (match_operand 2 "const1_operand")
***************
*** 17692,17699 ****
  ;; Specialization of *lshr<mode>3_1 below, extracting the SImode
  ;; highpart of a DI to be extracted, but allowing it to be clobbered.
  (define_insn_and_split "*highpartdisi2"
!   [(set (subreg:DI (match_operand:SI 0 "register_operand" "=r,x,?k,r") 0)
!         (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "0,0,k,rm")
  		     (const_int 32)))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
--- 18289,18296 ----
  ;; Specialization of *lshr<mode>3_1 below, extracting the SImode
  ;; highpart of a DI to be extracted, but allowing it to be clobbered.
  (define_insn_and_split "*highpartdisi2"
!   [(set (subreg:DI (match_operand:SI 0 "register_operand" "=r,x,?k,r,r") 0)
!         (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "0,0,k,r,m")
  		     (const_int 32)))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
***************
*** 17713,17725 ****
      }
    operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
  }
! [(set_attr "isa" "*,*,*,apx_ndd")])
  
  (define_insn "*lshr<mode>3_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,?k,r")
  	(lshiftrt:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "0,rm,k,rm")
! 	  (match_operand:QI 2 "nonmemory_operand" "c<S>,r,<KS>,c<S>")))]
    "ix86_binary_operator_ok (LSHIFTRT, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
--- 18310,18326 ----
      }
    operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
  }
! [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd")
!  (set (attr "preferred_for_speed")
!    (cond [(eq_attr "alternative" "4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))])
  
  (define_insn "*lshr<mode>3_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,?k,r,r")
  	(lshiftrt:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "0,rm,k,r,m")
! 	  (match_operand:QI 2 "nonmemory_operand" "c<S>,r,<KS>,c<S>,c<S>")))]
    "ix86_binary_operator_ok (LSHIFTRT, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
***************
*** 17735,17742 ****
  		     : "<nf_prefix>shr{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,avx512bw,apx_ndd")
!    (set_attr "type" "ishift,ishiftx,msklog,ishift")
     (set (attr "length_immediate")
       (if_then_else
         (and (eq_attr "type" "ishift")
--- 18336,18347 ----
  		     : "<nf_prefix>shr{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,avx512bw,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "ishift,ishiftx,msklog,ishift,ishift")
     (set (attr "length_immediate")
       (if_then_else
         (and (eq_attr "type" "ishift")
***************
*** 17779,17810 ****
     (set_attr "mode" "SI")])
  
  (define_insn "*<insn>qi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r")
  	(zero_extend:SWI248x
! 	  (any_shiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "rm")
! 			  (match_operand:QI 2 "nonmemory_operand" "cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix><shift>{b}\t{%2, %1, %b0|%b0, %1, %2}"
    [(set_attr "type" "ishift")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*<insn>hi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r")
  	(zero_extend:SWI48x
! 	  (any_shiftrt:HI (match_operand:HI 1 "nonimmediate_operand" "rm")
! 			  (match_operand:QI 2 "nonmemory_operand" "cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix><shift>{w}\t{%2, %1, %w0|%w0, %1, %2}"
    [(set_attr "type" "ishift")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*<insn>si3_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,?k")
  	(zero_extend:DI
! 	  (any_shiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm,rm,k")
! 			  (match_operand:QI 2 "nonmemory_operand" "cI,r,cI,I"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
--- 18384,18423 ----
     (set_attr "mode" "SI")])
  
  (define_insn "*<insn>qi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
! 	  (any_shiftrt:QI (match_operand:QI 1 "nonimmediate_operand" "r,m")
! 			  (match_operand:QI 2 "nonmemory_operand" "cI,cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix><shift>{b}\t{%2, %1, %b0|%b0, %1, %2}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*<insn>hi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
! 	  (any_shiftrt:HI (match_operand:HI 1 "nonimmediate_operand" "r,m")
! 			  (match_operand:QI 2 "nonmemory_operand" "cI,cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix><shift>{w}\t{%2, %1, %w0|%w0, %1, %2}"
    [(set_attr "type" "ishift")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*<insn>si3_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,?k")
  	(zero_extend:DI
! 	  (any_shiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm,r,m,k")
! 			  (match_operand:QI 2 "nonmemory_operand" "cI,r,cI,cI,I"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && ix86_binary_operator_ok (<CODE>, SImode, operands, TARGET_APX_NDD)"
***************
*** 17821,17828 ****
  		     : "<shift>{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,apx_ndd,avx512bw")
!    (set_attr "type" "ishift,ishiftx,ishift,msklog")
     (set (attr "length_immediate")
       (if_then_else
         (and (eq_attr "type" "ishift")
--- 18434,18445 ----
  		     : "<shift>{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,apx_ndd,apx_ndd,avx512bw")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "ishift,ishiftx,ishift,ishift,msklog")
     (set (attr "length_immediate")
       (if_then_else
         (and (eq_attr "type" "ishift")
***************
*** 17832,17838 ****
     (set_attr "mode" "SI")
     (set (attr "enabled")
     	(if_then_else
! 	  (eq_attr "alternative" "3")
  	  (symbol_ref "<CODE> == LSHIFTRT && TARGET_AVX512BW")
  	  (const_string "*")))])
  
--- 18449,18455 ----
     (set_attr "mode" "SI")
     (set (attr "enabled")
     	(if_then_else
! 	  (eq_attr "alternative" "4")
  	  (symbol_ref "<CODE> == LSHIFTRT && TARGET_AVX512BW")
  	  (const_string "*")))])
  
***************
*** 17849,17867 ****
    "operands[2] = gen_lowpart (SImode, operands[2]);")
  
  (define_insn "*ashr<mode>3_1<nf_name>"
!   [(set (match_operand:SWI12 0 "nonimmediate_operand" "=<r>m, r")
  	(ashiftrt:SWI12
! 	  (match_operand:SWI12 1 "nonimmediate_operand" "0, rm")
! 	  (match_operand:QI 2 "nonmemory_operand" "c<S>, c<S>")))]
    "ix86_binary_operator_ok (ASHIFTRT, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
- 
    return use_ndd ? "<nf_prefix>sar{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
  		 : "<nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*, apx_ndd")
     (set_attr "type" "ishift")
     (set (attr "length_immediate")
       (if_then_else
--- 18466,18487 ----
    "operands[2] = gen_lowpart (SImode, operands[2]);")
  
  (define_insn "*ashr<mode>3_1<nf_name>"
!   [(set (match_operand:SWI12 0 "nonimmediate_operand" "=<r>m, r, r")
  	(ashiftrt:SWI12
! 	  (match_operand:SWI12 1 "nonimmediate_operand" "0, r, m")
! 	  (match_operand:QI 2 "nonmemory_operand" "c<S>, c<S>, c<S>")))]
    "ix86_binary_operator_ok (ASHIFTRT, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
    return use_ndd ? "<nf_prefix>sar{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
  		 : "<nf_prefix>sar{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*, apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "ishift")
     (set (attr "length_immediate")
       (if_then_else
***************
*** 17872,17881 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*lshrqi3_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand"  "=qm,?k,r")
  	(lshiftrt:QI
! 	  (match_operand:QI 1 "nonimmediate_operand" "0, k, rm")
! 	  (match_operand:QI 2 "nonmemory_operand"    "cI,Wb,cI")))]
    "ix86_binary_operator_ok (LSHIFTRT, QImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
--- 18492,18501 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*lshrqi3_1<nf_name>"
!   [(set (match_operand:QI 0 "nonimmediate_operand"  "=qm,?k,r,r")
  	(lshiftrt:QI
! 	  (match_operand:QI 1 "nonimmediate_operand" "0, k, r,m")
! 	  (match_operand:QI 2 "nonmemory_operand"    "cI,Wb,cI,cI")))]
    "ix86_binary_operator_ok (LSHIFTRT, QImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
***************
*** 17890,17897 ****
  		     : "<nf_prefix>shr{b}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,avx512dq,apx_ndd")
!    (set_attr "type" "ishift,msklog,ishift")
     (set (attr "length_immediate")
       (if_then_else
         (and (eq_attr "type" "ishift")
--- 18510,18521 ----
  		     : "<nf_prefix>shr{b}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,avx512dq,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "ishift,msklog,ishift,ishift")
     (set (attr "length_immediate")
       (if_then_else
         (and (eq_attr "type" "ishift")
***************
*** 17902,17911 ****
     (set_attr "mode" "QI")])
  
  (define_insn "*lshrhi3_1<nf_name>"
!   [(set (match_operand:HI 0 "nonimmediate_operand" "=rm, ?k, r")
  	(lshiftrt:HI
! 	  (match_operand:HI 1 "nonimmediate_operand" "0, k, rm")
! 	  (match_operand:QI 2 "nonmemory_operand" "cI, Ww, cI")))]
    "ix86_binary_operator_ok (LSHIFTRT, HImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
--- 18526,18535 ----
     (set_attr "mode" "QI")])
  
  (define_insn "*lshrhi3_1<nf_name>"
!   [(set (match_operand:HI 0 "nonimmediate_operand" "=rm, ?k, r,r")
  	(lshiftrt:HI
! 	  (match_operand:HI 1 "nonimmediate_operand" "0, k, r,m")
! 	  (match_operand:QI 2 "nonmemory_operand" "cI, Ww, cI,cI")))]
    "ix86_binary_operator_ok (LSHIFTRT, HImode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
***************
*** 17920,17927 ****
  		     : "<nf_prefix>shr{w}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*, avx512f, apx_ndd")
!    (set_attr "type" "ishift,msklog,ishift")
     (set (attr "length_immediate")
       (if_then_else
         (and (eq_attr "type" "ishift")
--- 18544,18555 ----
  		     : "<nf_prefix>shr{w}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*, avx512f, apx_ndd, apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "ishift,msklog,ishift,ishift")
     (set (attr "length_immediate")
       (if_then_else
         (and (eq_attr "type" "ishift")
***************
*** 17967,17976 ****
    [(set (reg FLAGS_REG)
  	(compare
  	  (any_shiftrt:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "0,rm")
! 	    (match_operand:QI 2 "<shift_immediate_operand>" "<S>,<S>"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r")
  	(any_shiftrt:SWI (match_dup 1) (match_dup 2)))]
    "(optimize_function_for_size_p (cfun)
      || !TARGET_PARTIAL_FLAG_REG_STALL
--- 18595,18604 ----
    [(set (reg FLAGS_REG)
  	(compare
  	  (any_shiftrt:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "0,r,m")
! 	    (match_operand:QI 2 "<shift_immediate_operand>" "<S>,<S>,<S>"))
  	  (const_int 0)))
!    (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,r,r")
  	(any_shiftrt:SWI (match_dup 1) (match_dup 2)))]
    "(optimize_function_for_size_p (cfun)
      || !TARGET_PARTIAL_FLAG_REG_STALL
***************
*** 17982,17988 ****
    return use_ndd ? "<shift>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
  		 : "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "ishift")
     (set (attr "length_immediate")
       (if_then_else
--- 18610,18620 ----
    return use_ndd ? "<shift>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
  		 : "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "ishift")
     (set (attr "length_immediate")
       (if_then_else
***************
*** 17994,18003 ****
  (define_insn "*<insn>si3_cmp_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (any_shiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm")
  			  (match_operand:QI 2 "const_1_to_31_operand"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI (any_shiftrt:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT
     && (optimize_function_for_size_p (cfun)
--- 18626,18635 ----
  (define_insn "*<insn>si3_cmp_zext"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (any_shiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,m")
  			  (match_operand:QI 2 "const_1_to_31_operand"))
  	  (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI (any_shiftrt:SI (match_dup 1) (match_dup 2))))]
    "TARGET_64BIT
     && (optimize_function_for_size_p (cfun)
***************
*** 18010,18016 ****
    return use_ndd ? "<shift>{l}\t{%2, %1, %k0|%k0, %1, %2}"
  		 : "<shift>{l}\t{%2, %k0|%k0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "ishift")
     (set (attr "length_immediate")
       (if_then_else
--- 18642,18652 ----
    return use_ndd ? "<shift>{l}\t{%2, %1, %k0|%k0, %1, %2}"
  		 : "<shift>{l}\t{%2, %k0|%k0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "ishift")
     (set (attr "length_immediate")
       (if_then_else
***************
*** 18023,18042 ****
    [(set (reg FLAGS_REG)
  	(compare
  	  (any_shiftrt:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "0,rm")
! 	    (match_operand:QI 2 "<shift_immediate_operand>" "<S>,<S>"))
  	  (const_int 0)))
!    (clobber (match_scratch:SWI 0 "=<r>,r"))]
    "(optimize_function_for_size_p (cfun)
      || !TARGET_PARTIAL_FLAG_REG_STALL
      || operands[2] == const1_rtx)
     && ix86_match_ccmode (insn, CCGOCmode)"
  {
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
!   return use_ndd ? "<shift>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
! 		 : "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "ishift")
     (set (attr "length_immediate")
       (if_then_else
--- 18659,18683 ----
    [(set (reg FLAGS_REG)
  	(compare
  	  (any_shiftrt:SWI
! 	    (match_operand:SWI 1 "nonimmediate_operand" "0,r,m")
! 	    (match_operand:QI 2 "<shift_immediate_operand>" "<S>,<S>,<S>"))
  	  (const_int 0)))
!    (clobber (match_scratch:SWI 0 "=<r>,r,r"))]
    "(optimize_function_for_size_p (cfun)
      || !TARGET_PARTIAL_FLAG_REG_STALL
      || operands[2] == const1_rtx)
     && ix86_match_ccmode (insn, CCGOCmode)"
  {
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
!   return use_ndd
! 	 ? "<shift>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
! 	 : "<shift>{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "ishift")
     (set (attr "length_immediate")
       (if_then_else
***************
*** 18579,18585 ****
    "&& 1"
    [(parallel
       [(set (match_dup 0)
! 	   (<crotate>:SWI (match_dup 1) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
  {
    operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
--- 19220,19226 ----
    "&& 1"
    [(parallel
       [(set (match_dup 0)
! 	   (<inv_rotate>:SWI (match_dup 1) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
  {
    operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
***************
*** 18597,18603 ****
   "(INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT - 1)) == 0"
   [(set (match_dup 4) (match_dup 1))
    (set (match_dup 0)
!        (<crotate>:SWI (match_dup 4) (subreg:QI (match_dup 2) 0)))]
   "operands[4] = gen_reg_rtx (<MODE>mode);")
  
  (define_insn_and_split "*<insn><mode>3_sub_1"
--- 19238,19244 ----
   "(INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT - 1)) == 0"
   [(set (match_dup 4) (match_dup 1))
    (set (match_dup 0)
!        (<inv_rotate>:SWI (match_dup 4) (subreg:QI (match_dup 2) 0)))]
   "operands[4] = gen_reg_rtx (<MODE>mode);")
  
  (define_insn_and_split "*<insn><mode>3_sub_1"
***************
*** 18615,18621 ****
    "&& 1"
    [(parallel
       [(set (match_dup 0)
! 	   (<crotate>:SWI (match_dup 1) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
   "operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);")
  
--- 19256,19262 ----
    "&& 1"
    [(parallel
       [(set (match_dup 0)
! 	   (<inv_rotate>:SWI (match_dup 1) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
   "operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);")
  
***************
*** 18629,18635 ****
   "(INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT - 1)) == 0"
   [(set (match_dup 4) (match_dup 1))
    (set (match_dup 0)
!        (<crotate>:SWI (match_dup 4) (match_dup 2)))]
   "operands[4] = gen_reg_rtx (<MODE>mode);")
  
  ;; Implement rotation using two double-precision
--- 19270,19276 ----
   "(INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT - 1)) == 0"
   [(set (match_dup 4) (match_dup 1))
    (set (match_dup 0)
!        (<inv_rotate>:SWI (match_dup 4) (match_dup 2)))]
   "operands[4] = gen_reg_rtx (<MODE>mode);")
  
  ;; Implement rotation using two double-precision
***************
*** 18760,18769 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*<insn><mode>3_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r")
  	(any_rotate:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "0,rm,rm")
! 	  (match_operand:QI 2 "nonmemory_operand" "c<S>,<S>,c<S>")))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
--- 19401,19410 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*<insn><mode>3_1<nf_name>"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,r")
  	(any_rotate:SWI48
! 	  (match_operand:SWI48 1 "nonimmediate_operand" "0,rm,r,m")
! 	  (match_operand:QI 2 "nonmemory_operand" "c<S>,<S>,c<S>,c<S>")))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
***************
*** 18781,18788 ****
  		     : "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,apx_ndd")
!    (set_attr "type" "rotate,rotatex,rotate")
     (set (attr "preferred_for_size")
       (cond [(eq_attr "alternative" "0")
  	      (symbol_ref "true")]
--- 19422,19433 ----
  		     : "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "rotate,rotatex,rotate,rotate")
     (set (attr "preferred_for_size")
       (cond [(eq_attr "alternative" "0")
  	      (symbol_ref "true")]
***************
*** 18845,18876 ****
     (set_attr "mode" "SI")])
  
  (define_insn "*<insn>qi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r")
  	(zero_extend:SWI248x
! 	  (any_rotate:QI (match_operand:QI 1 "nonimmediate_operand" "rm")
! 			 (match_operand:QI 2 "nonmemory_operand" "cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix><rotate>{b}\t{%2, %1, %b0|%b0, %1, %2}"
    [(set_attr "type" "rotate")
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*<insn>hi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r")
  	(zero_extend:SWI48x
! 	  (any_rotate:HI (match_operand:HI 1 "nonimmediate_operand" "rm")
! 			 (match_operand:QI 2 "nonmemory_operand" "cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix><rotate>{w}\t{%2, %1, %w0|%w0, %1, %2}"
    [(set_attr "type" "rotate")
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*<insn>si3_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(zero_extend:DI
! 	  (any_rotate:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm,rm")
! 			 (match_operand:QI 2 "nonmemory_operand" "cI,I,cI"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && ix86_binary_operator_ok (<CODE>, SImode, operands)"
  {
--- 19490,19529 ----
     (set_attr "mode" "SI")])
  
  (define_insn "*<insn>qi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI248x 0 "register_operand" "=r,r")
  	(zero_extend:SWI248x
! 	  (any_rotate:QI (match_operand:QI 1 "nonimmediate_operand" "r,m")
! 			 (match_operand:QI 2 "nonmemory_operand" "cI,cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix><rotate>{b}\t{%2, %1, %b0|%b0, %1, %2}"
    [(set_attr "type" "rotate")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "QI")])
  
  (define_insn "*<insn>hi3_1_zext<mode><nf_name>"
!   [(set (match_operand:SWI48x 0 "register_operand" "=r,r")
  	(zero_extend:SWI48x
! 	  (any_rotate:HI (match_operand:HI 1 "nonimmediate_operand" "r,m")
! 			 (match_operand:QI 2 "nonmemory_operand" "cI,cI"))))]
    "TARGET_APX_NDD && <nf_condition>"
    "<nf_prefix><rotate>{w}\t{%2, %1, %w0|%w0, %1, %2}"
    [(set_attr "type" "rotate")
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "1")
+ 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
+ 	   (symbol_ref "true")))
     (set_attr "has_nf" "1")
     (set_attr "mode" "HI")])
  
  (define_insn "*<insn>si3_1_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(zero_extend:DI
! 	  (any_rotate:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm,r,m")
! 			 (match_operand:QI 2 "nonmemory_operand" "cI,I,cI,cI"))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && ix86_binary_operator_ok (<CODE>, SImode, operands)"
  {
***************
*** 18885,18892 ****
  		     : "<rotate>{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,apx_ndd")
!    (set_attr "type" "rotate,rotatex,rotate")
     (set (attr "preferred_for_size")
       (cond [(eq_attr "alternative" "0")
  	      (symbol_ref "true")]
--- 19538,19549 ----
  		     : "<rotate>{l}\t{%2, %k0|%k0, %2}";
      }
  }
!   [(set_attr "isa" "*,bmi2,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
!    (set_attr "type" "rotate,rotatex,rotate,rotate")
     (set (attr "preferred_for_size")
       (cond [(eq_attr "alternative" "0")
  	      (symbol_ref "true")]
***************
*** 18928,18944 ****
  	(zero_extend:DI (rotatert:SI (match_dup 1) (match_dup 2))))])
  
  (define_insn "*<insn><mode>3_1<nf_name>"
!   [(set (match_operand:SWI12 0 "nonimmediate_operand" "=<r>m,r")
! 	(any_rotate:SWI12 (match_operand:SWI12 1 "nonimmediate_operand" "0,rm")
! 			  (match_operand:QI 2 "nonmemory_operand" "c<S>,c<S>")))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
!   return use_ndd ? "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
! 		 : "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "rotate")
     (set (attr "length_immediate")
       (if_then_else
--- 19585,19606 ----
  	(zero_extend:DI (rotatert:SI (match_dup 1) (match_dup 2))))])
  
  (define_insn "*<insn><mode>3_1<nf_name>"
!   [(set (match_operand:SWI12 0 "nonimmediate_operand" "=<r>m,r,r")
! 	(any_rotate:SWI12 (match_operand:SWI12 1 "nonimmediate_operand" "0,r,m")
! 			  (match_operand:QI 2 "nonmemory_operand" "c<S>,c<S>,c<S>")))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands, TARGET_APX_NDD)
     && <nf_condition>"
  {
    bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD;
!   return use_ndd
! 	 ? "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %1, %0|%0, %1, %2}"
! 	 : "<nf_prefix><rotate>{<imodesuffix>}\t{%2, %0|%0, %2}";
  }
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "rotate")
     (set (attr "length_immediate")
       (if_then_else
***************
*** 18987,18995 ****
  
  ;; Rotations through carry flag
  (define_insn "rcrsi2"
!   [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(plus:SI
! 	  (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,rm")
  		       (const_int 1))
  	  (ashift:SI (ltu:SI (reg:CCC FLAGS_REG) (const_int 0))
  		     (const_int 31))))
--- 19649,19657 ----
  
  ;; Rotations through carry flag
  (define_insn "rcrsi2"
!   [(set (match_operand:SI 0 "register_operand" "=r,r,r")
  	(plus:SI
! 	  (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "0,r,m")
  		       (const_int 1))
  	  (ashift:SI (ltu:SI (reg:CCC FLAGS_REG) (const_int 0))
  		     (const_int 31))))
***************
*** 18997,19013 ****
    ""
    "@
     rcr{l}\t%0
     rcr{l}\t{%1, %0|%0, %1}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "ishift1")
     (set_attr "memory" "none")
     (set_attr "length_immediate" "0")
     (set_attr "mode" "SI")])
  
  (define_insn "rcrdi2"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(plus:DI
! 	  (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "0,rm")
  		       (const_int 1))
  	  (ashift:DI (ltu:DI (reg:CCC FLAGS_REG) (const_int 0))
  		     (const_int 63))))
--- 19659,19680 ----
    ""
    "@
     rcr{l}\t%0
+    rcr{l}\t{%1, %0|%0, %1}
     rcr{l}\t{%1, %0|%0, %1}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "ishift1")
     (set_attr "memory" "none")
     (set_attr "length_immediate" "0")
     (set_attr "mode" "SI")])
  
  (define_insn "rcrdi2"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r")
  	(plus:DI
! 	  (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,m")
  		       (const_int 1))
  	  (ashift:DI (ltu:DI (reg:CCC FLAGS_REG) (const_int 0))
  		     (const_int 63))))
***************
*** 19015,19022 ****
    "TARGET_64BIT"
    "@
     rcr{q}\t%0
     rcr{q}\t{%1, %0|%0, %1}"
!   [(set_attr "isa" "*,apx_ndd")
     (set_attr "type" "ishift1")
     (set_attr "length_immediate" "0")
     (set_attr "mode" "DI")])
--- 19682,19694 ----
    "TARGET_64BIT"
    "@
     rcr{q}\t%0
+    rcr{q}\t{%1, %0|%0, %1}
     rcr{q}\t{%1, %0|%0, %1}"
!   [(set_attr "isa" "*,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "ishift1")
     (set_attr "length_immediate" "0")
     (set_attr "mode" "DI")])
***************
*** 19024,19033 ****
  ;; Versions of sar and shr that set the carry flag.
  (define_insn "<insn><mode>3_carry"
    [(set (reg:CCC FLAGS_REG)
! 	(unspec:CCC [(and:SWI48 (match_operand:SWI48 1 "nonimmediate_operand" "0,rm")
  				(const_int 1))
  		     (const_int 0)] UNSPEC_CC_NE))
!    (set (match_operand:SWI48 0 "register_operand" "=r,r")
  	(any_shiftrt:SWI48 (match_dup 1) (const_int 1)))]
    ""
  {
--- 19696,19705 ----
  ;; Versions of sar and shr that set the carry flag.
  (define_insn "<insn><mode>3_carry"
    [(set (reg:CCC FLAGS_REG)
! 	(unspec:CCC [(and:SWI48 (match_operand:SWI48 1 "nonimmediate_operand" "0,r,m")
  				(const_int 1))
  		     (const_int 0)] UNSPEC_CC_NE))
!    (set (match_operand:SWI48 0 "register_operand" "=r,r,r")
  	(any_shiftrt:SWI48 (match_dup 1) (const_int 1)))]
    ""
  {
***************
*** 19035,19041 ****
    return use_ndd ? "<shift>{<imodesuffix>}\t{$1, %1, %0|%0, %1, 1}"
  		 : "<shift>{<imodesuffix>}\t{$1, %0|%0, 1}";
  }
!   [(set_attr "isa" "*, apx_ndd")
     (set_attr "type" "ishift1")
     (set_attr "length_immediate" "0")
     (set_attr "mode" "<MODE>")])
--- 19707,19717 ----
    return use_ndd ? "<shift>{<imodesuffix>}\t{$1, %1, %0|%0, %1, 1}"
  		 : "<shift>{<imodesuffix>}\t{$1, %0|%0, 1}";
  }
!   [(set_attr "isa" "*, apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "2")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "ishift1")
     (set_attr "length_immediate" "0")
     (set_attr "mode" "<MODE>")])
***************
*** 19728,19734 ****
    [(set (match_operand:SWI248 0 "register_operand" "=r")
  	(match_operator:SWI248 1 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))]
!   "TARGET_APX_ZU"
    "setzu%C1\t%b0"
    [(set_attr "type" "setcc")])
  
--- 20404,20410 ----
    [(set (match_operand:SWI248 0 "register_operand" "=r")
  	(match_operator:SWI248 1 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))]
!   "TARGET_APX_ZU && !TARGET_DISABLE_SETZUCC"
    "setzu%C1\t%b0"
    [(set_attr "type" "setcc")])
  
***************
*** 19736,19742 ****
    [(set (match_operand:DI 0 "register_operand" "=q")
  	(match_operator:DI 1 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))]
!   "!TARGET_APX_ZU && TARGET_64BIT && !TARGET_PARTIAL_REG_STALL"
    "#"
    "&& reload_completed"
    [(set (match_dup 2) (match_dup 1))
--- 20412,20419 ----
    [(set (match_operand:DI 0 "register_operand" "=q")
  	(match_operator:DI 1 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))]
!   "(!TARGET_APX_ZU || TARGET_DISABLE_SETZUCC)
!    && TARGET_64BIT && !TARGET_PARTIAL_REG_STALL"
    "#"
    "&& reload_completed"
    [(set (match_dup 2) (match_dup 1))
***************
*** 19769,19775 ****
    [(set (match_operand:SWI24 0 "register_operand" "=q")
  	(match_operator:SWI24 1 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))]
!   "!TARGET_APX_ZU && !TARGET_PARTIAL_REG_STALL
     && (!TARGET_ZERO_EXTEND_WITH_AND || optimize_function_for_size_p (cfun))"
    "#"
    "&& reload_completed"
--- 20446,20452 ----
    [(set (match_operand:SWI24 0 "register_operand" "=q")
  	(match_operator:SWI24 1 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))]
!   "(!TARGET_APX_ZU || TARGET_DISABLE_SETZUCC) && !TARGET_PARTIAL_REG_STALL
     && (!TARGET_ZERO_EXTEND_WITH_AND || optimize_function_for_size_p (cfun))"
    "#"
    "&& reload_completed"
***************
*** 19788,19794 ****
    ""
  {
    if (REG_P (operands[0])
!       && TARGET_APX_ZU)
      return "setzu%C1\t%0";
    else
      return "set%C1\t%0";
--- 20465,20472 ----
    ""
  {
    if (REG_P (operands[0])
!       && TARGET_APX_ZU
!       && !TARGET_DISABLE_SETZUCC)
      return "setzu%C1\t%0";
    else
      return "set%C1\t%0";
***************
*** 19802,19808 ****
  	  [(reg FLAGS_REG) (const_int 0)]))]
    ""
  {
!   if (TARGET_APX_ZU)
      return "setzu%C1\t%0";
    else
      return "set%C1\t%0";
--- 20480,20486 ----
  	  [(reg FLAGS_REG) (const_int 0)]))]
    ""
  {
!   if (TARGET_APX_ZU && !TARGET_DISABLE_SETZUCC)
      return "setzu%C1\t%0";
    else
      return "set%C1\t%0";
***************
*** 26708,26762 ****
  	(neg:SWI (ltu:SWI (reg:CCC FLAGS_REG) (const_int 0))))])
  
  (define_insn "*mov<mode>cc_noc"
!   [(set (match_operand:SWI248 0 "register_operand" "=r,r,r,r")
  	(if_then_else:SWI248 (match_operator 1 "ix86_comparison_operator"
  			       [(reg FLAGS_REG) (const_int 0)])
! 	  (match_operand:SWI248 2 "nonimmediate_operand" "rm,0,rm,r")
! 	  (match_operand:SWI248 3 "nonimmediate_operand" "0,rm,r,rm")))]
    "TARGET_CMOVE && !(MEM_P (operands[2]) && MEM_P (operands[3]))"
    "@
     cmov%O2%C1\t{%2, %0|%0, %2}
     cmov%O2%c1\t{%3, %0|%0, %3}
     cmov%O2%C1\t{%2, %3, %0|%0, %3, %2}
     cmov%O2%c1\t{%3, %2, %0|%0, %2, %3}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "icmov")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*movsicc_noc_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r")
  	(if_then_else:DI (match_operator 1 "ix86_comparison_operator"
  			   [(reg FLAGS_REG) (const_int 0)])
  	  (zero_extend:DI
! 	    (match_operand:SI 2 "nonimmediate_operand" "rm,0,rm,r"))
  	  (zero_extend:DI
! 	    (match_operand:SI 3 "nonimmediate_operand" "0,rm,r,rm"))))]
    "TARGET_64BIT
     && TARGET_CMOVE && !(MEM_P (operands[2]) && MEM_P (operands[3]))"
    "@
     cmov%O2%C1\t{%2, %k0|%k0, %2}
     cmov%O2%c1\t{%3, %k0|%k0, %3}
     cmov%O2%C1\t{%2, %3, %k0|%k0, %3, %2}
     cmov%O2%c1\t{%3, %2, %k0|%k0, %2, %3}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "icmov")
     (set_attr "mode" "SI")])
  
  (define_insn "*movsicc_noc_zext_1"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,r")
  	(zero_extend:DI
  	  (if_then_else:SI (match_operator 1 "ix86_comparison_operator"
  			     [(reg FLAGS_REG) (const_int 0)])
! 	     (match_operand:SI 2 "nonimmediate_operand" "rm,0,rm,r")
! 	     (match_operand:SI 3 "nonimmediate_operand" "0,rm,r,rm"))))]
    "TARGET_64BIT
     && TARGET_CMOVE && !(MEM_P (operands[2]) && MEM_P (operands[3]))"
    "@
     cmov%O2%C1\t{%2, %k0|%k0, %2}
     cmov%O2%c1\t{%3, %k0|%k0, %3}
     cmov%O2%C1\t{%2, %3, %k0|%k0, %3, %2}
     cmov%O2%c1\t{%3, %2, %k0|%k0, %2, %3}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd")
     (set_attr "type" "icmov")
     (set_attr "mode" "SI")])
  
--- 27386,27455 ----
  	(neg:SWI (ltu:SWI (reg:CCC FLAGS_REG) (const_int 0))))])
  
  (define_insn "*mov<mode>cc_noc"
!   [(set (match_operand:SWI248 0 "register_operand" "=r,r,r,r,r")
  	(if_then_else:SWI248 (match_operator 1 "ix86_comparison_operator"
  			       [(reg FLAGS_REG) (const_int 0)])
! 	  (match_operand:SWI248 2 "nonimmediate_operand" "rm,0,r,m,r")
! 	  (match_operand:SWI248 3 "nonimmediate_operand" "0,rm,r,r,m")))]
    "TARGET_CMOVE && !(MEM_P (operands[2]) && MEM_P (operands[3]))"
    "@
     cmov%O2%C1\t{%2, %0|%0, %2}
     cmov%O2%c1\t{%3, %0|%0, %3}
     cmov%O2%C1\t{%2, %3, %0|%0, %3, %2}
+    cmov%O2%C1\t{%2, %3, %0|%0, %3, %2}
     cmov%O2%c1\t{%3, %2, %0|%0, %2, %3}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "icmov")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*movsicc_noc_zext"
!   [(set (match_operand:DI 0 "register_operand" "=r,r,r,r,r")
  	(if_then_else:DI (match_operator 1 "ix86_comparison_operator"
  			   [(reg FLAGS_REG) (const_int 0)])
  	  (zero_extend:DI
! 	    (match_operand:SI 2 "nonimmediate_operand" "rm,0,r,m,r"))
  	  (zero_extend:DI
! 	    (match_operand:SI 3 "nonimmediate_operand" "0,rm,r,r,m"))))]
    "TARGET_64BIT
     && TARGET_CMOVE && !(MEM_P (operands[2]) && MEM_P (operands[3]))"
    "@
     cmov%O2%C1\t{%2, %k0|%k0, %2}
     cmov%O2%c1\t{%3, %k0|%k0, %3}
     cmov%O2%C1\t{%2, %3, %k0|%k0, %3, %2}
+    cmov%O2%C1\t{%2, %3, %k0|%k0, %3, %2}
     cmov%O2%c1\t{%3, %2, %k0|%k0, %2, %3}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "icmov")
     (set_attr "mode" "SI")])
  
  (define_insn "*movsicc_noc_zext_1"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,r,r")
  	(zero_extend:DI
  	  (if_then_else:SI (match_operator 1 "ix86_comparison_operator"
  			     [(reg FLAGS_REG) (const_int 0)])
! 	     (match_operand:SI 2 "nonimmediate_operand" "rm,0,r,m,r")
! 	     (match_operand:SI 3 "nonimmediate_operand" "0,rm,r,r,m"))))]
    "TARGET_64BIT
     && TARGET_CMOVE && !(MEM_P (operands[2]) && MEM_P (operands[3]))"
    "@
     cmov%O2%C1\t{%2, %k0|%k0, %2}
     cmov%O2%c1\t{%3, %k0|%k0, %3}
     cmov%O2%C1\t{%2, %3, %k0|%k0, %3, %2}
+    cmov%O2%C1\t{%2, %3, %k0|%k0, %3, %2}
     cmov%O2%c1\t{%3, %2, %k0|%k0, %2, %3}"
!   [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "3,4")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "icmov")
     (set_attr "mode" "SI")])
  
diff -Nrcpad gcc-17-20260531/gcc/config/i386/i386elf.h gcc-17-20260607/gcc/config/i386/i386elf.h
*** gcc-17-20260531/gcc/config/i386/i386elf.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/i386elf.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 20,26 ****
  <http://www.gnu.org/licenses/>.  */
  
  /* Define DEFAULT_PCC_STRUCT_RETURN to 1 because the i386 SVR4 ABI returns
!    records and unions in memory. ix86_option_override_internal will overide
     this flag when compiling 64-bit code as we never do pcc_struct_return
     scheme on x86-64.  */
  #undef DEFAULT_PCC_STRUCT_RETURN
--- 20,26 ----
  <http://www.gnu.org/licenses/>.  */
  
  /* Define DEFAULT_PCC_STRUCT_RETURN to 1 because the i386 SVR4 ABI returns
!    records and unions in memory. ix86_option_override_internal will override
     this flag when compiling 64-bit code as we never do pcc_struct_return
     scheme on x86-64.  */
  #undef DEFAULT_PCC_STRUCT_RETURN
diff -Nrcpad gcc-17-20260531/gcc/config/i386/predicates.md gcc-17-20260607/gcc/config/i386/predicates.md
*** gcc-17-20260531/gcc/config/i386/predicates.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/predicates.md	Sun Jun  7 22:32:06 2026
***************
*** 901,907 ****
    return i == 3 || i == 5 || i == 9;
  })
  
! ;; Match 4 or 8 to 11.  Used for embeded rounding.
  (define_predicate "const_4_or_8_to_11_operand"
    (match_code "const_int")
  {
--- 901,907 ----
    return i == 3 || i == 5 || i == 9;
  })
  
! ;; Match 4 or 8 to 11.  Used for embedded rounding.
  (define_predicate "const_4_or_8_to_11_operand"
    (match_code "const_int")
  {
***************
*** 1928,1934 ****
    return true;
  })
  
! ;; Return true if OP is a constant pool in perm{w,d,b} which constains index
  ;; match pmov{dw,wb,qd}.
  (define_predicate "permvar_truncate_operand"
   (match_code "mem")
--- 1928,1934 ----
    return true;
  })
  
! ;; Return true if OP is a constant pool in perm{w,d,b} which contains index
  ;; match pmov{dw,wb,qd}.
  (define_predicate "permvar_truncate_operand"
   (match_code "mem")
***************
*** 1958,1964 ****
    return true;
  })
  
! ;; Return true if OP is a constant pool in shufb which constains index
  ;; match pmovdw.
  (define_predicate "pshufb_truncv4siv4hi_operand"
   (match_code "mem")
--- 1958,1964 ----
    return true;
  })
  
! ;; Return true if OP is a constant pool in shufb which contains index
  ;; match pmovdw.
  (define_predicate "pshufb_truncv4siv4hi_operand"
   (match_code "mem")
***************
*** 1988,1994 ****
    return true;
  })
  
! ;; Return true if OP is a constant pool in shufb which constains index
  ;; match pmovdw.
  (define_predicate "pshufb_truncv8hiv8qi_operand"
   (match_code "mem")
--- 1988,1994 ----
    return true;
  })
  
! ;; Return true if OP is a constant pool in shufb which contains index
  ;; match pmovdw.
  (define_predicate "pshufb_truncv8hiv8qi_operand"
   (match_code "mem")
diff -Nrcpad gcc-17-20260531/gcc/config/i386/sse.md gcc-17-20260607/gcc/config/i386/sse.md
*** gcc-17-20260531/gcc/config/i386/sse.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/sse.md	Sun Jun  7 22:32:06 2026
***************
*** 175,181 ****
    ;; For AVX512BF16 support
    UNSPEC_VDPBF16PS
  
!   ;; For AVX512FP16 suppport
    UNSPEC_COMPLEX_FMA
    UNSPEC_COMPLEX_FMA_PAIR
    UNSPEC_COMPLEX_FCMA
--- 175,181 ----
    ;; For AVX512BF16 support
    UNSPEC_VDPBF16PS
  
!   ;; For AVX512FP16 support
    UNSPEC_COMPLEX_FMA
    UNSPEC_COMPLEX_FMA_PAIR
    UNSPEC_COMPLEX_FCMA
***************
*** 214,220 ****
    UNSPEC_SM4KEY4
    UNSPEC_SM4RNDS4
  
!   ;; For AVX10.2 suppport
    UNSPEC_VDPPHPS
    UNSPEC_VCVTBIASPH2BF8
    UNSPEC_VCVTBIASPH2BF8S
--- 214,220 ----
    UNSPEC_SM4KEY4
    UNSPEC_SM4RNDS4
  
!   ;; For AVX10.2 support
    UNSPEC_VDPPHPS
    UNSPEC_VCVTBIASPH2BF8
    UNSPEC_VCVTBIASPH2BF8S
***************
*** 256,262 ****
    UNSPEC_VBMACXOR
    UNSPEC_VBITREV
  
!   ;; For MOVRS suppport
    UNSPEC_VMOVRS
  ])
  
--- 256,262 ----
    UNSPEC_VBMACXOR
    UNSPEC_VBITREV
  
!   ;; For MOVRS support
    UNSPEC_VMOVRS
  ])
  
***************
*** 1024,1029 ****
--- 1024,1031 ----
  
  (define_mode_attr sse2
    [(V16QI "sse2") (V32QI "avx") (V64QI "avx512f")
+    (V8HI "sse2") (V16HI "avx") (V32HI "avx512f")
+    (V4SI "sse2") (V8SI "avx") (V16SI "avx512f")
     (V2DI "sse2") (V4DI "avx") (V8DI "avx512f")])
  
  (define_mode_attr sse3
***************
*** 2057,2065 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "<sse2>_movnt<mode>"
!   [(set (match_operand:VI8 0 "memory_operand" "=m")
! 	(unspec:VI8 [(match_operand:VI8 1 "register_operand" "v")]
! 		    UNSPEC_MOVNT))]
    "TARGET_SSE2"
    "%vmovntdq\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
--- 2059,2068 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "<sse2>_movnt<mode>"
!   [(set (match_operand:VI_AVX_AVX512F 0 "memory_operand" "=m")
! 	(unspec:VI_AVX_AVX512F
! 	  [(match_operand:VI_AVX_AVX512F 1 "register_operand" "v")]
! 	  UNSPEC_MOVNT))]
    "TARGET_SSE2"
    "%vmovntdq\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 2080,2088 ****
  (define_mode_iterator STORENT_MODE
    [(DI "TARGET_SSE2 && TARGET_64BIT") (SI "TARGET_SSE2")
     (SF "TARGET_SSE4A") (DF "TARGET_SSE4A")
-    (V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX") (V2DI "TARGET_SSE2")
     (V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
!    (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2")])
  
  (define_expand "storent<mode>"
    [(set (match_operand:STORENT_MODE 0 "memory_operand")
--- 2083,2094 ----
  (define_mode_iterator STORENT_MODE
    [(DI "TARGET_SSE2 && TARGET_64BIT") (SI "TARGET_SSE2")
     (SF "TARGET_SSE4A") (DF "TARGET_SSE4A")
     (V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
!    (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2")
!    (V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX") (V2DI "TARGET_SSE2")
!    (V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX") (V4SI "TARGET_SSE2")
!    (V32HI "TARGET_AVX512F") (V16HI "TARGET_AVX") (V8HI "TARGET_SSE2")
!    (V64QI "TARGET_AVX512F") (V32QI "TARGET_AVX") (V16QI "TARGET_SSE2")])
  
  (define_expand "storent<mode>"
    [(set (match_operand:STORENT_MODE 0 "memory_operand")
***************
*** 2520,2533 ****
     (set_attr "mode" "QI")])
  
  (define_insn_and_split "*kortest_cmp<SWI1248_AVX512BWDQ_64:mode>_mov<SWI248:mode>cc"
!    [(set (match_operand:SWI248 0 "register_operand" "=r,r,r,r,r,r,r,r")
        (if_then_else:SWI248
  	(match_operator 1 "bt_comparison_operator"
  	  [(match_operand:SWI1248_AVX512BWDQ_64 4 "register_operand"
! 	  "?k,<SWI1248_AVX512BWDQ_64:r>,?k, <SWI1248_AVX512BWDQ_64:r>,?k,r,?k, r")
  	   (const_int -1)])
! 	(match_operand:SWI248 2 "nonimmediate_operand" "rm,rm, 0, 0,rm,rm, r, r")
! 	(match_operand:SWI248 3 "nonimmediate_operand" " 0, 0,rm,rm, r, r,rm,rm")))
      (clobber (reg:CC FLAGS_REG))]
    "TARGET_AVX512BW && TARGET_CMOVE
     && !(MEM_P (operands[2]) && MEM_P (operands[3]))"
--- 2526,2539 ----
     (set_attr "mode" "QI")])
  
  (define_insn_and_split "*kortest_cmp<SWI1248_AVX512BWDQ_64:mode>_mov<SWI248:mode>cc"
!    [(set (match_operand:SWI248 0 "register_operand" "=r,r,r,r,r,r,r,r,r,r")
        (if_then_else:SWI248
  	(match_operator 1 "bt_comparison_operator"
  	  [(match_operand:SWI1248_AVX512BWDQ_64 4 "register_operand"
! 	  "?k,<SWI1248_AVX512BWDQ_64:r>,?k, <SWI1248_AVX512BWDQ_64:r>,?k,?k,r,r,?k, r")
  	   (const_int -1)])
! 	(match_operand:SWI248 2 "nonimmediate_operand" "rm,rm, 0, 0,r,m,r,m, r, r")
! 	(match_operand:SWI248 3 "nonimmediate_operand" " 0, 0,rm,rm,r,r,r,r,m,m")))
      (clobber (reg:CC FLAGS_REG))]
    "TARGET_AVX512BW && TARGET_CMOVE
     && !(MEM_P (operands[2]) && MEM_P (operands[3]))"
***************
*** 2556,2562 ****
    operands[5] = gen_rtx_fmt_ee (GET_CODE (operands[1]), VOIDmode,
  				flag_reg,const0_rtx);
  }
!   [(set_attr "isa" "*,*,*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
     (set_attr "type" "icmov")
     (set_attr "mode" "<SWI248:MODE>")])
  
--- 2562,2572 ----
    operands[5] = gen_rtx_fmt_ee (GET_CODE (operands[1]), VOIDmode,
  				flag_reg,const0_rtx);
  }
!   [(set_attr "isa" "*,*,*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd,apx_ndd,apx_ndd")
!    (set (attr "preferred_for_speed")
!      (cond [(eq_attr "alternative" "5,7,8,9")
! 	      (symbol_ref "TARGET_ENABLE_NDD_MEM")]
! 	   (symbol_ref "true")))
     (set_attr "type" "icmov")
     (set_attr "mode" "<SWI248:MODE>")])
  
***************
*** 14038,14044 ****
  	  UNSPEC_VTERNLOG))]
    "(<MODE_SIZE> == 64 || TARGET_AVX512VL
      || (TARGET_AVX512F && !TARGET_PREFER_AVX256))
! /* Disallow embeded broadcast for vector HFmode since
     it's not real AVX512FP16 instruction.  */
    && (GET_MODE_SIZE (GET_MODE_INNER (<MODE>mode)) >= 4
       || GET_CODE (operands[3]) != VEC_DUPLICATE)"
--- 14048,14054 ----
  	  UNSPEC_VTERNLOG))]
    "(<MODE_SIZE> == 64 || TARGET_AVX512VL
      || (TARGET_AVX512F && !TARGET_PREFER_AVX256))
! /* Disallow embedded broadcast for vector HFmode since
     it's not real AVX512FP16 instruction.  */
    && (GET_MODE_SIZE (GET_MODE_INNER (<MODE>mode)) >= 4
       || GET_CODE (operands[3]) != VEC_DUPLICATE)"
***************
*** 17803,17809 ****
         (const_string "0")))
     (set_attr "mode" "<sseinsnmode>")])
  
! ;; PR target/101796: Transfrom movl+vpbranchcastw+vpsravw to vpsraw
  ;; when COUNT is immediate.
  (define_split
    [(set (match_operand:VI248_AVX512BW 0 "register_operand")
--- 17813,17819 ----
         (const_string "0")))
     (set_attr "mode" "<sseinsnmode>")])
  
! ;; PR target/101796: Transform movl+vpbranchcastw+vpsravw to vpsraw
  ;; when COUNT is immediate.
  (define_split
    [(set (match_operand:VI248_AVX512BW 0 "register_operand")
***************
*** 23453,23461 ****
  	      (lshiftrt:<ssedoublemode>
  		(mult:<ssedoublemode>
  		  (sign_extend:<ssedoublemode>
! 		    (match_operand:PMULHRSW 1 "nonimmediate_operand"))
  		  (sign_extend:<ssedoublemode>
! 		    (match_operand:PMULHRSW 2 "nonimmediate_operand")))
  		(const_int 14))
  	      (match_dup 3))
  	    (const_int 1))))]
--- 23463,23471 ----
  	      (lshiftrt:<ssedoublemode>
  		(mult:<ssedoublemode>
  		  (sign_extend:<ssedoublemode>
! 		    (match_operand:PMULHRSW 1 "vector_operand"))
  		  (sign_extend:<ssedoublemode>
! 		    (match_operand:PMULHRSW 2 "vector_operand")))
  		(const_int 14))
  	      (match_dup 3))
  	    (const_int 1))))]
***************
*** 23473,23481 ****
  	      (lshiftrt:<ssedoublemode>
  		(mult:<ssedoublemode>
  		  (sign_extend:<ssedoublemode>
! 		    (match_operand:VI2_AVX2_AVX512BW 1 "nonimmediate_operand"))
  		  (sign_extend:<ssedoublemode>
! 		    (match_operand:VI2_AVX2_AVX512BW 2 "nonimmediate_operand")))
  		(const_int 14))
  	      (match_dup 3))
  	    (const_int 1))))]
--- 23483,23491 ----
  	      (lshiftrt:<ssedoublemode>
  		(mult:<ssedoublemode>
  		  (sign_extend:<ssedoublemode>
! 		    (match_operand:VI2_AVX2_AVX512BW 1 "vector_operand"))
  		  (sign_extend:<ssedoublemode>
! 		    (match_operand:VI2_AVX2_AVX512BW 2 "vector_operand")))
  		(const_int 14))
  	      (match_dup 3))
  	    (const_int 1))))]
diff -Nrcpad gcc-17-20260531/gcc/config/i386/x86-tune-costs.h gcc-17-20260607/gcc/config/i386/x86-tune-costs.h
*** gcc-17-20260531/gcc/config/i386/x86-tune-costs.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/x86-tune-costs.h	Sun Jun  7 22:32:06 2026
*************** struct processor_costs znver1_cost = {
*** 1616,1622 ****
    /* Start of register allocator costs.  integer->integer move cost is 2. */
  
    /* reg-reg moves are done by renaming and thus they are even cheaper than
!      1 cycle. Becuase reg-reg move cost is 2 and the following tables correspond
       to doubles of latencies, we do not model this correctly.  It does not
       seem to make practical difference to bump prices up even more.  */
    6,					/* cost for loading QImode using
--- 1616,1622 ----
    /* Start of register allocator costs.  integer->integer move cost is 2. */
  
    /* reg-reg moves are done by renaming and thus they are even cheaper than
!      1 cycle. Because reg-reg move cost is 2 and the following tables correspond
       to doubles of latencies, we do not model this correctly.  It does not
       seem to make practical difference to bump prices up even more.  */
    6,					/* cost for loading QImode using
*************** struct processor_costs znver5_cost = {
*** 2355,2367 ****
    /* FMA had throughput 2 and latency 4.  */
    COSTS_N_INSNS (4),			/* cost of FMA SS instruction.  */
    COSTS_N_INSNS (4),			/* cost of FMA SD instruction.  */
!   /* DIVSS has throughtput 0.4 and latency 10.  */
    COSTS_N_INSNS (10),			/* cost of DIVSS instruction.  */
!   /* DIVSD has throughtput 0.25 and latency 13.  */
    COSTS_N_INSNS (13),			/* cost of DIVSD instruction.  */
!   /* DIVSD has throughtput 0.22 and latency 14.  */
    COSTS_N_INSNS (14),			/* cost of SQRTSS instruction.  */
!   /* DIVSD has throughtput 0.13 and latency 20.  */
    COSTS_N_INSNS (20),			/* cost of SQRTSD instruction.  */
    COSTS_N_INSNS (3),			/* cost of CVTSS2SD etc.  */
    COSTS_N_INSNS (5),			/* cost of 256bit VCVTPS2PD etc.  */
--- 2355,2367 ----
    /* FMA had throughput 2 and latency 4.  */
    COSTS_N_INSNS (4),			/* cost of FMA SS instruction.  */
    COSTS_N_INSNS (4),			/* cost of FMA SD instruction.  */
!   /* DIVSS has throughput 0.4 and latency 10.  */
    COSTS_N_INSNS (10),			/* cost of DIVSS instruction.  */
!   /* DIVSD has throughput 0.25 and latency 13.  */
    COSTS_N_INSNS (13),			/* cost of DIVSD instruction.  */
!   /* DIVSD has throughput 0.22 and latency 14.  */
    COSTS_N_INSNS (14),			/* cost of SQRTSS instruction.  */
!   /* DIVSD has throughput 0.13 and latency 20.  */
    COSTS_N_INSNS (20),			/* cost of SQRTSD instruction.  */
    COSTS_N_INSNS (3),			/* cost of CVTSS2SD etc.  */
    COSTS_N_INSNS (5),			/* cost of 256bit VCVTPS2PD etc.  */
*************** struct processor_costs znver5_cost = {
*** 2378,2384 ****
  	for register pressure.
        - fp ops: 2 additions per cycle, latency 2-3
  		2 multiplicaitons per cycle, latency 3
!       - vector intger ops: 4 additions, latency 1
  			   2 multiplications, latency 4
  	We increase width to 6 for multiplications
  	in ix86_reassociation_width.  */
--- 2378,2384 ----
  	for register pressure.
        - fp ops: 2 additions per cycle, latency 2-3
  		2 multiplicaitons per cycle, latency 3
!       - vector integer ops: 4 additions, latency 1
  			   2 multiplications, latency 4
  	We increase width to 6 for multiplications
  	in ix86_reassociation_width.  */
*************** struct processor_costs znver5_cost = {
*** 2402,2408 ****
    COSTS_N_INSNS (2),			/* Branch mispredict scale.  */
  };
  
! /* skylake_cost should produce code tuned for Skylake familly of CPUs.  */
  static stringop_algs skylake_memcpy[2] =   {
    {libcall,
     {{256, rep_prefix_1_byte, true},
--- 2402,2408 ----
    COSTS_N_INSNS (2),			/* Branch mispredict scale.  */
  };
  
! /* skylake_cost should produce code tuned for Skylake family of CPUs.  */
  static stringop_algs skylake_memcpy[2] =   {
    {libcall,
     {{256, rep_prefix_1_byte, true},
*************** struct processor_costs generic_cost = {
*** 4277,4283 ****
    COSTS_N_INSNS (2),			/* Branch mispredict scale.  */
  };
  
! /* core_cost should produce code tuned for Core familly of CPUs.  */
  static stringop_algs core_memcpy[2] = {
    {libcall, {{1024, rep_prefix_4_byte, true}, {-1, libcall, false}}},
    {libcall, {{24, loop, true}, {128, rep_prefix_8_byte, true},
--- 4277,4283 ----
    COSTS_N_INSNS (2),			/* Branch mispredict scale.  */
  };
  
! /* core_cost should produce code tuned for Core family of CPUs.  */
  static stringop_algs core_memcpy[2] = {
    {libcall, {{1024, rep_prefix_4_byte, true}, {-1, libcall, false}}},
    {libcall, {{24, loop, true}, {128, rep_prefix_8_byte, true},
diff -Nrcpad gcc-17-20260531/gcc/config/i386/x86-tune-sched-atom.cc gcc-17-20260607/gcc/config/i386/x86-tune-sched-atom.cc
*** gcc-17-20260531/gcc/config/i386/x86-tune-sched-atom.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/x86-tune-sched-atom.cc	Sun Jun  7 22:32:06 2026
*************** swap_top_of_ready_list (rtx_insn **ready
*** 188,194 ****
    #undef INSN_TICK
  }
  
! /* Perform possible reodering of ready list for Atom/Silvermont only.
     Return issue rate.  */
  int
  ix86_atom_sched_reorder (FILE *dump, int sched_verbose, rtx_insn **ready,
--- 188,194 ----
    #undef INSN_TICK
  }
  
! /* Perform possible reordering of ready list for Atom/Silvermont only.
     Return issue rate.  */
  int
  ix86_atom_sched_reorder (FILE *dump, int sched_verbose, rtx_insn **ready,
*************** ix86_atom_sched_reorder (FILE *dump, int
*** 203,209 ****
    /* Set up issue rate.  */
    issue_rate = ix86_issue_rate ();
  
!   /* Do reodering for BONNELL/SILVERMONT only.  */
    if (!TARGET_CPU_P (BONNELL) && !TARGET_CPU_P (SILVERMONT)
        && !TARGET_CPU_P (INTEL))
      return issue_rate;
--- 203,209 ----
    /* Set up issue rate.  */
    issue_rate = ix86_issue_rate ();
  
!   /* Do reordering for BONNELL/SILVERMONT only.  */
    if (!TARGET_CPU_P (BONNELL) && !TARGET_CPU_P (SILVERMONT)
        && !TARGET_CPU_P (INTEL))
      return issue_rate;
*************** ix86_atom_sched_reorder (FILE *dump, int
*** 212,218 ****
    if (n_ready <= 1)
      return issue_rate;
  
!   /* Do reodering for post-reload scheduler only.  */
    if (!reload_completed)
      return issue_rate;
  
--- 212,218 ----
    if (n_ready <= 1)
      return issue_rate;
  
!   /* Do reordering for post-reload scheduler only.  */
    if (!reload_completed)
      return issue_rate;
  
diff -Nrcpad gcc-17-20260531/gcc/config/i386/x86-tune-sched-bd.cc gcc-17-20260607/gcc/config/i386/x86-tune-sched-bd.cc
*** gcc-17-20260531/gcc/config/i386/x86-tune-sched-bd.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/x86-tune-sched-bd.cc	Sun Jun  7 22:32:06 2026
*************** typedef struct dispatch_windows_s {
*** 143,149 ****
    struct dispatch_windows_s *prev;
  } dispatch_windows;
  
! /* Immediate valuse used in an insn.  */
  typedef struct imm_info_s
    {
      int imm;
--- 143,149 ----
    struct dispatch_windows_s *prev;
  } dispatch_windows;
  
! /* Immediate values used in an insn.  */
  typedef struct imm_info_s
    {
      int imm;
*************** find_constant (rtx in_rtx, imm_info *imm
*** 372,378 ****
  
  /* Return total size of immediate operands of an instruction along with number
     of corresponding immediate-operands.  It initializes its parameters to zero
!    befor calling FIND_CONSTANT.
     INSN is the input instruction.  IMM is the total of immediates.
     IMM32 is the number of 32 bit immediates.  IMM64 is the number of 64
     bit immediates.  */
--- 372,378 ----
  
  /* Return total size of immediate operands of an instruction along with number
     of corresponding immediate-operands.  It initializes its parameters to zero
!    before calling FIND_CONSTANT.
     INSN is the input instruction.  IMM is the total of immediates.
     IMM32 is the number of 32 bit immediates.  IMM64 is the number of 64
     bit immediates.  */
diff -Nrcpad gcc-17-20260531/gcc/config/i386/x86-tune-sched.cc gcc-17-20260607/gcc/config/i386/x86-tune-sched.cc
*** gcc-17-20260531/gcc/config/i386/x86-tune-sched.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/x86-tune-sched.cc	Sun Jun  7 22:32:06 2026
*************** exact_store_load_dependency (rtx_insn *s
*** 274,280 ****
     between INSN and DEP_INSN through a dependence of type DEP_TYPE, and strength
     DW.  It should return the new value.
  
!    On x86 CPUs this is most commonly used to model the fact that valus of
     registers used to compute address of memory operand  needs to be ready
     earlier than values of registers used in the actual operation.  */
  
--- 274,280 ----
     between INSN and DEP_INSN through a dependence of type DEP_TYPE, and strength
     DW.  It should return the new value.
  
!    On x86 CPUs this is most commonly used to model the fact that values of
     registers used to compute address of memory operand  needs to be ready
     earlier than values of registers used in the actual operation.  */
  
diff -Nrcpad gcc-17-20260531/gcc/config/i386/x86-tune.def gcc-17-20260607/gcc/config/i386/x86-tune.def
*** gcc-17-20260531/gcc/config/i386/x86-tune.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/x86-tune.def	Sun Jun  7 22:32:06 2026
*************** DEF_TUNE (X86_TUNE_FUSE_MOV_AND_ALU, "fu
*** 159,172 ****
  
  /* X86_TUNE_FUSE_AND_BRANCH_MEM: Fuse alu with a subsequent conditional
     jump instruction when alu contains memory operand.
!    TODO: Not suported by TIGERLAKE and COPERLAKE, so m_CORE_AVX2 is wrong.  */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM, "fuse_alu_and_branch_mem",
! 	  m_SANDYBRIDGE | m_CORE_AVX2 | m_ZHAOXIN | m_GENERIC | m_ZNVER3 | m_ZNVER4 | m_ZNVER5)
  
  /* X86_TUNE_FUSE_AND_BRANCH_MEM_IMM: Fuse alu with a subsequent conditional
     jump instruction when alu contains both immediate and displacement.  */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM_IMM, "fuse_alu_and_branch_mem_imm",
! 	  m_GENERIC | m_ZNVER4 | m_ZNVER5)
  
  /* X86_TUNE_FUSE_AND_BRANCH_RIP_RELATIVE: Fuse alu with a subsequent
     conditional jump instruction when alu contains IP relative address.  */
--- 159,173 ----
  
  /* X86_TUNE_FUSE_AND_BRANCH_MEM: Fuse alu with a subsequent conditional
     jump instruction when alu contains memory operand.
!    TODO: Not supported by TIGERLAKE and COOPERLAKE, so m_CORE_AVX2 is wrong.  */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM, "fuse_alu_and_branch_mem",
! 	  m_SANDYBRIDGE | m_CORE_AVX2 | m_ZHAOXIN | m_GENERIC | m_ZNVER3
! 	  | m_ZNVER4 | m_ZNVER5 | m_ZNVER6)
  
  /* X86_TUNE_FUSE_AND_BRANCH_MEM_IMM: Fuse alu with a subsequent conditional
     jump instruction when alu contains both immediate and displacement.  */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM_IMM, "fuse_alu_and_branch_mem_imm",
! 	  m_GENERIC | m_ZNVER4 | m_ZNVER5| m_ZNVER6)
  
  /* X86_TUNE_FUSE_AND_BRANCH_RIP_RELATIVE: Fuse alu with a subsequent
     conditional jump instruction when alu contains IP relative address.  */
*************** DEF_TUNE (X86_TUNE_PREFER_KNOWN_REP_MOVS
*** 337,343 ****
     compact prologues and epilogues by issuing a misaligned moves.  This
     requires target to handle misaligned moves and partial memory stalls
     reasonably well.
!    FIXME: This may actualy be a win on more targets than listed here.  */
  DEF_TUNE (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES,
  	  "misaligned_move_string_pro_epilogues",
  	  m_386 | m_486 | m_CORE_ALL | m_AMD_MULTIPLE | m_ZHAOXIN | m_TREMONT
--- 338,344 ----
     compact prologues and epilogues by issuing a misaligned moves.  This
     requires target to handle misaligned moves and partial memory stalls
     reasonably well.
!    FIXME: This may actually be a win on more targets than listed here.  */
  DEF_TUNE (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES,
  	  "misaligned_move_string_pro_epilogues",
  	  m_386 | m_486 | m_CORE_ALL | m_AMD_MULTIPLE | m_ZHAOXIN | m_TREMONT
*************** DEF_TUNE (X86_TUNE_AVOID_MFENCE, "avoid_
*** 401,406 ****
--- 402,414 ----
  DEF_TUNE (X86_TUNE_EXPAND_ABS, "expand_abs",
  	  m_CORE_ALL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_ZHAOXIN)
  
+ /* X86_TUNE_DISABLE_SETZUCC: Disable SETcc with ZU suffix. */
+ DEF_TUNE (X86_TUNE_DISABLE_SETZUCC, "disable_setzucc",
+ 	  m_DIAMONDRAPIDS | m_NOVALAKE)
+ 
+ /* X86_TUNE_ENABLE_NDD_MEM: Enable memory form of NDD instructions.  */
+ DEF_TUNE (X86_TUNE_ENABLE_NDD_MEM, "enable_ndd_mem", m_NONE)
+ 
  /*****************************************************************************/
  /* 387 instruction selection tuning                                          */
  /*****************************************************************************/
*************** DEF_TUNE (X86_TUNE_SSE_MOVCC_USE_BLENDV,
*** 600,606 ****
  /* X86_TUNE_V4SI_REDUCTION_PREFER_SHUFD: Prefer pshuf to reduce V16QI,
     V8HI, V8HI, V4SI, V4FI, V2DI modes when lshr are costlier. */
  DEF_TUNE (X86_TUNE_SSE_REDUCTION_PREFER_PSHUF,
!    "sse_reduction_prefer_pshuf", m_ZNVER4 | m_ZNVER5 | m_C86_4G_M7)
  
  /*****************************************************************************/
  /* AVX instruction selection tuning (some of SSE flags affects AVX, too)     */
--- 608,614 ----
  /* X86_TUNE_V4SI_REDUCTION_PREFER_SHUFD: Prefer pshuf to reduce V16QI,
     V8HI, V8HI, V4SI, V4FI, V2DI modes when lshr are costlier. */
  DEF_TUNE (X86_TUNE_SSE_REDUCTION_PREFER_PSHUF,
!    "sse_reduction_prefer_pshuf", m_ZNVER4 | m_ZNVER5 | m_ZNVER6 | m_C86_4G_M7)
  
  /*****************************************************************************/
  /* AVX instruction selection tuning (some of SSE flags affects AVX, too)     */
*************** DEF_TUNE (X86_TUNE_AVX256_AVOID_VEC_PERM
*** 638,643 ****
--- 646,655 ----
  DEF_TUNE (X86_TUNE_AVX512_SPLIT_REGS, "avx512_split_regs", m_ZNVER4
  	  | m_C86_4G_M7)
  
+ /* X86_TUNE_AVX512_AVOID_VEC_PERM: Avoid using 512-bit cross-lane
+    vector permutation instructions in the auto-vectorizer.  */
+ DEF_TUNE (X86_TUNE_AVX512_AVOID_VEC_PERM, "avx512_avoid_vec_perm", m_C86_4G_M7)
+ 
  /* It's better to align MOVE_MAX with prefer_vector_width to reduce
     risk of STLF stalls(small store followed by big load.)  */
  /* X86_TUNE_AVX256_MOVE_BY_PIECES: Optimize move_by_pieces with 256-bit
*************** DEF_TUNE (X86_TUNE_DOUBLE_WITH_ADD, "dou
*** 672,678 ****
  
  /* X86_TUNE_ALWAYS_FANCY_MATH_387: controls use of fancy 387 operations,
     such as fsqrt, fprem, fsin, fcos, fsincos etc.
!    Should be enabled for all targets that always has coprocesor.  */
  DEF_TUNE (X86_TUNE_ALWAYS_FANCY_MATH_387, "always_fancy_math_387",
            ~(m_386 | m_486 | m_LAKEMONT))
  
--- 684,690 ----
  
  /* X86_TUNE_ALWAYS_FANCY_MATH_387: controls use of fancy 387 operations,
     such as fsqrt, fprem, fsin, fcos, fsincos etc.
!    Should be enabled for all targets that always has coprocessor.  */
  DEF_TUNE (X86_TUNE_ALWAYS_FANCY_MATH_387, "always_fancy_math_387",
            ~(m_386 | m_486 | m_LAKEMONT))
  
*************** DEF_TUNE (X86_TUNE_PARTIAL_MEMORY_READ_S
*** 736,742 ****
  DEF_TUNE (X86_TUNE_PROMOTE_QIMODE, "promote_qimode",
  	  ~m_PPRO)
  
! /* X86_TUNE_PROMOTE_HI_REGS: Same, but for 16bit artihmetic.  Again we avoid
     partial register stalls on PentiumPro targets. */
  DEF_TUNE (X86_TUNE_PROMOTE_HI_REGS, "promote_hi_regs", m_PPRO)
  
--- 748,754 ----
  DEF_TUNE (X86_TUNE_PROMOTE_QIMODE, "promote_qimode",
  	  ~m_PPRO)
  
! /* X86_TUNE_PROMOTE_HI_REGS: Same, but for 16bit arithmetic.  Again we avoid
     partial register stalls on PentiumPro targets. */
  DEF_TUNE (X86_TUNE_PROMOTE_HI_REGS, "promote_hi_regs", m_PPRO)
  
diff -Nrcpad gcc-17-20260531/gcc/config/i386/zn4zn5.md gcc-17-20260607/gcc/config/i386/zn4zn5.md
*** gcc-17-20260531/gcc/config/i386/zn4zn5.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/zn4zn5.md	Sun Jun  7 22:32:06 2026
***************
*** 34,40 ****
  (define_cpu_unit "znver4-decode3" "znver4")
  
  ;; Currently blocking all decoders for vector path instructions as
! ;; they are dispatched separetely as microcode sequence.
  (define_reservation "znver4-vector" "znver4-decode0+znver4-decode1+znver4-decode2+znver4-decode3")
  
  ;; Direct instructions can be issued to any of the four decoders.
--- 34,40 ----
  (define_cpu_unit "znver4-decode3" "znver4")
  
  ;; Currently blocking all decoders for vector path instructions as
! ;; they are dispatched separately as microcode sequence.
  (define_reservation "znver4-vector" "znver4-decode0+znver4-decode1+znver4-decode2+znver4-decode3")
  
  ;; Direct instructions can be issued to any of the four decoders.
diff -Nrcpad gcc-17-20260531/gcc/config/i386/znver.md gcc-17-20260607/gcc/config/i386/znver.md
*** gcc-17-20260531/gcc/config/i386/znver.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/i386/znver.md	Sun Jun  7 22:32:06 2026
***************
*** 34,40 ****
  (define_cpu_unit "znver1-decode3" "znver1")
  
  ;; Currently blocking all decoders for vector path instructions as
! ;; they are dispatched separetely as microcode sequence.
  ;; Fix me: Need to revisit this.
  (define_reservation "znver1-vector" "znver1-decode0+znver1-decode1+znver1-decode2+znver1-decode3")
  
--- 34,40 ----
  (define_cpu_unit "znver1-decode3" "znver1")
  
  ;; Currently blocking all decoders for vector path instructions as
! ;; they are dispatched separately as microcode sequence.
  ;; Fix me: Need to revisit this.
  (define_reservation "znver1-vector" "znver1-decode0+znver1-decode1+znver1-decode2+znver1-decode3")
  
***************
*** 478,484 ****
  			      (eq_attr "type" "lea"))
  			 "znver1-direct,znver1-ieu")
  
! ;; Other integer instrucions
  (define_insn_reservation "znver1_idirect" 1
  			 (and (eq_attr "cpu" "znver1,znver2,znver3")
  			      (and (eq_attr "unit" "integer,unknown")
--- 478,484 ----
  			      (eq_attr "type" "lea"))
  			 "znver1-direct,znver1-ieu")
  
! ;; Other integer instructions
  (define_insn_reservation "znver1_idirect" 1
  			 (and (eq_attr "cpu" "znver1,znver2,znver3")
  			      (and (eq_attr "unit" "integer,unknown")
***************
*** 807,813 ****
  			 "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
  
  ;; SSE moves
! ;; Fix me:  Need to revist this again some of the moves may be restricted
  ;; to some fpu pipes.
  (define_insn_reservation "znver1_sse_mov" 2
  			 (and (eq_attr "cpu" "znver1")
--- 807,813 ----
  			 "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
  
  ;; SSE moves
! ;; Fix me:  Need to revisit this again some of the moves may be restricted
  ;; to some fpu pipes.
  (define_insn_reservation "znver1_sse_mov" 2
  			 (and (eq_attr "cpu" "znver1")
diff -Nrcpad gcc-17-20260531/gcc/config/ia64/ia64.cc gcc-17-20260607/gcc/config/ia64/ia64.cc
*** gcc-17-20260531/gcc/config/ia64/ia64.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/ia64/ia64.cc	Sun Jun  7 22:32:06 2026
*************** ia64_add_bundle_selector_before (int tem
*** 9150,9156 ****
  /* The following function does insn bundling.  Bundling means
     inserting templates and nop insns to fit insn groups into permitted
     templates.  Instruction scheduling uses NDFA (non-deterministic
!    finite automata) encoding informations about the templates and the
     inserted nops.  Nondeterminism of the automata permits follows
     all possible insn sequences very fast.
  
--- 9150,9156 ----
  /* The following function does insn bundling.  Bundling means
     inserting templates and nop insns to fit insn groups into permitted
     templates.  Instruction scheduling uses NDFA (non-deterministic
!    finite automata) encoding information about the templates and the
     inserted nops.  Nondeterminism of the automata permits follows
     all possible insn sequences very fast.
  
diff -Nrcpad gcc-17-20260531/gcc/config/ia64/itanium2.md gcc-17-20260607/gcc/config/ia64/itanium2.md
*** gcc-17-20260531/gcc/config/ia64/itanium2.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/ia64/itanium2.md	Sun Jun  7 22:32:06 2026
***************
*** 554,560 ****
  
  (define_reservation "2_B" "2_B0|2_B1")
  
! ;; MLX bunlde uses ports equivalent to MFI bundles.
  
  ;;   For the MLI template, the I slot insn is always assigned to port I0
  ;; if it is in the first bundle or it is assigned to port I1 if it is in
--- 554,560 ----
  
  (define_reservation "2_B" "2_B0|2_B1")
  
! ;; MLX bundle uses ports equivalent to MFI bundles.
  
  ;;   For the MLI template, the I slot insn is always assigned to port I0
  ;; if it is in the first bundle or it is assigned to port I1 if it is in
***************
*** 899,905 ****
         (not (match_test "bundling_p")))
    "2_I+2_only_ui0")
  
! ;; There is only ony insn `mov ar.pfs =' for toar_i:
  (define_insn_reservation "2_toar_i"  0
    (and (and (eq_attr "cpu" "itanium2")
              (eq_attr "itanium_class" "toar_i"))
--- 899,905 ----
         (not (match_test "bundling_p")))
    "2_I+2_only_ui0")
  
! ;; There is only one insn `mov ar.pfs =' for toar_i:
  (define_insn_reservation "2_toar_i"  0
    (and (and (eq_attr "cpu" "itanium2")
              (eq_attr "itanium_class" "toar_i"))
diff -Nrcpad gcc-17-20260531/gcc/config/ia64/sync.md gcc-17-20260607/gcc/config/ia64/sync.md
*** gcc-17-20260531/gcc/config/ia64/sync.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/ia64/sync.md	Sun Jun  7 22:32:06 2026
***************
*** 101,107 ****
     (match_operand:SI 7 "const_int_operand" "")]			;; fail model
    ""
  {
!   /* No need to distinquish __sync from __atomic, so get base value.  */
    enum memmodel model = memmodel_base (INTVAL (operands[6]));
    rtx ccv = gen_rtx_REG (DImode, AR_CCV_REGNUM);
    rtx dval, eval;
--- 101,107 ----
     (match_operand:SI 7 "const_int_operand" "")]			;; fail model
    ""
  {
!   /* No need to distinguish __sync from __atomic, so get base value.  */
    enum memmodel model = memmodel_base (INTVAL (operands[6]));
    rtx ccv = gen_rtx_REG (DImode, AR_CCV_REGNUM);
    rtx dval, eval;
***************
*** 201,207 ****
     (match_operand:SI 3 "const_int_operand" "")]			;; succ model
    ""
  {
!   /* No need to distinquish __sync from __atomic, so get base value.  */
    enum memmodel model = memmodel_base (INTVAL (operands[3]));
  
    switch (model)
--- 201,207 ----
     (match_operand:SI 3 "const_int_operand" "")]			;; succ model
    ""
  {
!   /* No need to distinguish __sync from __atomic, so get base value.  */
    enum memmodel model = memmodel_base (INTVAL (operands[3]));
  
    switch (model)
diff -Nrcpad gcc-17-20260531/gcc/config/lm32/lm32.cc gcc-17-20260607/gcc/config/lm32/lm32.cc
*** gcc-17-20260531/gcc/config/lm32/lm32.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/lm32/lm32.cc	Sun Jun  7 22:32:06 2026
*************** lm32_compute_frame_size (int size)
*** 467,473 ****
    callee_size = 0;
    reg_save_mask = 0;
  
!   /* Build mask that actually determines which regsiters we save
       and calculate size required to store them in the stack.  */
    for (regno = 1; regno < SP_REGNUM; regno++)
      {
--- 467,473 ----
    callee_size = 0;
    reg_save_mask = 0;
  
!   /* Build mask that actually determines which registers we save
       and calculate size required to store them in the stack.  */
    for (regno = 1; regno < SP_REGNUM; regno++)
      {
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/lasx.md gcc-17-20260607/gcc/config/loongarch/lasx.md
*** gcc-17-20260531/gcc/config/loongarch/lasx.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/lasx.md	Sun Jun  7 22:32:06 2026
***************
*** 193,199 ****
     (V8SI "V8HI")
     (V4DI "V4SI")])
  
! ;; Double-sized Vector MODE with same elemet type. "Vector, Enlarged-MODE"
  (define_mode_attr VEMODE256
    [(V8SF "V16SF")
     (V8SI "V16SI")
--- 193,199 ----
     (V8SI "V8HI")
     (V4DI "V4SI")])
  
! ;; Double-sized Vector MODE with same element type. "Vector, Enlarged-MODE"
  (define_mode_attr VEMODE256
    [(V8SF "V16SF")
     (V8SI "V16SI")
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/loongarch-builtins.cc gcc-17-20260607/gcc/config/loongarch/loongarch-builtins.cc
*** gcc-17-20260531/gcc/config/loongarch/loongarch-builtins.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/loongarch-builtins.cc	Sun Jun  7 22:32:06 2026
*************** static const struct loongarch_builtin_de
*** 904,910 ****
    DIRECT_NO_TARGET_BUILTIN (ldpte_d, LARCH_VOID_FTYPE_DI_UQI, la64),
    DIRECT_NO_TARGET_BUILTIN (ldpte_w, LARCH_VOID_FTYPE_SI_UQI,  la64_or_la32s),
  
!   /* CRC Instrinsic */
  
    DIRECT_BUILTIN (crc_w_b_w, LARCH_SI_FTYPE_QI_SI, la64),
    DIRECT_BUILTIN (crc_w_h_w, LARCH_SI_FTYPE_HI_SI, la64),
--- 904,910 ----
    DIRECT_NO_TARGET_BUILTIN (ldpte_d, LARCH_VOID_FTYPE_DI_UQI, la64),
    DIRECT_NO_TARGET_BUILTIN (ldpte_w, LARCH_VOID_FTYPE_SI_UQI,  la64_or_la32s),
  
!   /* CRC Intrinsic */
  
    DIRECT_BUILTIN (crc_w_b_w, LARCH_SI_FTYPE_QI_SI, la64),
    DIRECT_BUILTIN (crc_w_h_w, LARCH_SI_FTYPE_HI_SI, la64),
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/loongarch-c.cc gcc-17-20260607/gcc/config/loongarch/loongarch-c.cc
*** gcc-17-20260531/gcc/config/loongarch/loongarch-c.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/loongarch-c.cc	Sun Jun  7 22:32:06 2026
*************** loongarch_pragma_target_parse (tree args
*** 235,241 ****
  
    cpp_opts->warn_unused_macros = saved_warn_unused_macros;
  
!   /* If we're popping or reseting make sure to update the globals so that
       the optab availability predicates get recomputed.  */
    if (pop_target)
      loongarch_save_restore_target_globals (pop_target);
--- 235,241 ----
  
    cpp_opts->warn_unused_macros = saved_warn_unused_macros;
  
!   /* If we're popping or resetting make sure to update the globals so that
       the optab availability predicates get recomputed.  */
    if (pop_target)
      loongarch_save_restore_target_globals (pop_target);
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/loongarch-opts.cc gcc-17-20260607/gcc/config/loongarch/loongarch-opts.cc
*** gcc-17-20260531/gcc/config/loongarch/loongarch-opts.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/loongarch-opts.cc	Sun Jun  7 22:32:06 2026
*************** loongarch_generate_mrecip_scheme (unsign
*** 985,991 ****
  
  
  
! /* Refresh the switches acccording to the resolved loongarch_target struct.  */
  void
  loongarch_target_option_override (struct loongarch_target *target,
  				  struct gcc_options *opts,
--- 985,991 ----
  
  
  
! /* Refresh the switches according to the resolved loongarch_target struct.  */
  void
  loongarch_target_option_override (struct loongarch_target *target,
  				  struct gcc_options *opts,
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/loongarch-opts.h gcc-17-20260607/gcc/config/loongarch/loongarch-opts.h
*** gcc-17-20260531/gcc/config/loongarch/loongarch-opts.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/loongarch-opts.h	Sun Jun  7 22:32:06 2026
*************** loongarch_config_target (struct loongarc
*** 52,58 ****
  			 int follow_multilib_list_p);
  
  
! /* Refresh the switches acccording to the resolved loongarch_target struct.  */
  void
  loongarch_target_option_override (struct loongarch_target *target,
  				  struct gcc_options *opts,
--- 52,58 ----
  			 int follow_multilib_list_p);
  
  
! /* Refresh the switches according to the resolved loongarch_target struct.  */
  void
  loongarch_target_option_override (struct loongarch_target *target,
  				  struct gcc_options *opts,
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/loongarch.cc gcc-17-20260607/gcc/config/loongarch/loongarch.cc
*** gcc-17-20260531/gcc/config/loongarch/loongarch.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/loongarch.cc	Sun Jun  7 22:32:06 2026
*************** int loongarch_dwarf_regno[FIRST_PSEUDO_R
*** 177,183 ****
  static bool loongarch_hard_regno_mode_ok_p[MAX_MACHINE_MODE]
  					  [FIRST_PSEUDO_REGISTER];
  
! /* Index C is true if character C is a valid PRINT_OPERAND punctation
     character.  */
  static bool loongarch_print_operand_punct[256];
  
--- 177,183 ----
  static bool loongarch_hard_regno_mode_ok_p[MAX_MACHINE_MODE]
  					  [FIRST_PSEUDO_REGISTER];
  
! /* Index C is true if character C is a valid PRINT_OPERAND punctuation
     character.  */
  static bool loongarch_print_operand_punct[256];
  
*************** loongarch_setup_incoming_varargs (cumula
*** 767,774 ****
    local_cum = *get_cumulative_args (cum);
  
    /* For a C23 variadic function w/o any named argument, and w/o an
!      artifical argument for large return value, skip advancing args.
!      There is such an artifical argument iff. arg.type is non-NULL
       (PR 114175).  */
    if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))
        || arg.type != NULL_TREE)
--- 767,774 ----
    local_cum = *get_cumulative_args (cum);
  
    /* For a C23 variadic function w/o any named argument, and w/o an
!      artificial argument for large return value, skip advancing args.
!      There is such an artificial argument iff. arg.type is non-NULL
       (PR 114175).  */
    if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))
        || arg.type != NULL_TREE)
*************** loongarch_build_integer (struct loongarc
*** 1620,1626 ****
  
        /* Determine whether the upper 32 bits are sign-extended from the lower
  	 32 bits. If it is, the instructions to load the high order can be
! 	 ommitted.  */
        if (lu32i[sign31] && lu52i[sign31])
  	return cost;
        /* If the lower 32 bits are the same as the upper 32 bits, just copy
--- 1620,1626 ----
  
        /* Determine whether the upper 32 bits are sign-extended from the lower
  	 32 bits. If it is, the instructions to load the high order can be
! 	 omitted.  */
        if (lu32i[sign31] && lu52i[sign31])
  	return cost;
        /* If the lower 32 bits are the same as the upper 32 bits, just copy
*************** loongarch_build_integer (struct loongarc
*** 1665,1671 ****
  
  /* Fill CODES with a sequence of rtl operations to load VALUE.
     Return the number of operations needed.
!    Split interger in loongarch_output_move.  */
  
  static unsigned int
  loongarch_integer_cost (HOST_WIDE_INT value)
--- 1665,1671 ----
  
  /* Fill CODES with a sequence of rtl operations to load VALUE.
     Return the number of operations needed.
!    Split integer in loongarch_output_move.  */
  
  static unsigned int
  loongarch_integer_cost (HOST_WIDE_INT value)
*************** loongarch_explicit_relocs_p (enum loonga
*** 2272,2278 ****
  	/* If we are performing LTO for a final link, and we have the
  	   linker plugin so we know the resolution of the symbols, then
  	   all GOT references are binding to external symbols or
! 	   preemptable symbols.  So the linker cannot relax them.  */
  	return (in_lto_p
  		&& !flag_incremental_link
  		&& HAVE_LTO_PLUGIN == 2
--- 2272,2278 ----
  	/* If we are performing LTO for a final link, and we have the
  	   linker plugin so we know the resolution of the symbols, then
  	   all GOT references are binding to external symbols or
! 	   preemptible symbols.  So the linker cannot relax them.  */
  	return (in_lto_p
  		&& !flag_incremental_link
  		&& HAVE_LTO_PLUGIN == 2
*************** loongarch_valid_lo_sum_p (enum loongarch
*** 2466,2472 ****
    if (!loongarch_split_symbol_type (symbol_type))
      return false;
  
!   /* We can't tell size or alignment when we have BLKmode, so try extracing a
       decl from the symbol if possible.  */
    if (mode == BLKmode)
      {
--- 2466,2472 ----
    if (!loongarch_split_symbol_type (symbol_type))
      return false;
  
!   /* We can't tell size or alignment when we have BLKmode, so try extracting a
       decl from the symbol if possible.  */
    if (mode == BLKmode)
      {
*************** loongarch_addu16i_imm12_operand_p (HOST_
*** 4932,4938 ****
  }
  
  /* Split one integer constant op[0] into two (op[1] and op[2]) for constant
!    plus operation in a specific mode.  The splitted constants can be added
     onto a register with a single instruction (addi.{d/w} or addu16i.d).  */
  
  void
--- 4932,4938 ----
  }
  
  /* Split one integer constant op[0] into two (op[1] and op[2]) for constant
!    plus operation in a specific mode.  The split constants can be added
     onto a register with a single instruction (addi.{d/w} or addu16i.d).  */
  
  void
*************** loongarch_rewrite_mem_for_simple_ldst (r
*** 6445,6451 ****
    return new_mem;
  }
  
! /* Print the text for PRINT_OPERAND punctation character CH to FILE.
     The punctuation characters are:
  
     '.'	Print the name of the register with a hard-wired zero (zero or $r0).
--- 6445,6451 ----
    return new_mem;
  }
  
! /* Print the text for PRINT_OPERAND punctuation character CH to FILE.
     The punctuation characters are:
  
     '.'	Print the name of the register with a hard-wired zero (zero or $r0).
*************** loongarch_is_elem_duplicate (struct expa
*** 9615,9623 ****
  /* In LASX, some permutation insn does not have the behavior that gcc expects
     when compiler wants to emit a vector permutation.
  
!    1.  What GCC provides via vectorize_vec_perm_const ()'s paramater:
     When GCC wants to performs a vector permutation, it provides two op
!    reigster, one target register, and a selector.
     In const vector permutation case, GCC provides selector as a char array
     that contains original value; in variable vector permutation
     (performs via vec_perm<mode> insn template), it provides a vector register.
--- 9615,9623 ----
  /* In LASX, some permutation insn does not have the behavior that gcc expects
     when compiler wants to emit a vector permutation.
  
!    1.  What GCC provides via vectorize_vec_perm_const ()'s parameter:
     When GCC wants to performs a vector permutation, it provides two op
!    register, one target register, and a selector.
     In const vector permutation case, GCC provides selector as a char array
     that contains original value; in variable vector permutation
     (performs via vec_perm<mode> insn template), it provides a vector register.
*************** loongarch_expand_vec_perm_const (struct
*** 9803,9810 ****
  	  idx = d->perm[0];
  	  /* We will use xvrepl128vei.* insn to achieve the result, but we need
  	     to make the high/low 128bit has the same contents that contain the
! 	     value that we need to broardcast, because xvrepl128vei does the
! 	     broardcast job from every 128bit of source register to
  	     corresponded part of target register! (A deep sigh.)  */
  	  if (idx < d->nelt / 2)
  	    {
--- 9803,9810 ----
  	  idx = d->perm[0];
  	  /* We will use xvrepl128vei.* insn to achieve the result, but we need
  	     to make the high/low 128bit has the same contents that contain the
! 	     value that we need to broadcast, because xvrepl128vei does the
! 	     broadcast job from every 128bit of source register to
  	     corresponded part of target register! (A deep sigh.)  */
  	  if (idx < d->nelt / 2)
  	    {
*************** loongarch_sched_reassociation_width (uns
*** 10045,10051 ****
    return loongarch_cpu_sched_reassociation_width (&la_target, opc, mode);
  }
  
! /* Implement extract a scalar element from vecotr register */
  
  void
  loongarch_expand_vector_extract (rtx target, rtx vec, int elt)
--- 10045,10051 ----
    return loongarch_cpu_sched_reassociation_width (&la_target, opc, mode);
  }
  
! /* Implement extract a scalar element from vector register */
  
  void
  loongarch_expand_vector_extract (rtx target, rtx vec, int elt)
*************** loongarch_expand_vec_unpack (rtx operand
*** 10279,10285 ****
  
        if (!unsigned_p)
  	{
! 	  /* Extract sign extention for each element comparing each element
  	     with immediate zero.  */
  	  tmp = gen_reg_rtx (imode);
  	  emit_insn (cmpFunc (tmp, operands[1], CONST0_RTX (imode)));
--- 10279,10285 ----
  
        if (!unsigned_p)
  	{
! 	  /* Extract sign extension for each element comparing each element
  	     with immediate zero.  */
  	  tmp = gen_reg_rtx (imode);
  	  emit_insn (cmpFunc (tmp, operands[1], CONST0_RTX (imode)));
*************** dispatch_function_versions (tree dispatc
*** 11895,11901 ****
  
    gseq = bb_seq (*empty_bb);
    /* Function version dispatch is via IFUNC.  IFUNC resolvers fire before
!      constructors, so explicity call __init_loongarch_feature_bits here.  */
    tree init_fn_type = build_function_type_list (void_type_node,
  						void_type_node,
  						NULL);
--- 11895,11901 ----
  
    gseq = bb_seq (*empty_bb);
    /* Function version dispatch is via IFUNC.  IFUNC resolvers fire before
!      constructors, so explicitly call __init_loongarch_feature_bits here.  */
    tree init_fn_type = build_function_type_list (void_type_node,
  						void_type_node,
  						NULL);
*************** loongarch_option_same_function_versions
*** 12151,12160 ****
  /* Output assembly to materialize the address of the stack canary value
     into reg.  The third argument, tmp, should be and should only be
     non-NULL if the extreme code model is effective for the canary.  If
!    the fourth arugment, load, is true, the canary value is loaded into
     the register.
  
!    The assembly cannot be splitted due to security reason.  */
  void
  loongarch_output_asm_load_canary (rtx reg, rtx canary, rtx tmp)
  {
--- 12151,12160 ----
  /* Output assembly to materialize the address of the stack canary value
     into reg.  The third argument, tmp, should be and should only be
     non-NULL if the extreme code model is effective for the canary.  If
!    the fourth argument, load, is true, the canary value is loaded into
     the register.
  
!    The assembly cannot be split due to security reason.  */
  void
  loongarch_output_asm_load_canary (rtx reg, rtx canary, rtx tmp)
  {
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/loongarch.h gcc-17-20260607/gcc/config/loongarch/loongarch.h
*** gcc-17-20260531/gcc/config/loongarch/loongarch.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/loongarch.h	Sun Jun  7 22:32:06 2026
*************** typedef struct {
*** 1073,1079 ****
  		...
  		.uleb128 foo-$LFBxxx
  
!    The .uleb128 requies $LFBxxx to match the FDE start address, which is
     likewise a byte pointer rather than an ISA-encoded address.
  
     At the time of writing, this hook is not used for the function end
--- 1073,1079 ----
  		...
  		.uleb128 foo-$LFBxxx
  
!    The .uleb128 requires $LFBxxx to match the FDE start address, which is
     likewise a byte pointer rather than an ISA-encoded address.
  
     At the time of writing, this hook is not used for the function end
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/loongarch.md gcc-17-20260607/gcc/config/loongarch/loongarch.md
*** gcc-17-20260531/gcc/config/loongarch/loongarch.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/loongarch.md	Sun Jun  7 22:32:06 2026
***************
*** 360,366 ****
  ;; Length of instruction in bytes.
  (define_attr "length" ""
     (cond [
! 	  ;; Branch futher than +/- 128 KiB require two instructions.
  	  (eq_attr "type" "branch")
  	  (if_then_else (and (le (minus (match_dup 0) (pc)) (const_int 131064))
  			     (le (minus (pc) (match_dup 0)) (const_int 131068)))
--- 360,366 ----
  ;; Length of instruction in bytes.
  (define_attr "length" ""
     (cond [
! 	  ;; Branch further than +/- 128 KiB require two instructions.
  	  (eq_attr "type" "branch")
  	  (if_then_else (and (le (minus (match_dup 0) (pc)) (const_int 131064))
  			     (le (minus (pc) (match_dup 0)) (const_int 131068)))
***************
*** 2074,2080 ****
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
  
! ;; conversion of an integeral (or boolean) value to a floating-point value
  
  (define_insn "floatsidf2"
    [(set (match_operand:DF 0 "register_operand" "=f")
--- 2074,2080 ----
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
  
! ;; conversion of an integral (or boolean) value to a floating-point value
  
  (define_insn "floatsidf2"
    [(set (match_operand:DF 0 "register_operand" "=f")
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/lsx.md gcc-17-20260607/gcc/config/loongarch/lsx.md
*** gcc-17-20260531/gcc/config/loongarch/lsx.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/lsx.md	Sun Jun  7 22:32:06 2026
***************
*** 167,173 ****
     (V4SI "V4HI")
     (V2DI "V2SI")])
  
! ;; Double-sized Vector MODE with same elemet type. "Vector, Enlarged-MODE"
  (define_mode_attr VEMODE
    [(V4SF "V8SF")
     (V4SI "V8SI")
--- 167,173 ----
     (V4SI "V4HI")
     (V2DI "V2SI")])
  
! ;; Double-sized Vector MODE with same element type. "Vector, Enlarged-MODE"
  (define_mode_attr VEMODE
    [(V4SF "V8SF")
     (V4SI "V8SI")
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/predicates.md gcc-17-20260607/gcc/config/loongarch/predicates.md
*** gcc-17-20260531/gcc/config/loongarch/predicates.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/predicates.md	Sun Jun  7 22:32:06 2026
***************
*** 430,437 ****
    (match_code "const,symbol_ref,label_ref")
  {
    /* Split symbol to high and low if return false.
!      If defined TARGET_CMODEL_EXTREME, all symbol would be splited,
!      else if offset is not zero, the symbol would be splited.  */
  
    enum loongarch_symbol_type symbol_type;
    loongarch_symbolic_constant_p (op, &symbol_type);
--- 430,437 ----
    (match_code "const,symbol_ref,label_ref")
  {
    /* Split symbol to high and low if return false.
!      If defined TARGET_CMODEL_EXTREME, all symbol would be split,
!      else if offset is not zero, the symbol would be split.  */
  
    enum loongarch_symbol_type symbol_type;
    loongarch_symbolic_constant_p (op, &symbol_type);
***************
*** 447,453 ****
      return true;
  
    /* When compiling with '-mcmodel=medium -mexplicit-relocs'
!      symbols are splited in loongarch_legitimize_call_address.
  
       When compiling with '-mcmodel=medium -mno-explicit-relocs',
       first obtain the symbolic address or the address of the
--- 447,453 ----
      return true;
  
    /* When compiling with '-mcmodel=medium -mexplicit-relocs'
!      symbols are split in loongarch_legitimize_call_address.
  
       When compiling with '-mcmodel=medium -mno-explicit-relocs',
       first obtain the symbolic address or the address of the
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/simd.md gcc-17-20260607/gcc/config/loongarch/simd.md
*** gcc-17-20260531/gcc/config/loongarch/simd.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/simd.md	Sun Jun  7 22:32:06 2026
***************
*** 373,379 ****
      !flag_trapping_math")
  
  ;; fix_trunc is allowed to raise inexact exception even if
! ;; -fno-fp-int-builtin-inexact.  Because the middle end trys to match
  ;; (FIX x) and it does not know (FIX (UNSPEC_SIMD_FRINTRZ x)), we need
  ;; to use define_insn_and_split instead of define_expand (expanders are
  ;; not considered during matching).
--- 373,379 ----
      !flag_trapping_math")
  
  ;; fix_trunc is allowed to raise inexact exception even if
! ;; -fno-fp-int-builtin-inexact.  Because the middle end tries to match
  ;; (FIX x) and it does not know (FIX (UNSPEC_SIMD_FRINTRZ x)), we need
  ;; to use define_insn_and_split instead of define_expand (expanders are
  ;; not considered during matching).
***************
*** 548,554 ****
    [(set_attr "type" "simd_fcmp")
     (set_attr "mode" "<MODE>")])
  
! ;; <x>vfcmp.*.{s/d} instructions only as instrinsics
  (define_c_enum "unspec"
    [UNSPEC_SIMD_FCMP_CAF
     UNSPEC_SIMD_FCMP_SAF
--- 548,554 ----
    [(set_attr "type" "simd_fcmp")
     (set_attr "mode" "<MODE>")])
  
! ;; <x>vfcmp.*.{s/d} instructions only as intrinsics
  (define_c_enum "unspec"
    [UNSPEC_SIMD_FCMP_CAF
     UNSPEC_SIMD_FCMP_SAF
diff -Nrcpad gcc-17-20260531/gcc/config/loongarch/sync.md gcc-17-20260607/gcc/config/loongarch/sync.md
*** gcc-17-20260531/gcc/config/loongarch/sync.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/loongarch/sync.md	Sun Jun  7 22:32:06 2026
***************
*** 74,81 ****
  ;; [1]: https://git.kernel.org/torvalds/c/e031a5f3f1ed
  ;;
  ;; Implementations without support for the finer-granularity hints simply treat
! ;; all as the full barrier (DBAR 0), so we can unconditionally start emiting the
! ;; more precise hints right away.
  (define_insn "mem_thread_fence_1"
    [(set (match_operand:BLK 0 "" "")
  	(unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
--- 74,81 ----
  ;; [1]: https://git.kernel.org/torvalds/c/e031a5f3f1ed
  ;;
  ;; Implementations without support for the finer-granularity hints simply treat
! ;; all as the full barrier (DBAR 0), so we can unconditionally start emitting
! ;; the more precise hints right away.
  (define_insn "mem_thread_fence_1"
    [(set (match_operand:BLK 0 "" "")
  	(unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))
diff -Nrcpad gcc-17-20260531/gcc/config/m68k/cf.md gcc-17-20260607/gcc/config/m68k/cf.md
*** gcc-17-20260531/gcc/config/m68k/cf.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/m68k/cf.md	Sun Jun  7 22:32:06 2026
***************
*** 299,305 ****
  ;; Call instruction.
  ;; ??? It's not clear what reservation is best to use for calls.
  ;; ??? For now we use mem-write + return reservations to reflect the fact of
! ;; ??? pushing and poping return address to and from the stack.
  ;; Takes 3 cycles.
  (define_reservation "cfv12_call" "cfv12_alu_01,cfv12_rts")
  ;; Takes 1/5 cycles.
--- 299,305 ----
  ;; Call instruction.
  ;; ??? It's not clear what reservation is best to use for calls.
  ;; ??? For now we use mem-write + return reservations to reflect the fact of
! ;; ??? pushing and popping return address to and from the stack.
  ;; Takes 3 cycles.
  (define_reservation "cfv12_call" "cfv12_alu_01,cfv12_rts")
  ;; Takes 1/5 cycles.
***************
*** 313,319 ****
  ;; Takes 1 cycles.
  (define_reservation "cfv3_bcc" "cfv123_alu_00")
  
! ;; Unconditional branch instruciton.
  ;; Takes 2 cycles.
  (define_reservation "cfv12_bra" "cfv12_alu_01")
  ;; Takes 1 cycles.
--- 313,319 ----
  ;; Takes 1 cycles.
  (define_reservation "cfv3_bcc" "cfv123_alu_00")
  
! ;; Unconditional branch instruction.
  ;; Takes 2 cycles.
  (define_reservation "cfv12_bra" "cfv12_alu_01")
  ;; Takes 1 cycles.
diff -Nrcpad gcc-17-20260531/gcc/config/m68k/m68k.cc gcc-17-20260607/gcc/config/m68k/m68k.cc
*** gcc-17-20260531/gcc/config/m68k/m68k.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/m68k/m68k.cc	Sun Jun  7 22:32:06 2026
*************** m68k_unwrap_symbol (rtx orig, bool unwra
*** 2521,2527 ****
    return m68k_unwrap_symbol_1 (orig, unwrap_reloc32_p, NULL);
  }
  
! /* Adjust decorated address operand before outputing assembler for it.  */
  
  static void
  m68k_adjust_decorated_operand (rtx op)
--- 2521,2527 ----
    return m68k_unwrap_symbol_1 (orig, unwrap_reloc32_p, NULL);
  }
  
! /* Adjust decorated address operand before outputting assembler for it.  */
  
  static void
  m68k_adjust_decorated_operand (rtx op)
*************** m68k_adjust_decorated_operand (rtx op)
*** 2580,2586 ****
      }
  }
  
! /* Prescan insn before outputing assembler for it.  */
  
  void
  m68k_final_prescan_insn (rtx_insn *insn ATTRIBUTE_UNUSED,
--- 2580,2586 ----
      }
  }
  
! /* Prescan insn before outputting assembler for it.  */
  
  void
  m68k_final_prescan_insn (rtx_insn *insn ATTRIBUTE_UNUSED,
*************** m68k_call_tls_get_addr (rtx x, rtx eqv,
*** 2753,2759 ****
    x = m68k_wrap_symbol (x, reloc, m68k_get_gp (), NULL_RTX);
  
    /* __tls_get_addr() is not a libcall, but emitting a libcall_value
!      is the simpliest way of generating a call.  The difference between
       __tls_get_addr() and libcall is that the result is returned in D0
       instead of A0.  To workaround this, we use m68k_libcall_value_in_a0_p
       which temporarily switches returning the result to A0.  */
--- 2753,2759 ----
    x = m68k_wrap_symbol (x, reloc, m68k_get_gp (), NULL_RTX);
  
    /* __tls_get_addr() is not a libcall, but emitting a libcall_value
!      is the simplest way of generating a call.  The difference between
       __tls_get_addr() and libcall is that the result is returned in D0
       instead of A0.  To workaround this, we use m68k_libcall_value_in_a0_p
       which temporarily switches returning the result to A0.  */
*************** m68k_call_m68k_read_tp (void)
*** 2800,2806 ****
    start_sequence ();
  
    /* __m68k_read_tp() is not a libcall, but emitting a libcall_value
!      is the simpliest way of generating a call.  The difference between
       __m68k_read_tp() and libcall is that the result is returned in D0
       instead of A0.  To workaround this, we use m68k_libcall_value_in_a0_p
       which temporarily switches returning the result to A0.  */
--- 2800,2806 ----
    start_sequence ();
  
    /* __m68k_read_tp() is not a libcall, but emitting a libcall_value
!      is the simplest way of generating a call.  The difference between
       __m68k_read_tp() and libcall is that the result is returned in D0
       instead of A0.  To workaround this, we use m68k_libcall_value_in_a0_p
       which temporarily switches returning the result to A0.  */
*************** m68k_sched_attr_size (rtx_insn *insn)
*** 6359,6365 ****
  }
  
  /* Return operand X or Y (depending on OPX_P) of INSN,
!    if it is a MEM, or NULL overwise.  */
  static enum attr_op_type
  sched_get_opxy_mem_type (rtx_insn *insn, bool opx_p)
  {
--- 6359,6365 ----
  }
  
  /* Return operand X or Y (depending on OPX_P) of INSN,
!    if it is a MEM, or NULL otherwise.  */
  static enum attr_op_type
  sched_get_opxy_mem_type (rtx_insn *insn, bool opx_p)
  {
*************** m68k_sched_dfa_post_advance_cycle (void)
*** 6900,6906 ****
  }
  
  /* Return X or Y (depending on OPX_P) operand of INSN,
!    if it is an integer register, or NULL overwise.  */
  static rtx
  sched_get_reg_operand (rtx_insn *insn, bool opx_p)
  {
--- 6900,6906 ----
  }
  
  /* Return X or Y (depending on OPX_P) operand of INSN,
!    if it is an integer register, or NULL otherwise.  */
  static rtx
  sched_get_reg_operand (rtx_insn *insn, bool opx_p)
  {
*************** sched_mem_operand_p (rtx_insn *insn, boo
*** 6949,6955 ****
  }
  
  /* Return X or Y (depending on OPX_P) operand of INSN,
!    if it is a MEM, or NULL overwise.  */
  static rtx
  sched_get_mem_operand (rtx_insn *insn, bool must_read_p, bool must_write_p)
  {
--- 6949,6955 ----
  }
  
  /* Return X or Y (depending on OPX_P) operand of INSN,
!    if it is a MEM, or NULL otherwise.  */
  static rtx
  sched_get_mem_operand (rtx_insn *insn, bool must_read_p, bool must_write_p)
  {
*************** m68k_sched_address_bypass_p (rtx_insn *p
*** 7004,7010 ****
  
  /* Helper function for m68k_sched_indexed_address_bypass_p.
     if PRO modifies register used as index in CON,
!    return scale of indexed memory access in CON.  Return zero overwise.  */
  static int
  sched_get_indexed_address_scale (rtx_insn *pro, rtx_insn *con)
  {
--- 7004,7010 ----
  
  /* Helper function for m68k_sched_indexed_address_bypass_p.
     if PRO modifies register used as index in CON,
!    return scale of indexed memory access in CON.  Return zero otherwise.  */
  static int
  sched_get_indexed_address_scale (rtx_insn *pro, rtx_insn *con)
  {
*************** m68k_conditional_register_usage (void)
*** 7118,7126 ****
    if (!TARGET_HARD_FLOAT)
      {
        x = reg_class_contents[FP_REGS];
!       for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
!         if (TEST_HARD_REG_BIT (x, i))
! 	  fixed_regs[i] = call_used_regs[i] = 1;
      }
    if (flag_pic)
      fixed_regs[PIC_REG] = call_used_regs[PIC_REG] = 1;
--- 7118,7126 ----
    if (!TARGET_HARD_FLOAT)
      {
        x = reg_class_contents[FP_REGS];
!       hard_reg_set_iterator hrsi;
!       EXECUTE_IF_SET_IN_HARD_REG_SET (x, 0, i, hrsi)
! 	fixed_regs[i] = call_used_regs[i] = 1;
      }
    if (flag_pic)
      fixed_regs[PIC_REG] = call_used_regs[PIC_REG] = 1;
*************** m68k_zero_call_used_regs (HARD_REG_SET n
*** 7211,7247 ****
  {
    rtx zero_fpreg = NULL_RTX;
  
!   for (unsigned int regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
!     if (TEST_HARD_REG_BIT (need_zeroed_hardregs, regno))
!       {
! 	rtx reg, zero;
  
! 	if (INT_REGNO_P (regno))
! 	  {
! 	    reg = regno_reg_rtx[regno];
! 	    zero = CONST0_RTX (SImode);
! 	  }
! 	else if (FP_REGNO_P (regno))
! 	  {
! 	    reg = gen_raw_REG (SFmode, regno);
! 	    if (zero_fpreg == NULL_RTX)
! 	      {
! 		/* On the 040/060 clearing an FP reg loads a large
! 		   immediate.  To reduce code size use the first
! 		   cleared FP reg to clear remaining ones.  Don't do
! 		   this on cores which use fmovecr.  */
! 		zero = CONST0_RTX (SFmode);
! 		if (TUNE_68040_60)
! 		  zero_fpreg = reg;
! 	      }
! 	    else
! 	      zero = zero_fpreg;
! 	  }
! 	else
! 	  gcc_unreachable ();
  
! 	emit_move_insn (reg, zero);
!       }
  
    return need_zeroed_hardregs;
  }
--- 7211,7247 ----
  {
    rtx zero_fpreg = NULL_RTX;
  
!   hard_reg_set_iterator hrsi;
!   EXECUTE_IF_SET_IN_HARD_REG_SET (need_zeroed_hardregs, 0, regno, hrsi)
!     {
!       rtx reg, zero;
  
!       if (INT_REGNO_P (regno))
! 	{
! 	  reg = regno_reg_rtx[regno];
! 	  zero = CONST0_RTX (SImode);
! 	}
!       else if (FP_REGNO_P (regno))
! 	{
! 	  reg = gen_raw_REG (SFmode, regno);
! 	  if (zero_fpreg == NULL_RTX)
! 	    {
! 	      /* On the 040/060 clearing an FP reg loads a large
! 		 immediate.  To reduce code size use the first
! 		 cleared FP reg to clear remaining ones.  Don't do
! 		 this on cores which use fmovecr.  */
! 	      zero = CONST0_RTX (SFmode);
! 	      if (TUNE_68040_60)
! 		zero_fpreg = reg;
! 	    }
! 	  else
! 	    zero = zero_fpreg;
! 	}
!       else
! 	gcc_unreachable ();
  
!       emit_move_insn (reg, zero);
!     }
  
    return need_zeroed_hardregs;
  }
diff -Nrcpad gcc-17-20260531/gcc/config/m68k/m68kelf.h gcc-17-20260607/gcc/config/m68k/m68kelf.h
*** gcc-17-20260531/gcc/config/m68k/m68kelf.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/m68k/m68kelf.h	Sun Jun  7 22:32:06 2026
*************** do {								\
*** 104,110 ****
  #define DEBUGGER_REGNO(REGNO) (REGNO)
  
  #if 0
! /* SVR4 m68k assembler is bitching on the `comm i,1,1' which askes for
     1 byte alignment. Don't generate alignment for COMMON seems to be
     safer until we the assembler is fixed.  */
  #undef ASM_OUTPUT_ALIGNED_COMMON
--- 104,110 ----
  #define DEBUGGER_REGNO(REGNO) (REGNO)
  
  #if 0
! /* SVR4 m68k assembler is bitching on the `comm i,1,1' which asks for
     1 byte alignment. Don't generate alignment for COMMON seems to be
     safer until we the assembler is fixed.  */
  #undef ASM_OUTPUT_ALIGNED_COMMON
diff -Nrcpad gcc-17-20260531/gcc/config/m68k/netbsd-elf.h gcc-17-20260607/gcc/config/m68k/netbsd-elf.h
*** gcc-17-20260531/gcc/config/m68k/netbsd-elf.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/m68k/netbsd-elf.h	Sun Jun  7 22:32:06 2026
*************** while (0)
*** 104,110 ****
  #define REGISTER_PREFIX "%"
  
  
! /* The prefix for local (compiler generated) lables.
     These labels will not appear in the symbol table.  */
  
  #undef LOCAL_LABEL_PREFIX
--- 104,110 ----
  #define REGISTER_PREFIX "%"
  
  
! /* The prefix for local (compiler generated) labels.
     These labels will not appear in the symbol table.  */
  
  #undef LOCAL_LABEL_PREFIX
diff -Nrcpad gcc-17-20260531/gcc/config/mcore/mcore.h gcc-17-20260607/gcc/config/mcore/mcore.h
*** gcc-17-20260531/gcc/config/mcore/mcore.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/mcore/mcore.h	Sun Jun  7 22:32:06 2026
***************
*** 74,80 ****
  #endif
  
  /* The ability to have 4 byte alignment is being suppressed for now.
!    If this ability is reenabled, you must disable the definition below
     *and* edit t-mcore to enable multilibs for 4 byte alignment code.  */
  #undef TARGET_8ALIGN
  #define TARGET_8ALIGN 1
--- 74,80 ----
  #endif
  
  /* The ability to have 4 byte alignment is being suppressed for now.
!    If this ability is re-enabled, you must disable the definition below
     *and* edit t-mcore to enable multilibs for 4 byte alignment code.  */
  #undef TARGET_8ALIGN
  #define TARGET_8ALIGN 1
diff -Nrcpad gcc-17-20260531/gcc/config/microblaze/microblaze.cc gcc-17-20260607/gcc/config/microblaze/microblaze.cc
*** gcc-17-20260531/gcc/config/microblaze/microblaze.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/microblaze/microblaze.cc	Sun Jun  7 22:32:06 2026
*************** struct GTY(()) microblaze_frame_info {
*** 149,155 ****
  
  /* Global variables for machine-dependent things.  */
  
! /* Toggle which pipleline interface to use.  */
  static GTY(()) int microblaze_sched_use_dfa = 0;
  
  /* Threshold for data being put into the small data/bss area, instead
--- 149,155 ----
  
  /* Global variables for machine-dependent things.  */
  
! /* Toggle which pipeline interface to use.  */
  static GTY(()) int microblaze_sched_use_dfa = 0;
  
  /* Threshold for data being put into the small data/bss area, instead
*************** compute_frame_size (HOST_WIDE_INT size)
*** 2147,2153 ****
    HOST_WIDE_INT var_size;	/* # bytes that local variables take up.  */
    HOST_WIDE_INT args_size;	/* # bytes that outgoing arguments take up.  */
    int link_debug_size;		/* # bytes for link register.  */
!   HOST_WIDE_INT gp_reg_size;	/* # bytes needed to store calle-saved gp regs.  */
    long mask;			/* mask of saved gp registers.  */
  
    interrupt_handler =
--- 2147,2154 ----
    HOST_WIDE_INT var_size;	/* # bytes that local variables take up.  */
    HOST_WIDE_INT args_size;	/* # bytes that outgoing arguments take up.  */
    int link_debug_size;		/* # bytes for link register.  */
!   HOST_WIDE_INT gp_reg_size;	/* # bytes needed to store callee-saved gp
! 				   regs.  */
    long mask;			/* mask of saved gp registers.  */
  
    interrupt_handler =
diff -Nrcpad gcc-17-20260531/gcc/config/microblaze/microblaze.h gcc-17-20260607/gcc/config/microblaze/microblaze.h
*** gcc-17-20260531/gcc/config/microblaze/microblaze.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/microblaze/microblaze.h	Sun Jun  7 22:32:06 2026
*************** extern enum reg_class microblaze_regno_t
*** 401,407 ****
  /* The return address for the current frame is in r31 if this is a leaf
     function.  Otherwise, it is on the stack.  It is at a variable offset
     from sp/fp/ap, so we define a fake hard register rap which is a
!    poiner to the return address on the stack.  This always gets eliminated
     during reload to be either the frame pointer or the stack pointer plus
     an offset.  */
  
--- 401,407 ----
  /* The return address for the current frame is in r31 if this is a leaf
     function.  Otherwise, it is on the stack.  It is at a variable offset
     from sp/fp/ap, so we define a fake hard register rap which is a
!    pointer to the return address on the stack.  This always gets eliminated
     during reload to be either the frame pointer or the stack pointer plus
     an offset.  */
  
diff -Nrcpad gcc-17-20260531/gcc/config/mingw/winnt-cxx.cc gcc-17-20260607/gcc/config/mingw/winnt-cxx.cc
*** gcc-17-20260531/gcc/config/mingw/winnt-cxx.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/mingw/winnt-cxx.cc	Sun Jun  7 22:32:06 2026
*************** i386_pe_adjust_class_at_definition (tree
*** 142,148 ****
      {
        /* We don't actually add the attribute to the decl, just set the flag
  	 that signals that the address of this symbol is not a compile-time
! 	 constant.   Any subsequent out-of-class declaration of members wil
  	 cause the DECL_DLLIMPORT_P flag to be unset.
  	 (See  tree.cc: merge_dllimport_decl_attributes).
  	 That is just right since out-of class declarations can only be a
--- 142,148 ----
      {
        /* We don't actually add the attribute to the decl, just set the flag
  	 that signals that the address of this symbol is not a compile-time
! 	 constant.   Any subsequent out-of-class declaration of members will
  	 cause the DECL_DLLIMPORT_P flag to be unset.
  	 (See  tree.cc: merge_dllimport_decl_attributes).
  	 That is just right since out-of class declarations can only be a
diff -Nrcpad gcc-17-20260531/gcc/config/mips/driver-native.cc gcc-17-20260607/gcc/config/mips/driver-native.cc
*** gcc-17-20260531/gcc/config/mips/driver-native.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/mips/driver-native.cc	Sun Jun  7 22:32:06 2026
*************** const char *
*** 44,50 ****
  host_detect_local_cpu (int argc, const char **argv)
  {
    const char *cpu = NULL;
!   /* Don't assigne any static string to ret.  If you need to do so,
       use concat.  */
    char *ret = NULL;
    char buf[128];
--- 44,50 ----
  host_detect_local_cpu (int argc, const char **argv)
  {
    const char *cpu = NULL;
!   /* Don't assign any static string to ret.  If you need to do so,
       use concat.  */
    char *ret = NULL;
    char buf[128];
diff -Nrcpad gcc-17-20260531/gcc/config/mips/mips-cpus.def gcc-17-20260607/gcc/config/mips/mips-cpus.def
*** gcc-17-20260531/gcc/config/mips/mips-cpus.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/mips/mips-cpus.def	Sun Jun  7 22:32:06 2026
*************** MIPS_CPU ("mips4", PROCESSOR_R10000, MIP
*** 44,50 ****
     isn't tuned to a specific processor.  */
  MIPS_CPU ("mips32", PROCESSOR_24KF1_1, MIPS_ISA_MIPS32, PTF_AVOID_BRANCHLIKELY_ALWAYS)
  MIPS_CPU ("mips32r2", PROCESSOR_74KF2_1, MIPS_ISA_MIPS32R2, PTF_AVOID_BRANCHLIKELY_ALWAYS)
! /* mips32r3 is micromips hense why it uses the M4K processor.  */
  MIPS_CPU ("mips32r3", PROCESSOR_M4K, MIPS_ISA_MIPS32R3, PTF_AVOID_BRANCHLIKELY_ALWAYS)
  MIPS_CPU ("mips32r5", PROCESSOR_P5600, MIPS_ISA_MIPS32R5, PTF_AVOID_BRANCHLIKELY_ALWAYS)
  MIPS_CPU ("mips32r6", PROCESSOR_I6400, MIPS_ISA_MIPS32R6, 0)
--- 44,50 ----
     isn't tuned to a specific processor.  */
  MIPS_CPU ("mips32", PROCESSOR_24KF1_1, MIPS_ISA_MIPS32, PTF_AVOID_BRANCHLIKELY_ALWAYS)
  MIPS_CPU ("mips32r2", PROCESSOR_74KF2_1, MIPS_ISA_MIPS32R2, PTF_AVOID_BRANCHLIKELY_ALWAYS)
! /* mips32r3 is micromips hence why it uses the M4K processor.  */
  MIPS_CPU ("mips32r3", PROCESSOR_M4K, MIPS_ISA_MIPS32R3, PTF_AVOID_BRANCHLIKELY_ALWAYS)
  MIPS_CPU ("mips32r5", PROCESSOR_P5600, MIPS_ISA_MIPS32R5, PTF_AVOID_BRANCHLIKELY_ALWAYS)
  MIPS_CPU ("mips32r6", PROCESSOR_I6400, MIPS_ISA_MIPS32R6, 0)
diff -Nrcpad gcc-17-20260531/gcc/config/mips/mips.cc gcc-17-20260607/gcc/config/mips/mips.cc
*** gcc-17-20260531/gcc/config/mips/mips.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/mips/mips.cc	Sun Jun  7 22:32:06 2026
*************** static const char *mips_base_align_funct
*** 512,518 ****
  /* Index [M][R] is true if register R is allowed to hold a value of mode M.  */
  static bool mips_hard_regno_mode_ok_p[MAX_MACHINE_MODE][FIRST_PSEUDO_REGISTER];
  
! /* Index C is true if character C is a valid PRINT_OPERAND punctation
     character.  */
  static bool mips_print_operand_punct[256];
  
--- 512,518 ----
  /* Index [M][R] is true if register R is allowed to hold a value of mode M.  */
  static bool mips_hard_regno_mode_ok_p[MAX_MACHINE_MODE][FIRST_PSEUDO_REGISTER];
  
! /* Index C is true if character C is a valid PRINT_OPERAND punctuation
     character.  */
  static bool mips_print_operand_punct[256];
  
*************** mips_setup_incoming_varargs (cumulative_
*** 6987,6994 ****
    local_cum = *get_cumulative_args (cum);
  
    /* For a C23 variadic function w/o any named argument, and w/o an
!      artifical argument for large return value, skip advancing args.
!      There is such an artifical argument iff. arg.type is non-NULL
       (PR 114175).  */
    if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))
        || arg.type != NULL_TREE)
--- 6987,6994 ----
    local_cum = *get_cumulative_args (cum);
  
    /* For a C23 variadic function w/o any named argument, and w/o an
!      artificial argument for large return value, skip advancing args.
!      There is such an artificial argument iff. arg.type is non-NULL
       (PR 114175).  */
    if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))
        || arg.type != NULL_TREE)
*************** mips_function_ok_for_sibcall (tree decl,
*** 8360,8366 ****
      return false;
  
    /* Direct Js are only possible to functions that use the same ISA encoding.
!      There is no JX counterpoart of JALX.  */
    if (decl
        && const_call_insn_operand (XEXP (DECL_RTL (decl), 0), VOIDmode)
        && mips_call_may_need_jalx_p (decl))
--- 8360,8366 ----
      return false;
  
    /* Direct Js are only possible to functions that use the same ISA encoding.
!      There is no JX counterpart of JALX.  */
    if (decl
        && const_call_insn_operand (XEXP (DECL_RTL (decl), 0), VOIDmode)
        && mips_call_may_need_jalx_p (decl))
*************** mips_expand_ext_as_unaligned_load (rtx d
*** 8880,8886 ****
      }
  
    /* If we were loading 32bits and the original register was DI then
!      sign/zero extend into the orignal dest.  */
    if (dest1)
      {
        if (unsigned_p)
--- 8880,8886 ----
      }
  
    /* If we were loading 32bits and the original register was DI then
!      sign/zero extend into the original dest.  */
    if (dest1)
      {
        if (unsigned_p)
*************** mips_use_ins_ext_p (rtx op, HOST_WIDE_IN
*** 8977,8983 ****
  }
  
  /* Check if MASK and SHIFT are valid in mask-low-and-shift-left
!    operation if MAXLEN is the maxium length of consecutive bits that
     can make up MASK.  MODE is the mode of the operation.  See
     mask_low_and_shift_len for the actual definition.  */
  
--- 8977,8983 ----
  }
  
  /* Check if MASK and SHIFT are valid in mask-low-and-shift-left
!    operation if MAXLEN is the maximum length of consecutive bits that
     can make up MASK.  MODE is the mode of the operation.  See
     mask_low_and_shift_len for the actual definition.  */
  
*************** mips_pop_asm_switch (struct mips_asm_swi
*** 9237,9243 ****
    mips_pop_asm_switch_1 (asm_switch, "\t", "\n");
  }
  
! /* Print the text for PRINT_OPERAND punctation character CH to FILE.
     The punctuation characters are:
  
     '('	Start a nested ".set noreorder" block.
--- 9237,9243 ----
    mips_pop_asm_switch_1 (asm_switch, "\t", "\n");
  }
  
! /* Print the text for PRINT_OPERAND punctuation character CH to FILE.
     The punctuation characters are:
  
     '('	Start a nested ".set noreorder" block.
*************** mips_cfun_has_inflexible_gp_ref_p (void)
*** 11036,11042 ****
  	return true;
  
        /* MIPS16 functions that return in FPRs need to call an
! 	 external libgcc routine.  This call is only made explict
  	 during mips_expand_epilogue, and it too might be lazily bound.  */
        if (mips16_cfun_returns_in_fpr_p ())
  	return true;
--- 11036,11042 ----
  	return true;
  
        /* MIPS16 functions that return in FPRs need to call an
! 	 external libgcc routine.  This call is only made explicit
  	 during mips_expand_epilogue, and it too might be lazily bound.  */
        if (mips16_cfun_returns_in_fpr_p ())
  	return true;
*************** mips_set_compression_mode (unsigned int
*** 20219,20225 ****
        /* Don't move loop invariants, because it tends to increase
  	 register pressure.  It also introduces an extra move in cases
  	 where the constant is the first operand in a two-operand binary
! 	 instruction, or when it forms a register argument to a functon
  	 call.  */
        flag_move_loop_invariants = 0;
  
--- 20219,20225 ----
        /* Don't move loop invariants, because it tends to increase
  	 register pressure.  It also introduces an extra move in cases
  	 where the constant is the first operand in a two-operand binary
! 	 instruction, or when it forms a register argument to a function
  	 call.  */
        flag_move_loop_invariants = 0;
  
*************** mips_expand_vec_unpack (rtx operands[2],
*** 22384,22390 ****
  
        if (!unsigned_p)
  	{
! 	  /* Extract sign extention for each element comparing each element
  	     with immediate zero.  */
  	  tmp = gen_reg_rtx (imode);
  	  emit_insn (cmpFunc (tmp, operands[1], CONST0_RTX (imode)));
--- 22384,22390 ----
  
        if (!unsigned_p)
  	{
! 	  /* Extract sign extension for each element comparing each element
  	     with immediate zero.  */
  	  tmp = gen_reg_rtx (imode);
  	  emit_insn (cmpFunc (tmp, operands[1], CONST0_RTX (imode)));
diff -Nrcpad gcc-17-20260531/gcc/config/mips/mips.h gcc-17-20260607/gcc/config/mips/mips.h
*** gcc-17-20260531/gcc/config/mips/mips.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/mips/mips.h	Sun Jun  7 22:32:06 2026
*************** while (0)
*** 2982,2988 ****
  		...
  		.uleb128 foo-$LFBxxx
  
!    The .uleb128 requies $LFBxxx to match the FDE start address, which is
     likewise a byte pointer rather than an ISA-encoded address.
  
     At the time of writing, this hook is not used for the function end
--- 2982,2988 ----
  		...
  		.uleb128 foo-$LFBxxx
  
!    The .uleb128 requires $LFBxxx to match the FDE start address, which is
     likewise a byte pointer rather than an ISA-encoded address.
  
     At the time of writing, this hook is not used for the function end
diff -Nrcpad gcc-17-20260531/gcc/config/mips/mips.md gcc-17-20260607/gcc/config/mips/mips.md
*** gcc-17-20260531/gcc/config/mips/mips.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/mips/mips.md	Sun Jun  7 22:32:06 2026
***************
*** 7056,7062 ****
  ;; from being computed before an earlier call.  To do this, we:
  ;;
  ;;    - Ensure that the register is live on entry to the function,
! ;;	so that it is never thought to be used uninitalized.
  ;;
  ;;    - Ensure that the register is live on exit from the function,
  ;;	so that it is live throughout.
--- 7056,7062 ----
  ;; from being computed before an earlier call.  To do this, we:
  ;;
  ;;    - Ensure that the register is live on entry to the function,
! ;;	so that it is never thought to be used uninitialized.
  ;;
  ;;    - Ensure that the register is live on exit from the function,
  ;;	so that it is live throughout.
***************
*** 7842,7848 ****
  ;; accessible in MIPS16.
  ;;
  ;; This is not represented as a call insn, to avoid the
! ;; unnecesarry clobbering of caller-save registers by a
  ;; function consisting only of: "rdhwr $3,$29; j $31; nop;"
  ;;
  ;; A $25 clobber is added to cater for a $25 load stub added by the
--- 7842,7848 ----
  ;; accessible in MIPS16.
  ;;
  ;; This is not represented as a call insn, to avoid the
! ;; unnecessary clobbering of caller-save registers by a
  ;; function consisting only of: "rdhwr $3,$29; j $31; nop;"
  ;;
  ;; A $25 clobber is added to cater for a $25 load stub added by the
diff -Nrcpad gcc-17-20260531/gcc/config/msp430/msp430-opts.h gcc-17-20260607/gcc/config/msp430/msp430-opts.h
*** gcc-17-20260531/gcc/config/msp430/msp430-opts.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/msp430/msp430-opts.h	Sun Jun  7 22:32:06 2026
*************** enum msp430_cpu_types
*** 33,39 ****
  {
    MSP430_CPU_MSP430,
    MSP430_CPU_430,
!   MSP430_CPU_MSP430X_DEFAULT, /* The default setting, which will be overriden
  				 by any other -mcpu= value.  */
    MSP430_CPU_MSP430X,
    MSP430_CPU_430X,
--- 33,39 ----
  {
    MSP430_CPU_MSP430,
    MSP430_CPU_430,
!   MSP430_CPU_MSP430X_DEFAULT, /* The default setting, which will be overridden
  				 by any other -mcpu= value.  */
    MSP430_CPU_MSP430X,
    MSP430_CPU_430X,
diff -Nrcpad gcc-17-20260531/gcc/config/msp430/msp430.cc gcc-17-20260607/gcc/config/msp430/msp430.cc
*** gcc-17-20260531/gcc/config/msp430/msp430.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/msp430/msp430.cc	Sun Jun  7 22:32:06 2026
*************** static char const * const special_conven
*** 540,546 ****
    NULL
  };
  
! /* TRUE if the function passed is a "speical" function.  Special
     functions pass two DImode parameters in registers.  */
  static bool
  msp430_special_register_convention_p (const char *name)
--- 540,546 ----
    NULL
  };
  
! /* TRUE if the function passed is a "special" function.  Special
     functions pass two DImode parameters in registers.  */
  static bool
  msp430_special_register_convention_p (const char *name)
*************** msp430_op_not_in_high_mem (rtx op)
*** 4079,4085 ****
         memory.  */
      return true;
  
!   /* Check possibilites for (mem (plus)).
       e.g. (mem (const (plus ((symbol_ref) (const_int))))) : &addr+2.  */
    if (msp430_check_plus_not_high_mem (op0)
        || ((GET_CODE (op0) == CONST)
--- 4079,4085 ----
         memory.  */
      return true;
  
!   /* Check possibilities for (mem (plus)).
       e.g. (mem (const (plus ((symbol_ref) (const_int))))) : &addr+2.  */
    if (msp430_check_plus_not_high_mem (op0)
        || ((GET_CODE (op0) == CONST)
diff -Nrcpad gcc-17-20260531/gcc/config/msp430/msp430.md gcc-17-20260607/gcc/config/msp430/msp430.md
*** gcc-17-20260531/gcc/config/msp430/msp430.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/msp430/msp430.md	Sun Jun  7 22:32:06 2026
***************
*** 84,90 ****
  ;; dst operand is in op1.
  ;; This attribute also describes which operands are safe to examine
  ;; when calculating the length or extension.  GCC will segfault trying to
! ;; examine a non-existant operand of an insn.
  (define_attr "type" "none,single,double,triple,cmp" (const_string "none"))
  
  ;; The M extension is for instructions like RRAM - they always
--- 84,90 ----
  ;; dst operand is in op1.
  ;; This attribute also describes which operands are safe to examine
  ;; when calculating the length or extension.  GCC will segfault trying to
! ;; examine a non-existent operand of an insn.
  (define_attr "type" "none,single,double,triple,cmp" (const_string "none"))
  
  ;; The M extension is for instructions like RRAM - they always
***************
*** 855,861 ****
  ;; We get large code size bloat when a PSImode pointer is stored in
  ;; memory, so we try to avoid that where possible and keep point manipulation
  ;; between registers.
! ; FIXME many of these should be unnnecessary once combine deals with
  ; (sign_extend (zero_extend)) or (sign_extend (subreg)) BZ 91865.
  
  ;; This is just another way of writing movqipsi/zero_extendqipsi
--- 855,861 ----
  ;; We get large code size bloat when a PSImode pointer is stored in
  ;; memory, so we try to avoid that where possible and keep point manipulation
  ;; between registers.
! ; FIXME many of these should be unnecessary once combine deals with
  ; (sign_extend (zero_extend)) or (sign_extend (subreg)) BZ 91865.
  
  ;; This is just another way of writing movqipsi/zero_extendqipsi
***************
*** 1057,1063 ****
  ;; accepts counts in registers, it does not work if the count is
  ;; zero, and the actual count in the register has to be one less
  ;; than the required number of iterations.  We could encode a
! ;; seqeunce like this:
  ;;
  ;;   bit #0xf, Rn
  ;;   bz  1f
--- 1057,1063 ----
  ;; accepts counts in registers, it does not work if the count is
  ;; zero, and the actual count in the register has to be one less
  ;; than the required number of iterations.  We could encode a
! ;; sequence like this:
  ;;
  ;;   bit #0xf, Rn
  ;;   bz  1f
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/constants.md gcc-17-20260607/gcc/config/nds32/constants.md
*** gcc-17-20260531/gcc/config/nds32/constants.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/constants.md	Sun Jun  7 22:32:06 2026
***************
*** 1,4 ****
! ;; Constant defintions of Andes NDS32 cpu for GNU compiler
  ;; Copyright (C) 2012-2026 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
--- 1,4 ----
! ;; Constant definitions of Andes NDS32 cpu for GNU compiler
  ;; Copyright (C) 2012-2026 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/constraints.md gcc-17-20260607/gcc/config/nds32/constraints.md
*** gcc-17-20260531/gcc/config/nds32/constraints.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/constraints.md	Sun Jun  7 22:32:06 2026
***************
*** 20,26 ****
  
  ;; Check 16.8.7 Defining Machine-Specific Constraints for detail.
  
! ;; NO contrains can be prefixed with: E F V X g i m n o p r s
  ;; Machine-dependent integer: I J K L M N O P
  ;; Machine-dependent floating: G H
  
--- 20,26 ----
  
  ;; Check 16.8.7 Defining Machine-Specific Constraints for detail.
  
! ;; NO constraints can be prefixed with: E F V X g i m n o p r s
  ;; Machine-dependent integer: I J K L M N O P
  ;; Machine-dependent floating: G H
  
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-cost.cc gcc-17-20260607/gcc/config/nds32/nds32-cost.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-cost.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-cost.cc	Sun Jun  7 22:32:06 2026
*************** nds32_rtx_costs_speed_prefer (rtx x ATTR
*** 215,221 ****
        if (NDS32_EXT_DSP_P ())
  	{
  	  /* We prefer (and (ior) (ior)) than (ior (and) (and)) for
! 	     synthetize pk** and insb instruction.  */
  	  if (code == AND && GET_CODE (op0) == IOR && GET_CODE (op1) == IOR)
  	    return COSTS_N_INSNS (1);
  
--- 215,221 ----
        if (NDS32_EXT_DSP_P ())
  	{
  	  /* We prefer (and (ior) (ior)) than (ior (and) (and)) for
! 	     synthesize pk** and insb instruction.  */
  	  if (code == AND && GET_CODE (op0) == IOR && GET_CODE (op1) == IOR)
  	    return COSTS_N_INSNS (1);
  
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-dspext.md gcc-17-20260607/gcc/config/nds32/nds32-dspext.md
*** gcc-17-20260531/gcc/config/nds32/nds32-dspext.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-dspext.md	Sun Jun  7 22:32:06 2026
***************
*** 1447,1453 ****
    [(set_attr "type"    "dinsb")
     (set_attr "length"  "4")])
  
! ;; Intermedium pattern for synthetize insvsiqi_internal
  ;; v0 = ((v1 & 0xff) << 8)
  (define_insn_and_split "and0xff_s8"
    [(set (match_operand:SI 0 "register_operand" "=r")
--- 1447,1453 ----
    [(set_attr "type"    "dinsb")
     (set_attr "length"  "4")])
  
! ;; Intermedium pattern for synthesize insvsiqi_internal
  ;; v0 = ((v1 & 0xff) << 8)
  (define_insn_and_split "and0xff_s8"
    [(set (match_operand:SI 0 "register_operand" "=r")
***************
*** 4342,4348 ****
    [(set_attr "type"     "dmac")
     (set_attr "length"   "4")])
  
! ;; mada for synthetize smalda
  (define_insn_and_split "mada1"
    [(set (match_operand:SI 0 "register_operand"                          "=r")
  	(plus:SI
--- 4342,4348 ----
    [(set_attr "type"     "dmac")
     (set_attr "length"   "4")])
  
! ;; mada for synthesize smalda
  (define_insn_and_split "mada1"
    [(set (match_operand:SI 0 "register_operand"                          "=r")
  	(plus:SI
***************
*** 4407,4413 ****
    DONE;
  })
  
! ;; sms for synthetize smalds
  (define_insn_and_split "sms1"
    [(set (match_operand:SI 0 "register_operand"                                       "=   r")
  	(minus:SI
--- 4407,4413 ----
    DONE;
  })
  
! ;; sms for synthesize smalds
  (define_insn_and_split "sms1"
    [(set (match_operand:SI 0 "register_operand"                                       "=   r")
  	(minus:SI
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-e8.md gcc-17-20260607/gcc/config/nds32/nds32-e8.md
*** gcc-17-20260531/gcc/config/nds32/nds32-e8.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-e8.md	Sun Jun  7 22:32:06 2026
***************
*** 31,37 ****
  ;; IF - Instruction Fetch
  ;; II - Instruction Issue / Address Generation
  ;; EX - Instruction Execution
! ;; EXD - Psuedo Stage / Load Data Completion
  
  (define_cpu_unit "e8_ii" "nds32_e8_machine")
  (define_cpu_unit "e8_ex" "nds32_e8_machine")
--- 31,37 ----
  ;; IF - Instruction Fetch
  ;; II - Instruction Issue / Address Generation
  ;; EX - Instruction Execution
! ;; EXD - Pseudo Stage / Load Data Completion
  
  (define_cpu_unit "e8_ii" "nds32_e8_machine")
  (define_cpu_unit "e8_ex" "nds32_e8_machine")
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-fp-as-gp.cc gcc-17-20260607/gcc/config/nds32/nds32-fp-as-gp.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-fp-as-gp.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-fp-as-gp.cc	Sun Jun  7 22:32:06 2026
*************** nds32_fp_as_gp_check_available (void)
*** 116,122 ****
         3. Not optimize for size.
         4. Need frame pointer.
         5. If $fp is already required to be saved,
! 	  it means $fp is already choosen by register allocator.
  	  Thus we better not to use it for fp_as_gp optimization.
         6. This function is a vararg function.
  	  DO NOT apply fp_as_gp optimization on this function
--- 116,122 ----
         3. Not optimize for size.
         4. Need frame pointer.
         5. If $fp is already required to be saved,
! 	  it means $fp is already chosen by register allocator.
  	  Thus we better not to use it for fp_as_gp optimization.
         6. This function is a vararg function.
  	  DO NOT apply fp_as_gp optimization on this function
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-intrinsic.cc gcc-17-20260607/gcc/config/nds32/nds32-intrinsic.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-intrinsic.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-intrinsic.cc	Sun Jun  7 22:32:06 2026
*************** nds32_expand_priority_builtin (enum insn
*** 477,483 ****
    rtx op1 = nds32_read_argument (exp, 1);
  
    /* set_int_priority intrinsic function that two arguments are immediate,
!      so check whether auguments are immedite.  */
  
    if (!nds32_check_constant_argument (icode, 0, op0, name))
      return NULL_RTX;
--- 477,483 ----
    rtx op1 = nds32_read_argument (exp, 1);
  
    /* set_int_priority intrinsic function that two arguments are immediate,
!      so check whether arguments are immediate.  */
  
    if (!nds32_check_constant_argument (icode, 0, op0, name))
      return NULL_RTX;
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-isr.cc gcc-17-20260607/gcc/config/nds32/nds32-isr.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-isr.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-isr.cc	Sun Jun  7 22:32:06 2026
*************** nds32_emit_isr_vector_section (int vecto
*** 464,470 ****
  	 For pushing GPRs, there are four variations for
  	 16-byte vector content and we have to handle each combination.
  	 For preparing software vid, note that the vid need to
! 	 be substracted vector_number_offset.  */
        if (TARGET_REDUCED_REGS)
  	{
  	  if (nds32_isr_vectors[vector_id].save_reg == NDS32_SAVE_ALL)
--- 464,470 ----
  	 For pushing GPRs, there are four variations for
  	 16-byte vector content and we have to handle each combination.
  	 For preparing software vid, note that the vid need to
! 	 be subtracted vector_number_offset.  */
        if (TARGET_REDUCED_REGS)
  	{
  	  if (nds32_isr_vectors[vector_id].save_reg == NDS32_SAVE_ALL)
*************** void nds32_asm_file_end_for_isr (void)
*** 899,905 ****
        if (nds32_isr_vectors[i].category == NDS32_ISR_INTERRUPT
  	  || nds32_isr_vectors[i].category == NDS32_ISR_EXCEPTION)
  	{
! 	  /* Found one vector which is interupt or exception.
  	     Output its jmptbl and vector section content.  */
  	  fprintf (asm_out_file, "\t! interrupt/exception vector %02d\n", i);
  	  fprintf (asm_out_file, "\t! security level: %d\n",
--- 899,905 ----
        if (nds32_isr_vectors[i].category == NDS32_ISR_INTERRUPT
  	  || nds32_isr_vectors[i].category == NDS32_ISR_EXCEPTION)
  	{
! 	  /* Found one vector which is interrupt or exception.
  	     Output its jmptbl and vector section content.  */
  	  fprintf (asm_out_file, "\t! interrupt/exception vector %02d\n", i);
  	  fprintf (asm_out_file, "\t! security level: %d\n",
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-md-auxiliary.cc gcc-17-20260607/gcc/config/nds32/nds32-md-auxiliary.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-md-auxiliary.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-md-auxiliary.cc	Sun Jun  7 22:32:06 2026
*************** output_cond_branch (int code, const char
*** 138,144 ****
      {
        /* This is special case for beqs38 and bnes38,
  	 second operand 2 can't be $r5 and it's almost meanless,
! 	 however it may occur after copy propgation.  */
        if (code == EQ)
  	{
  	  /* $r5 == $r5 always taken! */
--- 138,144 ----
      {
        /* This is special case for beqs38 and bnes38,
  	 second operand 2 can't be $r5 and it's almost meanless,
! 	 however it may occur after copy propagation.  */
        if (code == EQ)
  	{
  	  /* $r5 == $r5 always taken! */
*************** nds32_expand_cbranch (rtx *operands)
*** 416,424 ****
  
  	  /* We want to plus 1 into the integer value
  	     of operands[2] to create 'slt' instruction.
! 	     This caculation is performed on the host machine,
  	     which may be 64-bit integer.
! 	     So the meaning of caculation result may be
  	     different from the 32-bit nds32 target.
  
  	     For example:
--- 416,424 ----
  
  	  /* We want to plus 1 into the integer value
  	     of operands[2] to create 'slt' instruction.
! 	     This calculation is performed on the host machine,
  	     which may be 64-bit integer.
! 	     So the meaning of calculation result may be
  	     different from the 32-bit nds32 target.
  
  	     For example:
*************** nds32_expand_float_cstore (rtx *operands
*** 955,965 ****
         reg_R = (reg_A <= reg_B) --> fcmple reg_R, reg_A, reg_B
         reg_R = (reg_A == reg_B) --> fcmpeq reg_R, reg_A, reg_B
  
!      ORDERED: reverse condition and using xor insturction to achieve 'ORDERED'.
         reg_R = (reg_A != reg_B) --> fcmpun reg_R, reg_A, reg_B
  				       xor reg_R, reg_R, const1_rtx
  
!      NE: reverse condition and using xor insturction to achieve 'NE'.
         reg_R = (reg_A != reg_B) --> fcmpeq reg_R, reg_A, reg_B
  				       xor reg_R, reg_R, const1_rtx */
    switch (code)
--- 955,965 ----
         reg_R = (reg_A <= reg_B) --> fcmple reg_R, reg_A, reg_B
         reg_R = (reg_A == reg_B) --> fcmpeq reg_R, reg_A, reg_B
  
!      ORDERED: reverse condition and using xor instruction to achieve 'ORDERED'.
         reg_R = (reg_A != reg_B) --> fcmpun reg_R, reg_A, reg_B
  				       xor reg_R, reg_R, const1_rtx
  
!      NE: reverse condition and using xor instruction to achieve 'NE'.
         reg_R = (reg_A != reg_B) --> fcmpeq reg_R, reg_A, reg_B
  				       xor reg_R, reg_R, const1_rtx */
    switch (code)
*************** nds32_expand_movcc (rtx *operands)
*** 1088,1094 ****
        else
  	{
  	  /* This emit_insn will create corresponding 'slt/slts'
! 	      insturction.  */
  	  if (new_code == LT)
  	    emit_insn (gen_slts_compare (tmp, cmp_op0, cmp_op1));
  	  else if (new_code == LTU)
--- 1088,1094 ----
        else
  	{
  	  /* This emit_insn will create corresponding 'slt/slts'
! 	      instruction.  */
  	  if (new_code == LT)
  	    emit_insn (gen_slts_compare (tmp, cmp_op0, cmp_op1));
  	  else if (new_code == LTU)
*************** nds32_output_stack_pop (rtx par_rtx ATTR
*** 2169,2175 ****
  	 We have to consider alloca issue as well.
  	 If the function does call alloca(), the stack pointer is not fixed.
  	 In that case, we cannot use 'pop25 Re,imm8u' directly.
! 	 We have to caculate stack pointer from frame pointer
  	 and then use 'pop25 Re,0'.  */
        sp_adjust = cfun->machine->local_size
  		  + cfun->machine->out_args_size
--- 2169,2175 ----
  	 We have to consider alloca issue as well.
  	 If the function does call alloca(), the stack pointer is not fixed.
  	 In that case, we cannot use 'pop25 Re,imm8u' directly.
! 	 We have to calculate stack pointer from frame pointer
  	 and then use 'pop25 Re,0'.  */
        sp_adjust = cfun->machine->local_size
  		  + cfun->machine->out_args_size
*************** nds32_output_stack_pop (rtx par_rtx ATTR
*** 2184,2190 ****
  	  if (cfun->machine->callee_saved_first_fpr_regno != SP_REGNUM)
  	    {
  	      /* If has fpr need to restore, the $sp on callee saved fpr
! 		 position, so we need to consider gpr pading bytes and
  		 callee saved fpr size.  */
  	      sp_adjust = cfun->machine->callee_saved_area_gpr_padding_bytes
  			  + cfun->machine->callee_saved_fpr_regs_size;
--- 2184,2190 ----
  	  if (cfun->machine->callee_saved_first_fpr_regno != SP_REGNUM)
  	    {
  	      /* If has fpr need to restore, the $sp on callee saved fpr
! 		 position, so we need to consider gpr padding bytes and
  		 callee saved fpr size.  */
  	      sp_adjust = cfun->machine->callee_saved_area_gpr_padding_bytes
  			  + cfun->machine->callee_saved_fpr_regs_size;
*************** nds32_output_return (void)
*** 2269,2275 ****
       We have to consider alloca issue as well.
       If the function does call alloca(), the stack pointer is not fixed.
       In that case, we cannot use 'pop25 Re,imm8u' directly.
!      We have to caculate stack pointer from frame pointer
       and then use 'pop25 Re,0'.  */
    sp_adjust = cfun->machine->local_size
      + cfun->machine->out_args_size
--- 2269,2275 ----
       We have to consider alloca issue as well.
       If the function does call alloca(), the stack pointer is not fixed.
       In that case, we cannot use 'pop25 Re,imm8u' directly.
!      We have to calculate stack pointer from frame pointer
       and then use 'pop25 Re,0'.  */
    sp_adjust = cfun->machine->local_size
      + cfun->machine->out_args_size
*************** nds32_split_sms (rtx out, rtx in0, rtx i
*** 3132,3138 ****
    emit_insn (gen_subsi3 (out, result0, result1));
  }
  
! /* Spilt a doubleword instrucion to two single word instructions.  */
  void
  nds32_spilt_doubleword (rtx *operands, bool load_p)
  {
--- 3132,3138 ----
    emit_insn (gen_subsi3 (out, result0, result1));
  }
  
! /* Spilt a doubleword instruction to two single word instructions.  */
  void
  nds32_spilt_doubleword (rtx *operands, bool load_p)
  {
*************** nds32_legitimize_tls_address (rtx x)
*** 3689,3695 ****
  
  	pat = gen_rtx_CONST (SImode, pat);
  	reg0 = gen_rtx_REG (Pmode, 0);
! 	/* If we can confirm all clobber reigsters, it doesn't have to use call
  	   instruction.  */
  	insns = emit_call_insn (gen_tls_desc (pat, GEN_INT (relax_group_id)));
  	use_reg (&CALL_INSN_FUNCTION_USAGE (insns), pic_offset_table_rtx);
--- 3689,3695 ----
  
  	pat = gen_rtx_CONST (SImode, pat);
  	reg0 = gen_rtx_REG (Pmode, 0);
! 	/* If we can confirm all clobber registers, it doesn't have to use call
  	   instruction.  */
  	insns = emit_call_insn (gen_tls_desc (pat, GEN_INT (relax_group_id)));
  	use_reg (&CALL_INSN_FUNCTION_USAGE (insns), pic_offset_table_rtx);
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-memory-manipulation.cc gcc-17-20260607/gcc/config/nds32/nds32-memory-manipulation.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-memory-manipulation.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-memory-manipulation.cc	Sun Jun  7 22:32:06 2026
*************** nds32_expand_cpymemsi_unroll (rtx dstmem
*** 404,410 ****
    bool align_to_4_bytes = (INTVAL (alignment) & 3) == 0;
    bool align_to_2_bytes = (INTVAL (alignment) & 1) == 0;
  
!   /* Because reduced-set regsiters has few registers
       (r0~r5, r6~10, r15, r28~r31, where 'r15' and 'r28~r31'
        cannot be used for register allocation),
       using 8 registers (32 bytes) for moving memory block
--- 404,410 ----
    bool align_to_4_bytes = (INTVAL (alignment) & 3) == 0;
    bool align_to_2_bytes = (INTVAL (alignment) & 1) == 0;
  
!   /* Because reduced-set registers has few registers
       (r0~r5, r6~10, r15, r28~r31, where 'r15' and 'r28~r31'
        cannot be used for register allocation),
       using 8 registers (32 bytes) for moving memory block
*************** nds32_expand_load_multiple (int base_reg
*** 1080,1086 ****
    rtx new_addr, mem, reg;
  
    /* Generate a unaligned load to prevent load instruction pull out from
!      parallel, and then it will generate lwi, and lose unaligned acces */
    if (count == 1)
      {
        reg = gen_rtx_REG (SImode, base_regno);
--- 1080,1086 ----
    rtx new_addr, mem, reg;
  
    /* Generate a unaligned load to prevent load instruction pull out from
!      parallel, and then it will generate lwi, and lose unaligned access */
    if (count == 1)
      {
        reg = gen_rtx_REG (SImode, base_regno);
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-multiple.md gcc-17-20260607/gcc/config/nds32/nds32-multiple.md
*** gcc-17-20260531/gcc/config/nds32/nds32-multiple.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-multiple.md	Sun Jun  7 22:32:06 2026
***************
*** 33,39 ****
  {
    int maximum;
  
!   /* Because reduced-set regsiters has few registers
       (r0~r5, r6~10, r15, r28~r31, where 'r15' and 'r28~r31' cannot
       be used for register allocation),
       using 8 registers for load_multiple may easily consume all of them.
--- 33,39 ----
  {
    int maximum;
  
!   /* Because reduced-set registers has few registers
       (r0~r5, r6~10, r15, r28~r31, where 'r15' and 'r28~r31' cannot
       be used for register allocation),
       using 8 registers for load_multiple may easily consume all of them.
***************
*** 1882,1888 ****
  {
    int maximum;
  
!   /* Because reduced-set regsiters has few registers
       (r0~r5, r6~10, r15, r28~r31, where 'r15' and 'r28~r31' cannot
       be used for register allocation),
       using 8 registers for store_multiple may easily consume all of them.
--- 1882,1888 ----
  {
    int maximum;
  
!   /* Because reduced-set registers has few registers
       (r0~r5, r6~10, r15, r28~r31, where 'r15' and 'r28~r31' cannot
       be used for register allocation),
       using 8 registers for store_multiple may easily consume all of them.
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-n7.md gcc-17-20260607/gcc/config/nds32/nds32-n7.md
*** gcc-17-20260531/gcc/config/nds32/nds32-n7.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-n7.md	Sun Jun  7 22:32:06 2026
***************
*** 36,42 ****
  ;;   Register File Access
  ;;   Instruction Execution
  ;;   Interrupt Handling
! ;; EXD - Psuedo Stage
  ;;   Load Data Completion
  
  (define_cpu_unit "n7_ii" "nds32_n7_machine")
--- 36,42 ----
  ;;   Register File Access
  ;;   Instruction Execution
  ;;   Interrupt Handling
! ;; EXD - Pseudo Stage
  ;;   Load Data Completion
  
  (define_cpu_unit "n7_ii" "nds32_n7_machine")
***************
*** 229,235 ****
  ;;     Require operands at II.
  ;;   MOVD44_E
  ;;     A double-word move instruction needs two micro-operations because the
! ;;     reigster ports is 2R1W. The first micro-operation writes an even number
  ;;     register, and the second micro-operation writes an odd number register.
  ;;     Each input operand is required at II for each micro-operation. The letter
  ;;     'E' stands for even.
--- 229,235 ----
  ;;     Require operands at II.
  ;;   MOVD44_E
  ;;     A double-word move instruction needs two micro-operations because the
! ;;     register ports is 2R1W. The first micro-operation writes an even number
  ;;     register, and the second micro-operation writes an odd number register.
  ;;     Each input operand is required at II for each micro-operation. The letter
  ;;     'E' stands for even.
***************
*** 239,245 ****
  ;;     and Rb at II. The second micro-options does the accumulation, which
  ;;     requires the operand Rt at II.
  ;;   ADDR_IN_MOP(N)
! ;;     Because the reigster port is 2R1W, some load/store instructions are
  ;;     separated into many micro-operations. N denotes the address input is
  ;;     required by the N-th micro-operation. Such operand is required at II.
  ;;   ST_bi
--- 239,245 ----
  ;;     and Rb at II. The second micro-options does the accumulation, which
  ;;     requires the operand Rt at II.
  ;;   ADDR_IN_MOP(N)
! ;;     Because the register port is 2R1W, some load/store instructions are
  ;;     separated into many micro-operations. N denotes the address input is
  ;;     required by the N-th micro-operation. Such operand is required at II.
  ;;   ST_bi
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-n8.md gcc-17-20260607/gcc/config/nds32/nds32-n8.md
*** gcc-17-20260531/gcc/config/nds32/nds32-n8.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-n8.md	Sun Jun  7 22:32:06 2026
***************
*** 31,37 ****
  ;; IF - Instruction Fetch
  ;; II - Instruction Issue / Address Generation
  ;; EX - Instruction Execution
! ;; EXD - Psuedo Stage / Load Data Completion
  
  (define_cpu_unit "n8_ii" "nds32_n8_machine")
  (define_cpu_unit "n8_ex" "nds32_n8_machine")
--- 31,37 ----
  ;; IF - Instruction Fetch
  ;; II - Instruction Issue / Address Generation
  ;; EX - Instruction Execution
! ;; EXD - Pseudo Stage / Load Data Completion
  
  (define_cpu_unit "n8_ii" "nds32_n8_machine")
  (define_cpu_unit "n8_ex" "nds32_n8_machine")
***************
*** 233,239 ****
  ;;   MOVD44_O
  ;;     A double-word move instruction needs to write registers twice. Because
  ;;     the register port is 2R1W, two micro-operations are required. The even
! ;;     number reigster is updated by the first one, and the odd number register
  ;;     is updated by the second one. Each of the results is ready at EX.
  ;;     The letter 'O' stands for odd.
  ;;   DIV_Rs
--- 233,239 ----
  ;;   MOVD44_O
  ;;     A double-word move instruction needs to write registers twice. Because
  ;;     the register port is 2R1W, two micro-operations are required. The even
! ;;     number register is updated by the first one, and the odd number register
  ;;     is updated by the second one. Each of the results is ready at EX.
  ;;     The letter 'O' stands for odd.
  ;;   DIV_Rs
***************
*** 254,260 ****
  ;;     and Rb at EX. The second micro-options does the accumulation, which
  ;;     requires the operand Rt at EX.
  ;;   ADDR_IN_MOP(N)
! ;;     Because the reigster port is 2R1W, some load/store instructions are
  ;;     separated into many micro-operations. N denotes the address input is
  ;;     required by the N-th micro-operation. Such operand is required at II.
  ;;   ST_bi
--- 254,260 ----
  ;;     and Rb at EX. The second micro-options does the accumulation, which
  ;;     requires the operand Rt at EX.
  ;;   ADDR_IN_MOP(N)
! ;;     Because the register port is 2R1W, some load/store instructions are
  ;;     separated into many micro-operations. N denotes the address input is
  ;;     required by the N-th micro-operation. Such operand is required at II.
  ;;   ST_bi
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-n9-2r1w.md gcc-17-20260607/gcc/config/nds32/nds32-n9-2r1w.md
*** gcc-17-20260531/gcc/config/nds32/nds32-n9-2r1w.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-n9-2r1w.md	Sun Jun  7 22:32:06 2026
***************
*** 271,277 ****
  ;;     There are N micro-operations within an instruction that loads multiple
  ;;     words. The result produced by the M-th micro-operation is sent to
  ;;     consumers. The result is ready at MM.  If the base register should be
! ;;     updated, an extra micro-operation is apppended to the end of the
  ;;     sequence, and the result is ready at EX.
  ;;   MUL, MAC
  ;;     Compute data in the multiply-adder and produce the data. The result
--- 271,277 ----
  ;;     There are N micro-operations within an instruction that loads multiple
  ;;     words. The result produced by the M-th micro-operation is sent to
  ;;     consumers. The result is ready at MM.  If the base register should be
! ;;     updated, an extra micro-operation is appended to the end of the
  ;;     sequence, and the result is ready at EX.
  ;;   MUL, MAC
  ;;     Compute data in the multiply-adder and produce the data. The result
***************
*** 289,295 ****
  ;;     micro-operation, and there are some latencies if data dependency occurs.
  ;;   MOVD44_E
  ;;     A double-word move instruction needs two micro-operations because the
! ;;     reigster ports is 2R1W. The first micro-operation writes an even number
  ;;     register, and the second micro-operation writes an odd number register.
  ;;     Each input operand is required at EX for each micro-operation. MOVD44_E
  ;;     stands for the first micro-operation.
--- 289,295 ----
  ;;     micro-operation, and there are some latencies if data dependency occurs.
  ;;   MOVD44_E
  ;;     A double-word move instruction needs two micro-operations because the
! ;;     register ports is 2R1W. The first micro-operation writes an even number
  ;;     register, and the second micro-operation writes an odd number register.
  ;;     Each input operand is required at EX for each micro-operation. MOVD44_E
  ;;     stands for the first micro-operation.
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-pipelines-auxiliary.cc gcc-17-20260607/gcc/config/nds32/nds32-pipelines-auxiliary.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-pipelines-auxiliary.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-pipelines-auxiliary.cc	Sun Jun  7 22:32:06 2026
*************** extract_nth_access_reg (rtx_insn *insn,
*** 288,294 ****
      }
  }
  
! /* Determine if the latency is occured when the consumer PBSADA_INSN uses the
     value of DEF_REG in its Ra or Rb fields.  */
  bool
  pbsada_insn_ra_rb_dep_reg_p (rtx pbsada_insn, rtx def_reg)
--- 288,294 ----
      }
  }
  
! /* Determine if the latency is occurred when the consumer PBSADA_INSN uses the
     value of DEF_REG in its Ra or Rb fields.  */
  bool
  pbsada_insn_ra_rb_dep_reg_p (rtx pbsada_insn, rtx def_reg)
*************** pbsada_insn_ra_rb_dep_reg_p (rtx pbsada_
*** 306,312 ****
    return false;
  }
  
! /* Determine if the latency is occured when the consumer PBSADA_INSN uses the
     value of DEF_REG in its Rt field.  */
  bool
  pbsada_insn_rt_dep_reg_p (rtx pbsada_insn, rtx def_reg)
--- 306,312 ----
    return false;
  }
  
! /* Determine if the latency is occurred when the consumer PBSADA_INSN uses the
     value of DEF_REG in its Rt field.  */
  bool
  pbsada_insn_rt_dep_reg_p (rtx pbsada_insn, rtx def_reg)
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-predicates.cc gcc-17-20260607/gcc/config/nds32/nds32-predicates.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-predicates.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-predicates.cc	Sun Jun  7 22:32:06 2026
*************** nds32_can_use_bset_p (HOST_WIDE_INT ival
*** 379,385 ****
    int one_bit_count;
    unsigned HOST_WIDE_INT mask = GET_MODE_MASK (SImode);
  
!   /* Caculate the number of 1-bit of ival, if there is only one 1-bit,
       it is ok to perform 'bset' operation.  */
  
    one_bit_count = popcount_hwi ((unsigned HOST_WIDE_INT) (ival) & mask);
--- 379,385 ----
    int one_bit_count;
    unsigned HOST_WIDE_INT mask = GET_MODE_MASK (SImode);
  
!   /* Calculate the number of 1-bit of ival, if there is only one 1-bit,
       it is ok to perform 'bset' operation.  */
  
    one_bit_count = popcount_hwi ((unsigned HOST_WIDE_INT) (ival) & mask);
*************** nds32_can_use_btgl_p (HOST_WIDE_INT ival
*** 395,401 ****
    int one_bit_count;
    unsigned HOST_WIDE_INT mask = GET_MODE_MASK (SImode);
  
!   /* Caculate the number of 1-bit of ival, if there is only one 1-bit,
       it is ok to perform 'btgl' operation.  */
  
    one_bit_count = popcount_hwi ((unsigned HOST_WIDE_INT) (ival) & mask);
--- 395,401 ----
    int one_bit_count;
    unsigned HOST_WIDE_INT mask = GET_MODE_MASK (SImode);
  
!   /* Calculate the number of 1-bit of ival, if there is only one 1-bit,
       it is ok to perform 'btgl' operation.  */
  
    one_bit_count = popcount_hwi ((unsigned HOST_WIDE_INT) (ival) & mask);
*************** nds32_symbol_load_store_p (rtx_insn *ins
*** 452,458 ****
    return false;
  }
  
! /* Vaild memory operand for floating-point loads and stores */
  bool
  nds32_float_mem_operand_p (rtx op)
  {
--- 452,458 ----
    return false;
  }
  
! /* Valid memory operand for floating-point loads and stores */
  bool
  nds32_float_mem_operand_p (rtx op)
  {
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-protos.h gcc-17-20260607/gcc/config/nds32/nds32-protos.h
*** gcc-17-20260531/gcc/config/nds32/nds32-protos.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-protos.h	Sun Jun  7 22:32:06 2026
*************** extern bool symbolic_reference_mentioned
*** 223,233 ****
  
  extern int nds32_cond_move_p (rtx);
  
! /* Auxiliary functions to identify 16 bit addresing mode.  */
  
  extern enum nds32_16bit_address_type nds32_mem_format (rtx);
  
! /* Auxiliary functions to identify floating-point addresing mode.  */
  
  extern bool nds32_float_mem_operand_p (rtx);
  
--- 223,233 ----
  
  extern int nds32_cond_move_p (rtx);
  
! /* Auxiliary functions to identify 16 bit addressing mode.  */
  
  extern enum nds32_16bit_address_type nds32_mem_format (rtx);
  
! /* Auxiliary functions to identify floating-point addressing mode.  */
  
  extern bool nds32_float_mem_operand_p (rtx);
  
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-relax-opt.cc gcc-17-20260607/gcc/config/nds32/nds32-relax-opt.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-relax-opt.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-relax-opt.cc	Sun Jun  7 22:32:06 2026
*************** nds32_plus_reg_load_store_p (rtx_insn *i
*** 193,199 ****
    return false;
  }
  
! /* Return true if x is const and the referance is ict symbol.  */
  static bool
  nds32_ict_const_p (rtx x)
  {
--- 193,199 ----
    return false;
  }
  
! /* Return true if x is const and the reference is ict symbol.  */
  static bool
  nds32_ict_const_p (rtx x)
  {
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32-utils.cc gcc-17-20260607/gcc/config/nds32/nds32-utils.cc
*** gcc-17-20260531/gcc/config/nds32/nds32-utils.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32-utils.cc	Sun Jun  7 22:32:06 2026
*************** extract_offset_rtx (rtx_insn *insn)
*** 369,375 ****
    rtx plus_rtx;
    rtx offset_rtx;
  
!   /* Find the MEM rtx.  The multiple load/store insns doens't have
       the offset field so we can return NULL_RTX here.  */
    switch (get_attr_type (insn))
      {
--- 369,375 ----
    rtx plus_rtx;
    rtx offset_rtx;
  
!   /* Find the MEM rtx.  The multiple load/store insns doesn't have
       the offset field so we can return NULL_RTX here.  */
    switch (get_attr_type (insn))
      {
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32.cc gcc-17-20260607/gcc/config/nds32/nds32.cc
*** gcc-17-20260531/gcc/config/nds32/nds32.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32.cc	Sun Jun  7 22:32:06 2026
***************
*** 65,71 ****
  
       PART 3: Implement target hook stuff definitions.
  
!      PART 4: Implemet extern function definitions,
               the prototype is in nds32-protos.h.
  
       PART 5: Initialize target hook structure and definitions.  */
--- 65,71 ----
  
       PART 3: Implement target hook stuff definitions.
  
!      PART 4: Implement extern function definitions,
               the prototype is in nds32-protos.h.
  
       PART 5: Initialize target hook structure and definitions.  */
*************** static const char * const nds32_intrinsi
*** 237,243 ****
    "$ITB"
  };
  
! /* Define instrinsic cctl names.  */
  static const char * const nds32_cctl_names[] =
  {
    "L1D_VA_FILLCK",
--- 237,243 ----
    "$ITB"
  };
  
! /* Define intrinsic cctl names.  */
  static const char * const nds32_cctl_names[] =
  {
    "L1D_VA_FILLCK",
*************** nds32_compute_stack_frame (void)
*** 452,458 ****
    cfun->machine->fp_size = (df_regs_ever_live_p (FP_REGNUM)) ? 4 : 0;
  
    /* If $gp value is required to be saved on stack, it needs 4 bytes space.
!      Check whether we are using PIC code genration.  */
    cfun->machine->gp_size =
      (flag_pic && df_regs_ever_live_p (PIC_OFFSET_TABLE_REGNUM)) ? 4 : 0;
  
--- 452,458 ----
    cfun->machine->fp_size = (df_regs_ever_live_p (FP_REGNUM)) ? 4 : 0;
  
    /* If $gp value is required to be saved on stack, it needs 4 bytes space.
!      Check whether we are using PIC code generation.  */
    cfun->machine->gp_size =
      (flag_pic && df_regs_ever_live_p (PIC_OFFSET_TABLE_REGNUM)) ? 4 : 0;
  
*************** nds32_compute_stack_frame (void)
*** 500,507 ****
  	      if (cfun->machine->callee_saved_first_fpr_regno == SP_REGNUM)
  		{
  		  /* Make first callee-saved number is even,
! 		     bacause we use doubleword access, and this way
! 		     promise 8-byte alignemt.  */
  		  if (!NDS32_FPR_REGNO_OK_FOR_DOUBLE (r))
  		    cfun->machine->callee_saved_first_fpr_regno = r - 1;
  		  else
--- 500,507 ----
  	      if (cfun->machine->callee_saved_first_fpr_regno == SP_REGNUM)
  		{
  		  /* Make first callee-saved number is even,
! 		     because we use doubleword access, and this way
! 		     promise 8-byte alignment.  */
  		  if (!NDS32_FPR_REGNO_OK_FOR_DOUBLE (r))
  		    cfun->machine->callee_saved_first_fpr_regno = r - 1;
  		  else
*************** nds32_emit_stack_pop_multiple (unsigned
*** 903,909 ****
  		(set (reg:SI SP_REGNUM)
  		     (plus (reg:SI SP_REGNUM) (const_int 32)))]) */
  
!   /* Calculate the number of registers that will be poped.  */
    extra_count = 0;
    if (save_fp_p)
      extra_count++;
--- 903,909 ----
  		(set (reg:SI SP_REGNUM)
  		     (plus (reg:SI SP_REGNUM) (const_int 32)))]) */
  
!   /* Calculate the number of registers that will be popped.  */
    extra_count = 0;
    if (save_fp_p)
      extra_count++;
*************** nds32_emit_stack_v3pop (unsigned Rb,
*** 1177,1184 ****
  		(set (reg:SI SP_REGNUM)
  		     (plus (reg:SI SP_REGNUM) (const_int 32+imm8u)))]) */
  
!   /* Calculate the number of registers that will be poped.
!      Since $fp, $gp, and $lp is always poped with v3pop instruction,
       we need to count these three registers.
       Under v3push, Rb is $r6, while Re is $r6, $r8, $r10, or $r14.
       So there is no need to worry about Rb=Re=SP_REGNUM case.  */
--- 1177,1184 ----
  		(set (reg:SI SP_REGNUM)
  		     (plus (reg:SI SP_REGNUM) (const_int 32+imm8u)))]) */
  
!   /* Calculate the number of registers that will be popped.
!      Since $fp, $gp, and $lp is always popped with v3pop instruction,
       we need to count these three registers.
       Under v3push, Rb is $r6, while Re is $r6, $r8, $r10, or $r14.
       So there is no need to worry about Rb=Re=SP_REGNUM case.  */
*************** nds32_can_change_mode_class (machine_mod
*** 1768,1774 ****
  			     machine_mode to,
  			     reg_class_t rclass)
  {
!   /* Don't spill double-precision register to two singal-precision
       registers  */
    if ((TARGET_FPU_SINGLE || TARGET_FPU_DOUBLE)
         && GET_MODE_SIZE (from) != GET_MODE_SIZE (to))
--- 1768,1774 ----
  			     machine_mode to,
  			     reg_class_t rclass)
  {
!   /* Don't spill double-precision register to two single-precision
       registers  */
    if ((TARGET_FPU_SINGLE || TARGET_FPU_DOUBLE)
         && GET_MODE_SIZE (from) != GET_MODE_SIZE (to))
*************** nds32_can_change_mode_class (machine_mod
*** 1795,1801 ****
         1. previous hard frame pointer
         2. return address
         3. callee-saved registers
!        4. <padding bytes> (we will calculte in nds32_compute_stack_frame()
  			   and save it at
  			   cfun->machine->callee_saved_area_padding_bytes)
  
--- 1795,1801 ----
         1. previous hard frame pointer
         2. return address
         3. callee-saved registers
!        4. <padding bytes> (we will calculate in nds32_compute_stack_frame()
  			   and save it at
  			   cfun->machine->callee_saved_area_padding_bytes)
  
*************** nds32_can_change_mode_class (machine_mod
*** 1813,1819 ****
     We 'wrap' these blocks together with
     hard frame pointer ($r28) and stack pointer ($r31).
     By applying the basic frame/stack/argument pointers concept,
!    the layout of a stack frame shoule be like this:
  
  			    |    |
         old stack pointer ->  ----
--- 1813,1819 ----
     We 'wrap' these blocks together with
     hard frame pointer ($r28) and stack pointer ($r31).
     By applying the basic frame/stack/argument pointers concept,
!    the layout of a stack frame should be like this:
  
  			    |    |
         old stack pointer ->  ----
*************** nds32_arg_partial_bytes (cumulative_args
*** 1980,1986 ****
    if (TARGET_HARD_FLOAT)
      return 0;
  
!   /* If we have already runned out of argument registers, return zero
       so that the argument will be entirely pushed on the stack.  */
    if (NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG (cum->gpr_offset, arg.mode, arg.type)
        >= NDS32_GPR_ARG_FIRST_REGNUM + NDS32_MAX_GPR_REGS_FOR_ARGS)
--- 1980,1986 ----
    if (TARGET_HARD_FLOAT)
      return 0;
  
!   /* If we have already run out of argument registers, return zero
       so that the argument will be entirely pushed on the stack.  */
    if (NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG (cum->gpr_offset, arg.mode, arg.type)
        >= NDS32_GPR_ARG_FIRST_REGNUM + NDS32_MAX_GPR_REGS_FOR_ARGS)
*************** nds32_arg_partial_bytes (cumulative_args
*** 1997,2003 ****
  					     arg.mode, arg.type)
  	 - NDS32_GPR_ARG_FIRST_REGNUM);
  
!   /* Note that we have to return the nubmer of bytes, not registers count.  */
    if (needed_reg_count > remaining_reg_count)
      return remaining_reg_count * UNITS_PER_WORD;
  
--- 1997,2003 ----
  					     arg.mode, arg.type)
  	 - NDS32_GPR_ARG_FIRST_REGNUM);
  
!   /* Note that we have to return the number of bytes, not registers count.  */
    if (needed_reg_count > remaining_reg_count)
      return remaining_reg_count * UNITS_PER_WORD;
  
*************** nds32_function_ok_for_sibcall (tree decl
*** 2321,2327 ****
  	because the stack layout may be a mess.
       4. We don't want to apply sibling call optimization for indirect
  	sibcall because the pop behavior in epilogue may pollute the
! 	content of caller-saved regsiter when the register is used for
  	indirect sibcall.
       5. In pic mode, it may use some registers for PLT call.  */
    return (!TARGET_V3PUSH
--- 2321,2327 ----
  	because the stack layout may be a mess.
       4. We don't want to apply sibling call optimization for indirect
  	sibcall because the pop behavior in epilogue may pollute the
! 	content of caller-saved register when the register is used for
  	indirect sibcall.
       5. In pic mode, it may use some registers for PLT call.  */
    return (!TARGET_V3PUSH
*************** nds32_register_move_cost (machine_mode m
*** 3014,3020 ****
  			  reg_class_t from,
  			  reg_class_t to)
  {
!   /* In garywolf cpu, FPR to GPR is chaper than other cpu.  */
    if (TARGET_PIPELINE_GRAYWOLF)
      {
        if (GET_MODE_SIZE (mode) == 8)
--- 3014,3020 ----
  			  reg_class_t from,
  			  reg_class_t to)
  {
!   /* In graywolf cpu, FPR to GPR is cheaper than other cpu.  */
    if (TARGET_PIPELINE_GRAYWOLF)
      {
        if (GET_MODE_SIZE (mode) == 8)
*************** nds32_print_operand (FILE *stream, rtx x
*** 3467,3473 ****
        else
  	{
  	  /* If user applies normal way with __NDS32_REG_XXX__ enum data,
! 	     we can print out register name.  Remember to substract 1024.  */
  	  fprintf (stream, "%s",
  			   nds32_intrinsic_register_names[op_value - 1024]);
  	}
--- 3467,3473 ----
        else
  	{
  	  /* If user applies normal way with __NDS32_REG_XXX__ enum data,
! 	     we can print out register name.  Remember to subtract 1024.  */
  	  fprintf (stream, "%s",
  			   nds32_intrinsic_register_names[op_value - 1024]);
  	}
*************** nds32_merge_decl_attributes (tree olddec
*** 3920,3926 ****
    combined_attrs = merge_attributes (DECL_ATTRIBUTES (olddecl),
  				     DECL_ATTRIBUTES (newdecl));
  
!   /* Since newdecl is acutally a duplicate of olddecl,
       we can take olddecl for some operations.  */
    if (TREE_CODE (olddecl) == FUNCTION_DECL)
      {
--- 3920,3926 ----
    combined_attrs = merge_attributes (DECL_ATTRIBUTES (olddecl),
  				     DECL_ATTRIBUTES (newdecl));
  
!   /* Since newdecl is actually a duplicate of olddecl,
       we can take olddecl for some operations.  */
    if (TREE_CODE (olddecl) == FUNCTION_DECL)
      {
*************** nds32_insert_attributes (tree decl, tree
*** 3983,3989 ****
  
        /* The following code may use attribute arguments.  If there is no
  	 argument from source code, it will cause segmentation fault.
! 	 Therefore, return dircetly and report error message later.  */
        if ((intr && TREE_VALUE (intr) == NULL)
  	  || (excp && TREE_VALUE (excp) == NULL)
  	  || (reset && TREE_VALUE (reset) == NULL))
--- 3983,3989 ----
  
        /* The following code may use attribute arguments.  If there is no
  	 argument from source code, it will cause segmentation fault.
! 	 Therefore, return directly and report error message later.  */
        if ((intr && TREE_VALUE (intr) == NULL)
  	  || (excp && TREE_VALUE (excp) == NULL)
  	  || (reset && TREE_VALUE (reset) == NULL))
*************** nds32_init_libfuncs (void)
*** 4245,4251 ****
  
  /* ------------------------------------------------------------------------ */
  
! /* PART 4: Implemet extern function definitions,
             the prototype is in nds32-protos.h.  */
  
  /* Run-time Target Specification.  */
--- 4245,4251 ----
  
  /* ------------------------------------------------------------------------ */
  
! /* PART 4: Implement extern function definitions,
             the prototype is in nds32-protos.h.  */
  
  /* Run-time Target Specification.  */
*************** nds32_expand_epilogue_v3pop (bool sibcal
*** 5217,5223 ****
    /* We have to consider alloca issue as well.
       If the function does call alloca(), the stack pointer is not fixed.
       In that case, we cannot use 'pop25 Re,imm8u' directly.
!      We have to caculate stack pointer from frame pointer
       and then use 'pop25 Re,0'.
       Of course, the frame_pointer_needed should be nonzero
       if the function calls alloca().  */
--- 5217,5223 ----
    /* We have to consider alloca issue as well.
       If the function does call alloca(), the stack pointer is not fixed.
       In that case, we cannot use 'pop25 Re,imm8u' directly.
!      We have to calculate stack pointer from frame pointer
       and then use 'pop25 Re,0'.
       Of course, the frame_pointer_needed should be nonzero
       if the function calls alloca().  */
*************** nds32_can_use_return_insn (void)
*** 5385,5391 ****
       1. This is a naked function.
  	So there is no callee-saved, local size, or outgoing size.
       2. This is NOT a variadic function.
! 	So there is no pushing arguement registers into the stack.  */
    return (cfun->machine->naked_p && (cfun->machine->va_args_size == 0));
  }
  
--- 5385,5391 ----
       1. This is a naked function.
  	So there is no callee-saved, local size, or outgoing size.
       2. This is NOT a variadic function.
! 	So there is no pushing argument registers into the stack.  */
    return (cfun->machine->naked_p && (cfun->machine->va_args_size == 0));
  }
  
*************** nds32_target_alignment (rtx_insn *label)
*** 5421,5427 ****
  
    /* Always align to 4 byte when first instruction after label is jump
       instruction since length for that might changed, so let's always align
!      it for make sure we don't lose any perfomance here.  */
    if (insn == 0
        || (get_attr_length (insn) == 2
  	  && !JUMP_P (insn) && !CALL_P (insn)))
--- 5421,5427 ----
  
    /* Always align to 4 byte when first instruction after label is jump
       instruction since length for that might changed, so let's always align
!      it for make sure we don't lose any performance here.  */
    if (insn == 0
        || (get_attr_length (insn) == 2
  	  && !JUMP_P (insn) && !CALL_P (insn)))
*************** nds32_split_double_word_load_store_p(rtx
*** 5495,5501 ****
    if (optimize == 0 || !flag_schedule_insns_after_reload)
      return !satisfies_constraint_Da (mem) || MEM_VOLATILE_P (mem);
  
!   /* Split double word load store after copy propgation.  */
    if (current_pass == NULL)
      return false;
  
--- 5495,5501 ----
    if (optimize == 0 || !flag_schedule_insns_after_reload)
      return !satisfies_constraint_Da (mem) || MEM_VOLATILE_P (mem);
  
!   /* Split double word load store after copy propagation.  */
    if (current_pass == NULL)
      return false;
  
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32.h gcc-17-20260607/gcc/config/nds32/nds32.h
*** gcc-17-20260531/gcc/config/nds32/nds32.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32.h	Sun Jun  7 22:32:06 2026
*************** enum nds32_builtins
*** 1188,1194 ****
  /* Register Classes.  */
  
  /* In nds32 target, we have three levels of registers:
!      Low cost regsiters    : $r0 ~ $r7
       Middle cost registers : $r8 ~ $r11, $r16 ~ $r19
       High cost registers   : $r12 ~ $r14, $r20 ~ $r31
  
--- 1188,1194 ----
  /* Register Classes.  */
  
  /* In nds32 target, we have three levels of registers:
!      Low cost registers    : $r0 ~ $r7
       Middle cost registers : $r8 ~ $r11, $r16 ~ $r19
       High cost registers   : $r12 ~ $r14, $r20 ~ $r31
  
*************** enum reg_class
*** 1689,1695 ****
  /* This is the machine mode that elements of a jump-table should have.  */
  #define CASE_VECTOR_MODE Pmode
  
! /* Return the preferred mode for and addr_diff_vec when the mininum
     and maximum offset are known.  */
  #define CASE_VECTOR_SHORTEN_MODE(min_offset, max_offset, body)  \
    nds32_case_vector_shorten_mode (min_offset, max_offset, body)
--- 1689,1695 ----
  /* This is the machine mode that elements of a jump-table should have.  */
  #define CASE_VECTOR_MODE Pmode
  
! /* Return the preferred mode for and addr_diff_vec when the minimum
     and maximum offset are known.  */
  #define CASE_VECTOR_SHORTEN_MODE(min_offset, max_offset, body)  \
    nds32_case_vector_shorten_mode (min_offset, max_offset, body)
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32.md gcc-17-20260607/gcc/config/nds32/nds32.md
*** gcc-17-20260531/gcc/config/nds32/nds32.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32.md	Sun Jun  7 22:32:06 2026
***************
*** 642,648 ****
     (set_attr "length"   "4")])
  
  ;; divsr/divr will keep quotient only when quotient and remainder is the same
! ;; register in our ISA spec, it's can reduce 1 register presure if we don't
  ;; want remainder.
  (define_insn "divsi4"
    [(set (match_operand:SI 0 "register_operand"         "=r")
--- 642,648 ----
     (set_attr "length"   "4")])
  
  ;; divsr/divr will keep quotient only when quotient and remainder is the same
! ;; register in our ISA spec, it's can reduce 1 register pressure if we don't
  ;; want remainder.
  (define_insn "divsi4"
    [(set (match_operand:SI 0 "register_operand"         "=r")
***************
*** 1574,1580 ****
  )
  
  ;; Subroutine call instruction returning a value.
! ;;   operands[0]: It is the hard regiser in which the value is returned.
  ;;   The rest three operands are the same as the
  ;;   three operands of the 'call' instruction.
  ;;   (but with numbers increased by one)
--- 1574,1580 ----
  )
  
  ;; Subroutine call instruction returning a value.
! ;;   operands[0]: It is the hard register in which the value is returned.
  ;;   The rest three operands are the same as the
  ;;   three operands of the 'call' instruction.
  ;;   (but with numbers increased by one)
***************
*** 2078,2084 ****
  
  ;; We are receiving operands from casesi pattern:
  ;;
! ;; operands[0]: The index that have been substracted with lower bound.
  ;; operands[1]: A label that precedes the table itself.
  ;; operands[2]: A temporary register to retrieve value in table.
  ;;
--- 2078,2084 ----
  
  ;; We are receiving operands from casesi pattern:
  ;;
! ;; operands[0]: The index that have been subtracted with lower bound.
  ;; operands[1]: A label that precedes the table itself.
  ;; operands[2]: A temporary register to retrieve value in table.
  ;;
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32_intrinsic.h gcc-17-20260607/gcc/config/nds32/nds32_intrinsic.h
*** gcc-17-20260531/gcc/config/nds32/nds32_intrinsic.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32_intrinsic.h	Sun Jun  7 22:32:06 2026
*************** typedef unsigned char uint8x4_t __attrib
*** 33,39 ****
  typedef unsigned short uint16x2_t __attribute__ ((vector_size (4)));
  typedef unsigned int uint32x2_t __attribute__((vector_size(8)));
  
! /* General instrinsic register names.  */
  enum nds32_intrinsic_registers
  {
    __NDS32_REG_CPU_VER__ = 1024,
--- 33,39 ----
  typedef unsigned short uint16x2_t __attribute__ ((vector_size (4)));
  typedef unsigned int uint32x2_t __attribute__((vector_size(8)));
  
! /* General intrinsic register names.  */
  enum nds32_intrinsic_registers
  {
    __NDS32_REG_CPU_VER__ = 1024,
diff -Nrcpad gcc-17-20260531/gcc/config/nds32/nds32_isr.h gcc-17-20260607/gcc/config/nds32/nds32_isr.h
*** gcc-17-20260531/gcc/config/nds32/nds32_isr.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nds32/nds32_isr.h	Sun Jun  7 22:32:06 2026
*************** typedef struct
*** 434,440 ****
                    and software interrupt can be routed to any one of them.
  
     You may want to define your hardware interrupts in the following way
!    for easy maintainance.
  
       IVIC mode:
         #define MY_HW_IVIC_TIMER NDS32_VECTOR_INTERRUPT_HW0 + 1
--- 434,440 ----
                    and software interrupt can be routed to any one of them.
  
     You may want to define your hardware interrupts in the following way
!    for easy maintenance.
  
       IVIC mode:
         #define MY_HW_IVIC_TIMER NDS32_VECTOR_INTERRUPT_HW0 + 1
diff -Nrcpad gcc-17-20260531/gcc/config/nvptx/nvptx.cc gcc-17-20260607/gcc/config/nvptx/nvptx.cc
*** gcc-17-20260531/gcc/config/nvptx/nvptx.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nvptx/nvptx.cc	Sun Jun  7 22:32:06 2026
*************** nvptx_option_override (void)
*** 431,437 ****
  }
  
  /* Return a ptx type for MODE.  If PROMOTE, then use .u32 for QImode to
!    deal with ptx ideosyncracies.  */
  
  const char *
  nvptx_ptx_type_from_mode (machine_mode mode, bool promote)
--- 431,437 ----
  }
  
  /* Return a ptx type for MODE.  If PROMOTE, then use .u32 for QImode to
!    deal with ptx idiosyncrasies.  */
  
  const char *
  nvptx_ptx_type_from_mode (machine_mode mode, bool promote)
*************** nvptx_assemble_undefined_decl (FILE *fil
*** 2656,2662 ****
    if (DECL_IN_CONSTANT_POOL (decl))
      return;
  
!   /*  We support weak defintions, and hence have the right
        ASM_WEAKEN_DECL definition.  Diagnose the problem here.  */
    if (DECL_WEAK (decl))
      error_at (DECL_SOURCE_LOCATION (decl),
--- 2656,2662 ----
    if (DECL_IN_CONSTANT_POOL (decl))
      return;
  
!   /*  We support weak definitions, and hence have the right
        ASM_WEAKEN_DECL definition.  Diagnose the problem here.  */
    if (DECL_WEAK (decl))
      error_at (DECL_SOURCE_LOCATION (decl),
*************** nvptx_mem_maybe_shared_p (const_rtx x)
*** 2971,2977 ****
  /* Print an operand, X, to FILE, with an optional modifier in CODE.
  
     Meaning of CODE:
!    . -- print the predicate for the instruction or an emptry string for an
          unconditional one.
     # -- print a rounding mode for the instruction
  
--- 2971,2977 ----
  /* Print an operand, X, to FILE, with an optional modifier in CODE.
  
     Meaning of CODE:
!    . -- print the predicate for the instruction or an empty string for an
          unconditional one.
     # -- print a rounding mode for the instruction
  
*************** nvptx_discover_pars (bb_insn_map_t *map)
*** 3905,3911 ****
     Single-Entry-Single-Exit regions.  Some of those regions will be
     trivial ones consisting of a single BB.  The blocks of a
     partitioned region might form a set of disjoint graphs -- because
!    the region encloses a differently partitoned sub region.
  
     We use the linear time algorithm described in 'Finding Regions Fast:
     Single Entry Single Exit and control Regions in Linear Time'
--- 3905,3911 ----
     Single-Entry-Single-Exit regions.  Some of those regions will be
     trivial ones consisting of a single BB.  The blocks of a
     partitioned region might form a set of disjoint graphs -- because
!    the region encloses a differently partitioned sub region.
  
     We use the linear time algorithm described in 'Finding Regions Fast:
     Single Entry Single Exit and control Regions in Linear Time'
*************** nvptx_discover_pars (bb_insn_map_t *map)
*** 3936,3942 ****
     We use coloring to mark all BBs with cycle equivalency with the
     same color.  This is the output of the 'Finding Regions Fast'
     algorithm.  Notice it doesn't actually find the set of nodes within
!    a particular region, just unorderd sets of nodes that are the
     entries and exits of SESE regions.
  
     After determining cycle equivalency, we need to find the minimal
--- 3936,3942 ----
     We use coloring to mark all BBs with cycle equivalency with the
     same color.  This is the output of the 'Finding Regions Fast'
     algorithm.  Notice it doesn't actually find the set of nodes within
!    a particular region, just unordered sets of nodes that are the
     entries and exits of SESE regions.
  
     After determining cycle equivalency, we need to find the minimal
*************** nvptx_discover_pars (bb_insn_map_t *map)
*** 3945,3951 ****
     looking, and we're in the subgraph, we start coloring the color of
     the current node, and remember that node as the start of the
     current color's SESE region.  Every time we go to a new node, we
!    decrement the count of nodes with thet color.  If it reaches zero,
     we remember that node as the end of the current color's SESE region
     and return to 'looking'.  Otherwise we color the node the current
     color.
--- 3945,3951 ----
     looking, and we're in the subgraph, we start coloring the color of
     the current node, and remember that node as the start of the
     current color's SESE region.  Every time we go to a new node, we
!    decrement the count of nodes with that color.  If it reaches zero,
     we remember that node as the end of the current color's SESE region
     and return to 'looking'.  Otherwise we color the node the current
     color.
*************** typedef std::pair<basic_block, basic_blo
*** 3958,3969 ****
  typedef auto_vec<bb_pair_t> bb_pair_vec_t;
  
  /* A node in the undirected CFG.  The discriminator SECOND indicates just
!    above or just below the BB idicated by FIRST.  */
  typedef std::pair<basic_block, int> pseudo_node_t;
  
  /* A bracket indicates an edge towards the root of the spanning tree of the
     undirected graph.  Each bracket has a color, determined
!    from the currrent set of brackets.  */
  struct bracket
  {
    pseudo_node_t back; /* Back target */
--- 3958,3969 ----
  typedef auto_vec<bb_pair_t> bb_pair_vec_t;
  
  /* A node in the undirected CFG.  The discriminator SECOND indicates just
!    above or just below the BB indicated by FIRST.  */
  typedef std::pair<basic_block, int> pseudo_node_t;
  
  /* A bracket indicates an edge towards the root of the spanning tree of the
     undirected graph.  Each bracket has a color, determined
!    from the current set of brackets.  */
  struct bracket
  {
    pseudo_node_t back; /* Back target */
*************** verify_neutering_labels (basic_block to,
*** 4902,4908 ****
       <possibly-broadcast-cond>
       <branch>
  
!    We currently only use differnt FROM and TO when skipping an entire
     loop.  We could do more if we detected superblocks.  */
  
  static void
--- 4902,4908 ----
       <possibly-broadcast-cond>
       <branch>
  
!    We currently only use different FROM and TO when skipping an entire
     loop.  We could do more if we detected superblocks.  */
  
  static void
*************** populate_offload_attrs (offload_attrs *o
*** 5432,5438 ****
  #if WORKAROUND_PTXJIT_BUG_2
  /* Variant of pc_set that only requires JUMP_P (INSN) if STRICT.  This variant
     is needed in the nvptx target because the branches generated for
!    parititioning are NONJUMP_INSN_P, not JUMP_P.  */
  
  static rtx
  nvptx_pc_set (const rtx_insn *insn, bool strict = true)
--- 5432,5438 ----
  #if WORKAROUND_PTXJIT_BUG_2
  /* Variant of pc_set that only requires JUMP_P (INSN) if STRICT.  This variant
     is needed in the nvptx target because the branches generated for
!    partitioning are NONJUMP_INSN_P, not JUMP_P.  */
  
  static rtx
  nvptx_pc_set (const rtx_insn *insn, bool strict = true)
*************** nvptx_condjump_label (const rtx_insn *in
*** 5475,5481 ****
  }
  
  /* Insert a dummy ptx insn when encountering a branch to a label with no ptx
!    insn inbetween the branch and the label.  This works around a JIT bug
     observed at driver version 384.111, at -O0 for sm_50.  */
  
  static void
--- 5475,5481 ----
  }
  
  /* Insert a dummy ptx insn when encountering a branch to a label with no ptx
!    insn in between the branch and the label.  This works around a JIT bug
     observed at driver version 384.111, at -O0 for sm_50.  */
  
  static void
*************** prevent_branch_around_nothing (void)
*** 5527,5533 ****
  #endif
  
  #ifdef WORKAROUND_PTXJIT_BUG_3
! /* Insert two membar.cta insns inbetween two subsequent bar.sync insns.  This
     works around a hang observed at driver version 390.48 for sm_50.  */
  
  static void
--- 5527,5533 ----
  #endif
  
  #ifdef WORKAROUND_PTXJIT_BUG_3
! /* Insert two membar.cta insns in between two subsequent bar.sync insns.  This
     works around a hang observed at driver version 390.48 for sm_50.  */
  
  static void
*************** nvptx_lockfull_update (location_t loc, g
*** 7160,7169 ****
    return acc_out;
  }
  
! /* Emit a sequence to update a reduction accumlator at *PTR with the
     value held in VAR using operator OP.  Return the updated value.
  
!    TODO: optimize for atomic ops and indepedent complex ops.  */
  
  static tree
  nvptx_reduction_update (location_t loc, gimple_stmt_iterator *gsi,
--- 7160,7169 ----
    return acc_out;
  }
  
! /* Emit a sequence to update a reduction accumulator at *PTR with the
     value held in VAR using operator OP.  Return the updated value.
  
!    TODO: optimize for atomic ops and independent complex ops.  */
  
  static tree
  nvptx_reduction_update (location_t loc, gimple_stmt_iterator *gsi,
diff -Nrcpad gcc-17-20260531/gcc/config/nvptx/nvptx.md gcc-17-20260607/gcc/config/nvptx/nvptx.md
*** gcc-17-20260531/gcc/config/nvptx/nvptx.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/nvptx/nvptx.md	Sun Jun  7 22:32:06 2026
***************
*** 89,95 ****
  
  ;; The nvptx operand predicates, in general, don't permit subregs and
  ;; only literal constants, which differ from the generic ones, which
! ;; permit subregs and symbolc constants (as appropriate)
  (define_predicate "nvptx_register_operand"
    (match_code "reg")
  {
--- 89,95 ----
  
  ;; The nvptx operand predicates, in general, don't permit subregs and
  ;; only literal constants, which differ from the generic ones, which
! ;; permit subregs and symbolic constants (as appropriate)
  (define_predicate "nvptx_register_operand"
    (match_code "reg")
  {
diff -Nrcpad gcc-17-20260531/gcc/config/or1k/or1k.cc gcc-17-20260607/gcc/config/or1k/or1k.cc
*** gcc-17-20260531/gcc/config/or1k/or1k.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/or1k/or1k.cc	Sun Jun  7 22:32:06 2026
*************** or1k_strict_argument_naming (cumulative_
*** 1032,1038 ****
  
  /* Worker for TARGET_FUNCTION_ARG.
     Return the next register to be used to hold a function argument or NULL_RTX
!    if there's no more space.  Arugment CUM_V represents the current argument
     offset, zero for the first function argument.  OpenRISC function arguments
     maybe be passed in registers r3 to r8.  */
  
--- 1032,1038 ----
  
  /* Worker for TARGET_FUNCTION_ARG.
     Return the next register to be used to hold a function argument or NULL_RTX
!    if there's no more space.  Argument CUM_V represents the current argument
     offset, zero for the first function argument.  OpenRISC function arguments
     maybe be passed in registers r3 to r8.  */
  
*************** or1k_print_operand_address (FILE *file,
*** 1215,1221 ****
  
  /* Worker for TARGET_PRINT_OPERAND.
     Print operand X, an RTX, to the file FILE.  The output is formed as expected
!    by the OpenRISC assember.  CODE is the letter following a '%' in an
     instrunction template used to control the RTX output.  Example(s):
  
       CODE   RTX                   OUTPUT     COMMENT
--- 1215,1221 ----
  
  /* Worker for TARGET_PRINT_OPERAND.
     Print operand X, an RTX, to the file FILE.  The output is formed as expected
!    by the OpenRISC assembler.  CODE is the letter following a '%' in an
     instrunction template used to control the RTX output.  Example(s):
  
       CODE   RTX                   OUTPUT     COMMENT
diff -Nrcpad gcc-17-20260531/gcc/config/or1k/or1k.md gcc-17-20260607/gcc/config/or1k/or1k.md
*** gcc-17-20260531/gcc/config/or1k/or1k.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/or1k/or1k.md	Sun Jun  7 22:32:06 2026
***************
*** 519,525 ****
  ;; avoids 'convert_mode_scalar' from trying to do subregging
  ;; which we don't have support for.
  ;; We require signed and unsigned extend instructions because
! ;; signed comparisons require signed extention, but for SR_F
  ;; it doesn't matter.
  
  (define_expand "zero_extendbisi2_sr_f"
--- 519,525 ----
  ;; avoids 'convert_mode_scalar' from trying to do subregging
  ;; which we don't have support for.
  ;; We require signed and unsigned extend instructions because
! ;; signed comparisons require signed extension, but for SR_F
  ;; it doesn't matter.
  
  (define_expand "zero_extendbisi2_sr_f"
***************
*** 753,759 ****
    DONE;
  })
  
! ;; This is a placeholder, during RA, in order to create the PIC regiter.
  ;; We do this so that we don't unconditionally mark the LR register as
  ;; clobbered.  It is replaced during prologue generation with the proper
  ;; set_got pattern below.  This works because the set_got_tmp insn is the
--- 753,759 ----
    DONE;
  })
  
! ;; This is a placeholder, during RA, in order to create the PIC register.
  ;; We do this so that we don't unconditionally mark the LR register as
  ;; clobbered.  It is replaced during prologue generation with the proper
  ;; set_got pattern below.  This works because the set_got_tmp insn is the
***************
*** 797,803 ****
  ;; Atomic Operations
  ;; -------------------------------------------------------------------------
  
! ;; Note that MULT stands in for the non-existant NAND rtx_code.
  (define_code_iterator FETCHOP [plus minus ior xor and mult])
  
  (define_code_attr fetchop_name
--- 797,803 ----
  ;; Atomic Operations
  ;; -------------------------------------------------------------------------
  
! ;; Note that MULT stands in for the non-existent NAND rtx_code.
  (define_code_iterator FETCHOP [plus minus ior xor and mult])
  
  (define_code_attr fetchop_name
diff -Nrcpad gcc-17-20260531/gcc/config/pa/pa.cc gcc-17-20260607/gcc/config/pa/pa.cc
*** gcc-17-20260531/gcc/config/pa/pa.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/pa/pa.cc	Sun Jun  7 22:32:06 2026
*************** pa_assemble_integer (rtx x, unsigned int
*** 3627,3633 ****
    /* When we have a SYMBOL_REF with a SYMBOL_REF_DECL, we need to call
       call assemble_external and set the SYMBOL_REF_DECL to NULL before
       calling output_addr_const.  Otherwise, it may call assemble_external
!      in the midst of outputing the assembler code for the SYMBOL_REF.
       We restore the SYMBOL_REF_DECL after the output is done.  */
    if (GET_CODE (x) == SYMBOL_REF)
      {
--- 3627,3633 ----
    /* When we have a SYMBOL_REF with a SYMBOL_REF_DECL, we need to call
       call assemble_external and set the SYMBOL_REF_DECL to NULL before
       calling output_addr_const.  Otherwise, it may call assemble_external
!      in the midst of outputting the assembler code for the SYMBOL_REF.
       We restore the SYMBOL_REF_DECL after the output is done.  */
    if (GET_CODE (x) == SYMBOL_REF)
      {
*************** pa_can_change_mode_class (machine_mode f
*** 10527,10533 ****
  
     We should return FALSE for QImode and HImode because these modes
     are not ok in the floating-point registers.  However, this prevents
!    tieing these modes to SImode and DImode in the general registers.
     So, this isn't a good idea.  We rely on TARGET_HARD_REGNO_MODE_OK and
     TARGET_CAN_CHANGE_MODE_CLASS to prevent these modes from being used
     in the floating-point registers.  */
--- 10527,10533 ----
  
     We should return FALSE for QImode and HImode because these modes
     are not ok in the floating-point registers.  However, this prevents
!    tying these modes to SImode and DImode in the general registers.
     So, this isn't a good idea.  We rely on TARGET_HARD_REGNO_MODE_OK and
     TARGET_CAN_CHANGE_MODE_CLASS to prevent these modes from being used
     in the floating-point registers.  */
diff -Nrcpad gcc-17-20260531/gcc/config/pdp11/pdp11.cc gcc-17-20260607/gcc/config/pdp11/pdp11.cc
*** gcc-17-20260531/gcc/config/pdp11/pdp11.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/pdp11/pdp11.cc	Sun Jun  7 22:32:06 2026
*************** pdp11_insn_cost (rtx_insn *insn, bool sp
*** 1228,1234 ****
      default:
        break;
      }
!   /* There are some other cases where souce and dest are distinct.  */
    if (FLOAT_MODE_P (mode) &&
        (op == FLOAT_TRUNCATE || op == FLOAT_EXTEND || op == FIX || op == FLOAT))
      {
--- 1228,1234 ----
      default:
        break;
      }
!   /* There are some other cases where source and dest are distinct.  */
    if (FLOAT_MODE_P (mode) &&
        (op == FLOAT_TRUNCATE || op == FLOAT_EXTEND || op == FIX || op == FLOAT))
      {
*************** pdp11_conditional_register_usage (void)
*** 2214,2221 ****
    if (!TARGET_FPU)
      {
        x = reg_class_contents[FPU_REGS];
!       for (i = 0; i < FIRST_PSEUDO_REGISTER; i++ )
!        if (TEST_HARD_REG_BIT (x, i))
  	fixed_regs[i] = call_used_regs[i] = 1;
      }
  
--- 2214,2221 ----
    if (!TARGET_FPU)
      {
        x = reg_class_contents[FPU_REGS];
!       hard_reg_set_iterator hrsi;
!       EXECUTE_IF_SET_IN_HARD_REG_SET (x, 0, i, hrsi)
  	fixed_regs[i] = call_used_regs[i] = 1;
      }
  
diff -Nrcpad gcc-17-20260531/gcc/config/pru/constraints.md gcc-17-20260607/gcc/config/pru/constraints.md
*** gcc-17-20260531/gcc/config/pru/constraints.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/pru/constraints.md	Sun Jun  7 22:32:06 2026
***************
*** 32,37 ****
--- 32,38 ----
  ;;  m: Memory operand.
  ;;
  ;; The following constraints are intended for internal use only:
+ ;;  Rmd0, Rms0, Rms1: Registers for MUL instruction operands.
  ;;  Rsib: Jump address register suitable for sibling calls.
  ;;  Rrio: The R30 and R31 I/O registers.
  ;;  M: -255 to 0 (for converting ADD to SUB with suitable UBYTE OP2).
***************
*** 50,55 ****
--- 51,69 ----
    "@internal
    A register suitable for an indirect sibcall.")
  
+ (define_register_constraint "Rmd0" "MULDST_REGS"
+   "@internal
+   The multiply destination register."
+   "regno == MULDST_REGNUM")
+ 
+ (define_register_constraint "Rms0" "MULSRC0_REGS"
+   "@internal
+   The multiply source 0 register.")
+ 
+ (define_register_constraint "Rms1" "MULSRC1_REGS"
+   "@internal
+   The multiply source 1 register.")
+ 
  (define_register_constraint "Rrio" "REGIO_REGS"
    "@internal
    The R30 and R31 I/O registers.")
diff -Nrcpad gcc-17-20260531/gcc/config/pru/predicates.md gcc-17-20260607/gcc/config/pru/predicates.md
*** gcc-17-20260531/gcc/config/pru/predicates.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/pru/predicates.md	Sun Jun  7 22:32:06 2026
***************
*** 83,89 ****
        else
  	return 0;
  
!       return regno == MULDST_REGNUM || regno >= FIRST_PSEUDO_REGISTER;
      }
    return 0;
  })
--- 83,90 ----
        else
  	return 0;
  
!       return REGNO_REG_CLASS (regno) == MULDST_REGS
! 	     || regno >= FIRST_PSEUDO_REGISTER;
      }
    return 0;
  })
***************
*** 102,108 ****
        else
  	return 0;
  
!       return regno == MULSRC0_REGNUM || regno >= FIRST_PSEUDO_REGISTER;
      }
    return 0;
  })
--- 103,110 ----
        else
  	return 0;
  
!       return REGNO_REG_CLASS (regno) == MULSRC0_REGS
! 	     || regno >= FIRST_PSEUDO_REGISTER;
      }
    return 0;
  })
***************
*** 121,127 ****
        else
  	return 0;
  
!       return regno == MULSRC1_REGNUM || regno >= FIRST_PSEUDO_REGISTER;
      }
    return 0;
  })
--- 123,130 ----
        else
  	return 0;
  
!       return REGNO_REG_CLASS (regno) == MULSRC1_REGS
! 	     || regno >= FIRST_PSEUDO_REGISTER;
      }
    return 0;
  })
diff -Nrcpad gcc-17-20260531/gcc/config/pru/pru.h gcc-17-20260607/gcc/config/pru/pru.h
*** gcc-17-20260531/gcc/config/pru/pru.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/pru/pru.h	Sun Jun  7 22:32:06 2026
*************** enum reg_class
*** 216,221 ****
--- 216,225 ----
  {
    NO_REGS,
    SIB_REGS,
+   LOOPCNTR_REGS,
+   MULDST_REGS,
+   MULSRC0_REGS,
+   MULSRC1_REGS,
    REGIO_REGS,
    GP_REGS,
    ALL_REGS,
*************** enum reg_class
*** 227,232 ****
--- 231,240 ----
  #define REG_CLASS_NAMES   \
    {  "NO_REGS",		  \
       "SIB_REGS",	  \
+      "LOOPCNTR_REGS",	  \
+      "MULDST_REGS",	  \
+      "MULSRC0_REGS",	  \
+      "MULSRC1_REGS",	  \
       "REGIO_REGS",	  \
       "GP_REGS",		  \
       "ALL_REGS" }
*************** enum reg_class
*** 237,242 ****
--- 245,254 ----
    {								\
      /* NO_REGS	      */ { 0, 0, 0, 0, 0},			\
      /* SIB_REGS	      */ { 0xf, 0xff000000u, ~0u, 0xffffffu, 0},\
+     /* LOOPCNTR_REGS  */ { 0, 0, 0, 0, 0xf},			\
+     /* MULDST_REGS    */ { 0, 0, 0, 0x0000ff00u, 0},		\
+     /* MULSRC0_REGS   */ { 0, 0, 0, 0x000f0000u, 0},		\
+     /* MULSRC1_REGS   */ { 0, 0, 0, 0x00f00000u, 0},		\
      /* REGIO_REGS     */ { 0, 0, 0, 0xff000000u, 0},		\
      /* GP_REGS	      */ { ~0u, ~0u, ~0u, ~0u, 0},		\
      /* ALL_REGS	      */ { ~0u, ~0u, ~0u, ~0u, ~0u}		\
*************** enum reg_class
*** 245,255 ****
  
  #define GP_REG_P(REGNO) ((unsigned)(REGNO) <= LAST_GP_REGNUM)
  #define REGNO_REG_CLASS(REGNO)						    \
! 	((REGNO) == R30_REGNUM ? REGIO_REGS				    \
  	 : (REGNO) == R31_REGNUM ? REGIO_REGS				    \
  	 : (REGNO) >= FIRST_ARG_REGNUM					    \
  	    && (REGNO) <= LAST_ARG_REGNUM ? SIB_REGS			    \
  	 : (REGNO) == STATIC_CHAIN_REGNUM ? SIB_REGS			    \
  	 : (REGNO) <= LAST_NONIO_GP_REGNUM ? GP_REGS			    \
  	 : ALL_REGS)
  
--- 257,271 ----
  
  #define GP_REG_P(REGNO) ((unsigned)(REGNO) <= LAST_GP_REGNUM)
  #define REGNO_REG_CLASS(REGNO)						    \
! 	((REGNO) == MULDST_REGNUM ? MULDST_REGS				    \
! 	 : (REGNO) == MULSRC0_REGNUM ? MULSRC0_REGS			    \
! 	 : (REGNO) == MULSRC1_REGNUM ? MULSRC1_REGS			    \
! 	 : (REGNO) == R30_REGNUM ? REGIO_REGS				    \
  	 : (REGNO) == R31_REGNUM ? REGIO_REGS				    \
  	 : (REGNO) >= FIRST_ARG_REGNUM					    \
  	    && (REGNO) <= LAST_ARG_REGNUM ? SIB_REGS			    \
  	 : (REGNO) == STATIC_CHAIN_REGNUM ? SIB_REGS			    \
+ 	 : (REGNO) == LOOPCNTR_REGNUM ? LOOPCNTR_REGS			    \
  	 : (REGNO) <= LAST_NONIO_GP_REGNUM ? GP_REGS			    \
  	 : ALL_REGS)
  
diff -Nrcpad gcc-17-20260531/gcc/config/pru/pru.md gcc-17-20260607/gcc/config/pru/pru.md
*** gcc-17-20260531/gcc/config/pru/pru.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/pru/pru.md	Sun Jun  7 22:32:06 2026
***************
*** 1208,1233 ****
    [(set_attr "type" "alu")
     (set_attr "length" "8")])
  
! ;; Multiply instruction.  The nop is required to ensure that source
  ;; registers are sampled and multiplication is executed on those values.
  ;; Only after that one cycle can xin obtain the result.
  
  (define_insn "mulsi3"
!   [(set (match_operand:SI 0 "pru_muldst_operand"	   "={r26}")
! 	(mult:SI (match_operand:SI 1 "pru_mulsrc0_operand" "%{r28}")
! 		 (match_operand:SI 2 "pru_mulsrc1_operand" "{r29}")))]
    "TARGET_OPT_MUL"
    "nop\;xin\\t0, %0, 4"
    [(set_attr "type" "alu")
     (set_attr "length" "8")])
  
  (define_insn "umulsidi3"
!   [(set (match_operand:DI 0 "pru_muldst_operand"	   "={r26}")
  	(mult:DI
  	  (zero_extend:DI
! 	    (match_operand:SI 1 "pru_mulsrc0_operand"	   "%{r28}"))
  	  (zero_extend:DI
! 	    (match_operand:SI 2 "pru_mulsrc1_operand"	   "{r29}"))))]
    "TARGET_OPT_MUL"
    "nop\;xin\\t0, %0, 8"
    [(set_attr "type" "alu")
--- 1208,1233 ----
    [(set_attr "type" "alu")
     (set_attr "length" "8")])
  
! ;; Multiply instruction.  The nop is required to ensure that Rmd0 and Rms0
  ;; registers are sampled and multiplication is executed on those values.
  ;; Only after that one cycle can xin obtain the result.
  
  (define_insn "mulsi3"
!   [(set (match_operand:SI 0 "pru_muldst_operand"	   "=Rmd0")
! 	(mult:SI (match_operand:SI 1 "pru_mulsrc0_operand" "%Rms0")
! 		 (match_operand:SI 2 "pru_mulsrc1_operand" "Rms1")))]
    "TARGET_OPT_MUL"
    "nop\;xin\\t0, %0, 4"
    [(set_attr "type" "alu")
     (set_attr "length" "8")])
  
  (define_insn "umulsidi3"
!   [(set (match_operand:DI 0 "pru_muldst_operand"	   "=Rmd0")
  	(mult:DI
  	  (zero_extend:DI
! 	    (match_operand:SI 1 "pru_mulsrc0_operand"	   "%Rms0"))
  	  (zero_extend:DI
! 	    (match_operand:SI 2 "pru_mulsrc1_operand"	   "Rms1"))))]
    "TARGET_OPT_MUL"
    "nop\;xin\\t0, %0, 8"
    [(set_attr "type" "alu")
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/andes-25-series.md gcc-17-20260607/gcc/config/riscv/andes-25-series.md
*** gcc-17-20260531/gcc/config/riscv/andes-25-series.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/andes-25-series.md	Sun Jun  7 22:32:06 2026
***************
*** 184,200 ****
         (eq_attr "type" "vialu,vicalu,vshift,viminmax,vicmp,vimov,\
  			vsalu,vaalu,vmov,vector,vimerge"))
    "andes_25_vpu_pipe + andes_25_vpu_alu")
!   
  (define_insn_reservation "andes_25_widen_vialu" 2
    (and (eq_attr "tune" "andes_25_series")
         (eq_attr "type" "viwalu, vext, vsshift"))
    "andes_25_vpu_pipe + andes_25_vpu_alu")
!   
  (define_insn_reservation "andes_25_narrow_vialu" 3
    (and (eq_attr "tune" "andes_25_series")
         (eq_attr "type" "vnshift,vnclip"))
    "andes_25_vpu_pipe + andes_25_vpu_alu")
!   
  (define_insn_reservation "andes_25_vimul" 2
    (and (eq_attr "tune" "andes_25_series")
         (eq_attr "type" "vimul,vimuladd,vsmul"))
--- 184,200 ----
         (eq_attr "type" "vialu,vicalu,vshift,viminmax,vicmp,vimov,\
  			vsalu,vaalu,vmov,vector,vimerge"))
    "andes_25_vpu_pipe + andes_25_vpu_alu")
! 
  (define_insn_reservation "andes_25_widen_vialu" 2
    (and (eq_attr "tune" "andes_25_series")
         (eq_attr "type" "viwalu, vext, vsshift"))
    "andes_25_vpu_pipe + andes_25_vpu_alu")
! 
  (define_insn_reservation "andes_25_narrow_vialu" 3
    (and (eq_attr "tune" "andes_25_series")
         (eq_attr "type" "vnshift,vnclip"))
    "andes_25_vpu_pipe + andes_25_vpu_alu")
! 
  (define_insn_reservation "andes_25_vimul" 2
    (and (eq_attr "tune" "andes_25_series")
         (eq_attr "type" "vimul,vimuladd,vsmul"))
***************
*** 210,216 ****
         (eq_attr "type" "vslideup,vslidedown,vislide1up,vislide1down,\
  			vfslide1up,vfslide1down,vgather"))
    "andes_25_vpu_pipe + andes_25_vpu_perm")
!   
  (define_insn_reservation "andes_25_vcompress" 4
    (and (eq_attr "tune" "andes_25_series")
         (eq_attr "type" "vcompress"))
--- 210,216 ----
         (eq_attr "type" "vslideup,vslidedown,vislide1up,vislide1down,\
  			vfslide1up,vfslide1down,vgather"))
    "andes_25_vpu_pipe + andes_25_vpu_perm")
! 
  (define_insn_reservation "andes_25_vcompress" 4
    (and (eq_attr "tune" "andes_25_series")
         (eq_attr "type" "vcompress"))
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/arch-canonicalize gcc-17-20260607/gcc/config/riscv/arch-canonicalize
*** gcc-17-20260531/gcc/config/riscv/arch-canonicalize	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/arch-canonicalize	Sun Jun  7 22:32:06 2026
*************** import os
*** 30,36 ****
  from functools import reduce
  
  SUPPORTED_ISA_SPEC = ["2.2", "20190608", "20191213"]
! CANONICAL_ORDER = "imafdqlcbkjtpvnh"
  LONG_EXT_PREFIXES = ['z', 's', 'h', 'x']
  
  def parse_define_riscv_ext(content):
--- 30,36 ----
  from functools import reduce
  
  SUPPORTED_ISA_SPEC = ["2.2", "20190608", "20191213"]
! CANONICAL_ORDER = "imafdqlcbkjtvph"
  LONG_EXT_PREFIXES = ['z', 's', 'h', 'x']
  
  def parse_define_riscv_ext(content):
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/autovec-opt.md gcc-17-20260607/gcc/config/riscv/autovec-opt.md
*** gcc-17-20260531/gcc/config/riscv/autovec-opt.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/autovec-opt.md	Sun Jun  7 22:32:06 2026
***************
*** 684,690 ****
  }
  [(set_attr "type" "viwalu")])
  
! ;; This combine pattern does not correspond to an single instruction,
  ;; i.e. there is no vwmul.wv instruction. This is a temporary pattern
  ;; produced by a combine pass and if there is no further combine into
  ;; vwmul.vv pattern, then fall back to extend pattern and vmul.vv pattern.
--- 684,690 ----
  }
  [(set_attr "type" "viwalu")])
  
! ;; This combine pattern does not correspond to a single instruction,
  ;; i.e. there is no vwmul.wv instruction. This is a temporary pattern
  ;; produced by a combine pass and if there is no further combine into
  ;; vwmul.vv pattern, then fall back to extend pattern and vmul.vv pattern.
***************
*** 825,831 ****
  }
  [(set_attr "type" "vector")])
  
! ;; This combine pattern does not correspond to an single instruction,
  ;; i.e. there is no vfwmul.wv instruction. This is a temporary pattern
  ;; produced by a combine pass and if there is no further combine into
  ;; vfwmul.vv pattern, then fall back to extend pattern and vfmul.vv pattern.
--- 825,831 ----
  }
  [(set_attr "type" "vector")])
  
! ;; This combine pattern does not correspond to a single instruction,
  ;; i.e. there is no vfwmul.wv instruction. This is a temporary pattern
  ;; produced by a combine pass and if there is no further combine into
  ;; vfwmul.vv pattern, then fall back to extend pattern and vfmul.vv pattern.
***************
*** 1014,1020 ****
    }
    [(set_attr "type" "viwmuladd")])
  
! ;; This combine pattern does not correspond to an single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fma pattern.
--- 1014,1020 ----
    }
    [(set_attr "type" "viwmuladd")])
  
! ;; This combine pattern does not correspond to a single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fma pattern.
***************
*** 1067,1073 ****
    }
    [(set_attr "type" "vfwmuladd")])
  
! ;; This combine pattern does not correspond to an single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fma pattern.
--- 1067,1073 ----
    }
    [(set_attr "type" "vfwmuladd")])
  
! ;; This combine pattern does not correspond to a single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fma pattern.
***************
*** 1119,1125 ****
    }
    [(set_attr "type" "vfwmuladd")])
  
! ;; This combine pattern does not correspond to an single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fnma pattern.
--- 1119,1125 ----
    }
    [(set_attr "type" "vfwmuladd")])
  
! ;; This combine pattern does not correspond to a single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fnma pattern.
***************
*** 1171,1177 ****
    }
    [(set_attr "type" "vfwmuladd")])
  
! ;; This combine pattern does not correspond to an single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fms pattern.
--- 1171,1177 ----
    }
    [(set_attr "type" "vfwmuladd")])
  
! ;; This combine pattern does not correspond to a single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fms pattern.
***************
*** 1224,1230 ****
    }
    [(set_attr "type" "vfwmuladd")])
  
! ;; This combine pattern does not correspond to an single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fnms pattern.
--- 1224,1230 ----
    }
    [(set_attr "type" "vfwmuladd")])
  
! ;; This combine pattern does not correspond to a single instruction.
  ;; This is a temporary pattern produced by a combine pass and if there
  ;; is no further combine into widen pattern, then fall back to extend
  ;; pattern and non-widen fnms pattern.
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/autovec.md gcc-17-20260607/gcc/config/riscv/autovec.md
*** gcc-17-20260531/gcc/config/riscv/autovec.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/autovec.md	Sun Jun  7 22:32:06 2026
***************
*** 1071,1077 ****
  [(set_attr "type" "vfncvtitof")])
  
  ;; This operation can be performed in the loop vectorizer but unfortunately
! ;; not applicable for now. We can remove this pattern after loop vectorizer
  ;; is able to take care of INT64 to FP16 conversion.
  (define_expand "<float_cvt><mode><vnnconvert>2"
    [(set (match_operand:<VNNCONVERT>  0 "register_operand")
--- 1071,1077 ----
  [(set_attr "type" "vfncvtitof")])
  
  ;; This operation can be performed in the loop vectorizer but unfortunately
! ;; not applicable for now.  We can remove this pattern after loop vectorizer
  ;; is able to take care of INT64 to FP16 conversion.
  (define_expand "<float_cvt><mode><vnnconvert>2"
    [(set (match_operand:<VNNCONVERT>  0 "register_operand")
***************
*** 1369,1375 ****
     (match_operand	     2 "nonmemory_operand")]
    "TARGET_VECTOR"
  {
!   /* If we set the first element, emit an v(f)mv.s.[xf].  */
    if (operands[2] == const0_rtx)
      {
        rtx ops[] = {operands[0], operands[0], operands[1]};
--- 1369,1375 ----
     (match_operand	     2 "nonmemory_operand")]
    "TARGET_VECTOR"
  {
!   /* If we set the first element, emit a v(f)mv.s.[xf].  */
    if (operands[2] == const0_rtx)
      {
        rtx ops[] = {operands[0], operands[0], operands[1]};
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/bitmanip.md gcc-17-20260607/gcc/config/riscv/bitmanip.md
*** gcc-17-20260531/gcc/config/riscv/bitmanip.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/bitmanip.md	Sun Jun  7 22:32:06 2026
***************
*** 58,64 ****
  
  ; Zba does not provide W-forms of sh[123]add(.uw)?, which leads to an
  ; interesting irregularity: we can generate a signed 32-bit result
! ; using slli(.uw)?+ addw, but a unsigned 32-bit result can be more
  ; efficiently be generated as sh[123]add+zext.w (the .uw can be
  ; dropped, if we zero-extend the output anyway).
  ;
--- 58,64 ----
  
  ; Zba does not provide W-forms of sh[123]add(.uw)?, which leads to an
  ; interesting irregularity: we can generate a signed 32-bit result
! ; using slli(.uw)?+ addw, but an unsigned 32-bit result can be more
  ; efficiently be generated as sh[123]add+zext.w (the .uw can be
  ; dropped, if we zero-extend the output anyway).
  ;
***************
*** 533,548 ****
  (define_expand "bswapsi2"
    [(set (match_operand:SI 0 "register_operand")
  	(bswap:SI (match_operand:SI 1 "register_operand")))]
!   "TARGET_ZBB || TARGET_ZBKB || TARGET_XTHEADBB"
! {
!   /* Expose bswapsi2 on TARGET_64BIT so that the gimple store
!      merging pass will create suitable bswap insns.  We can actually
!      just FAIL that case when generating RTL and let the generic code
!      handle it.  */
!   if (TARGET_64BIT && !TARGET_XTHEADBB)
!     FAIL;
! })
! 
  
  (define_insn "*bswap<mode>2"
    [(set (match_operand:X 0 "register_operand" "=r")
--- 533,539 ----
  (define_expand "bswapsi2"
    [(set (match_operand:SI 0 "register_operand")
  	(bswap:SI (match_operand:SI 1 "register_operand")))]
!   "(!TARGET_64BIT && (TARGET_ZBB || TARGET_ZBKB)) || TARGET_XTHEADBB")
  
  (define_insn "*bswap<mode>2"
    [(set (match_operand:X 0 "register_operand" "=r")
***************
*** 1159,1165 ****
     && riscv_const_insns (operands[2], false) != 1
     /* We need the upper half to be zero.  */
     && (INTVAL (operands[2]) & HOST_WIDE_INT_C (0xffffffff00000000)) == 0
!    /* And the the adjusted constant must either be something we can
        implement with andi or bclri.  */
     && ((SMALL_OPERAND (sext_hwi (INTVAL (operands[2]), 32))
          || (TARGET_ZBS && popcount_hwi (INTVAL (operands[2])) == 31))
--- 1150,1156 ----
     && riscv_const_insns (operands[2], false) != 1
     /* We need the upper half to be zero.  */
     && (INTVAL (operands[2]) & HOST_WIDE_INT_C (0xffffffff00000000)) == 0
!    /* And the adjusted constant must either be something we can
        implement with andi or bclri.  */
     && ((SMALL_OPERAND (sext_hwi (INTVAL (operands[2]), 32))
          || (TARGET_ZBS && popcount_hwi (INTVAL (operands[2])) == 31))
***************
*** 1326,1332 ****
    DONE;
  })
  
! ;; If we have an XOR/IOR with a constant operand (C) and the we can
  ;; synthesize ~C more efficiently than C, then synthesize ~C and use
  ;; xnor/orn instead.
  ;;
--- 1317,1323 ----
    DONE;
  })
  
! ;; If we have an XOR/IOR with a constant operand (C) and we can
  ;; synthesize ~C more efficiently than C, then synthesize ~C and use
  ;; xnor/orn instead.
  ;;
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/constraints.md gcc-17-20260607/gcc/config/riscv/constraints.md
*** gcc-17-20260531/gcc/config/riscv/constraints.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/constraints.md	Sun Jun  7 22:32:06 2026
***************
*** 194,200 ****
         (match_test "known_eq (rtx_to_poly_int64 (op), BYTES_PER_RISCV_VECTOR)")))
  
  (define_constraint "vu"
!   "A undefined vector value."
    (and (match_code "unspec")
         (match_test "XINT (op, 1) == UNSPEC_VUNDEF")))
  
--- 194,200 ----
         (match_test "known_eq (rtx_to_poly_int64 (op), BYTES_PER_RISCV_VECTOR)")))
  
  (define_constraint "vu"
!   "An undefined vector value."
    (and (match_code "unspec")
         (match_test "XINT (op, 1) == UNSPEC_VUNDEF")))
  
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/gen-riscv-ext-opt.cc gcc-17-20260607/gcc/config/riscv/gen-riscv-ext-opt.cc
*** gcc-17-20260531/gcc/config/riscv/gen-riscv-ext-opt.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/gen-riscv-ext-opt.cc	Sun Jun  7 22:32:06 2026
*************** main ()
*** 27,33 ****
    puts ("; License for more details.");
    puts (";");
    puts ("; You should have received a copy of the GNU General Public License");
!   puts ("; along with GCC; see the file COPYING3.  If not see ");
    puts ("; <http://www.gnu.org/licenses/>.");
  
    puts ("; This file is generated automatically using");
--- 27,33 ----
    puts ("; License for more details.");
    puts (";");
    puts ("; You should have received a copy of the GNU General Public License");
!   puts ("; along with GCC; see the file COPYING3.  If not see");
    puts ("; <http://www.gnu.org/licenses/>.");
  
    puts ("; This file is generated automatically using");
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/gen-riscv-mcpu-texi.cc gcc-17-20260607/gcc/config/riscv/gen-riscv-mcpu-texi.cc
*** gcc-17-20260531/gcc/config/riscv/gen-riscv-mcpu-texi.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/gen-riscv-mcpu-texi.cc	Sun Jun  7 22:32:06 2026
*************** main ()
*** 20,26 ****
    puts ("@opindex mcpu");
    puts ("@item -mcpu=@var{processor-string}");
    puts ("Use architecture of and optimize the output for the given processor, specified");
!   puts ("by particular CPU name. Permissible values for this option are:");
    puts ("");
    puts ("");
  
--- 20,26 ----
    puts ("@opindex mcpu");
    puts ("@item -mcpu=@var{processor-string}");
    puts ("Use architecture of and optimize the output for the given processor, specified");
!   puts ("by particular CPU name.  Permissible values for this option are:");
    puts ("");
    puts ("");
  
*************** main ()
*** 31,43 ****
  #include "riscv-cores.def"
  #undef RISCV_CORE
  
!   for (size_t i = 0; i < coreNames.size(); ++i) {
!     if (i == coreNames.size() - 1) {
!       printf("@samp{%s}.\n", coreNames[i].c_str());
!     } else {
!       printf("@samp{%s},\n\n", coreNames[i].c_str());
      }
-   }
  
    return 0;
  }
--- 31,43 ----
  #include "riscv-cores.def"
  #undef RISCV_CORE
  
!   for (size_t i = 0; i < coreNames.size (); ++i)
!     {
!       if (i == coreNames.size () - 1)
! 	printf ("@samp{%s}.\n", coreNames[i].c_str ());
!       else
! 	printf ("@samp{%s},\n\n", coreNames[i].c_str ());
      }
  
    return 0;
  }
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/gen-riscv-mtune-texi.cc gcc-17-20260607/gcc/config/riscv/gen-riscv-mtune-texi.cc
*** gcc-17-20260531/gcc/config/riscv/gen-riscv-mtune-texi.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/gen-riscv-mtune-texi.cc	Sun Jun  7 22:32:06 2026
*************** main ()
*** 31,39 ****
  #include "riscv-cores.def"
  #undef RISCV_TUNE
  
!   for (size_t i = 0; i < tuneNames.size(); ++i) {
!     printf("@samp{%s},\n\n", tuneNames[i].c_str());
!   }
  
    puts ("and all valid options for @option{-mcpu=}.");
  
--- 31,38 ----
  #include "riscv-cores.def"
  #undef RISCV_TUNE
  
!   for (size_t i = 0; i < tuneNames.size (); ++i)
!     printf ("@samp{%s},\n\n", tuneNames[i].c_str ());
  
    puts ("and all valid options for @option{-mcpu=}.");
  
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/generic-vector-ooo.md gcc-17-20260607/gcc/config/riscv/generic-vector-ooo.md
*** gcc-17-20260531/gcc/config/riscv/generic-vector-ooo.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/generic-vector-ooo.md	Sun Jun  7 22:32:06 2026
***************
*** 17,23 ****
  ;; <http://www.gnu.org/licenses/>.
  ;; Vector load/store
  
! ;; The insn reservations include "generic" as we won't have a in-order
  ;; generic definition for vector instructions.
  
  (define_automaton "vector_ooo")
--- 17,23 ----
  ;; <http://www.gnu.org/licenses/>.
  ;; Vector load/store
  
! ;; The insn reservations include "generic" as we won't have an in-order
  ;; generic definition for vector instructions.
  
  (define_automaton "vector_ooo")
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/genrvv-type-indexer.cc gcc-17-20260607/gcc/config/riscv/genrvv-type-indexer.cc
*** gcc-17-20260531/gcc/config/riscv/genrvv-type-indexer.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/genrvv-type-indexer.cc	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 20,26 ****
  
  #include "coretypes.h"
  
- #include <assert.h>
  #include <math.h>
  
  #define BOOL_SIZE_LIST                                                         \
--- 20,25 ----
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/multilib-generator gcc-17-20260607/gcc/config/riscv/multilib-generator
*** gcc-17-20260531/gcc/config/riscv/multilib-generator	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/multilib-generator	Sun Jun  7 22:32:06 2026
***************
*** 3,21 ****
  # RISC-V multilib list generator.
  # Copyright (C) 2011-2026 Free Software Foundation, Inc.
  # Contributed by Andrew Waterman (andrew@sifive.com).
! # 
  # This file is part of GCC.
! # 
  # GCC is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation; either version 3, or (at your option)
  # any later version.
! # 
  # GCC is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
! # 
  # You should have received a copy of the GNU General Public License
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
--- 3,21 ----
  # RISC-V multilib list generator.
  # Copyright (C) 2011-2026 Free Software Foundation, Inc.
  # Contributed by Andrew Waterman (andrew@sifive.com).
! #
  # This file is part of GCC.
! #
  # GCC is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation; either version 3, or (at your option)
  # any later version.
! #
  # GCC is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
! #
  # You should have received a copy of the GNU General Public License
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
*************** arches = collections.OrderedDict()
*** 51,56 ****
--- 51,57 ----
  abis = collections.OrderedDict()
  required = []
  reuse = []
+ extra_multlib_option_dict = collections.OrderedDict()
  
  def arch_canonicalize(arch, isa_spec):
    this_file = os.path.abspath(os.path.join( __file__))
*************** args = parser.parse_args()
*** 143,167 ****
  
  if args.cmodel:
    cmodels = [None] + args.cmodel.split(",")
  else:
    cmodels = [None]
  
- cmodel_options = '/'.join(['mcmodel=%s' % x for x in cmodels[1:]])
- cmodel_dirnames = ' \\\n'.join(cmodels[1:])
- 
  for cmodel in cmodels:
    for cfg in args.cfgs:
      try:
!       (arch, abi, extra, ext) = cfg.split('-')
      except:
!       print ("Invalid configure string %s, <arch>-<abi>-<extra>-<extensions>\n"
               "<extra> and <extensions> can be empty, "
               "e.g. rv32imafd-ilp32--" % cfg)
        sys.exit(1)
  
!     # Large code model only support rv64.
!     if cmodel == "large" and arch.startswith("rv32"):
        continue
  
      arch = arch_canonicalize (arch, args.misa_spec)
      arches[arch] = 1
--- 144,188 ----
  
  if args.cmodel:
    cmodels = [None] + args.cmodel.split(",")
+   for cmodel in cmodels[1:]:
+     extra_multlib_option_dict['mcmodel=%s' % cmodel] = cmodel
  else:
    cmodels = [None]
  
  for cmodel in cmodels:
    for cfg in args.cfgs:
+     local_extra_multlib_option_dict = collections.OrderedDict()
      try:
!       if cfg.count('-') == 3:
!         (arch, abi, extra, ext) = cfg.split('-')
!         extra_multlib_options = []
!       elif cfg.count('-') == 4:
!         (arch, abi, extra, ext, extra_multlib_option) = cfg.split('-')
!         # <extra-multilib-option> is a list of options separated by slash, and
!         # each option is consisted of option name and multi-lib dir separated by
!         # semicolon, the dash within the option should rewrite as underscore to
!         # prevent confusion of parsing.
!         # e.g.
!         # fcf_protection=full/cfi : -fcf-protection=full as option name and cfi
!         #                           as multilib path.
!         extra_multlib_options = extra_multlib_option.split(',')
!         for option in extra_multlib_options:
!           option = option.replace('_', '-')
!           option = option.split('/')
!           local_extra_multlib_option_dict[option[0]] = option[1]
!         extra_multlib_option_dict.update(local_extra_multlib_option_dict)
      except:
!       print ("Invalid configure string %s, <arch>-<abi>-<extra>-<extensions>"
!              "[-<extra-multilib-option>]\n"
               "<extra> and <extensions> can be empty, "
               "e.g. rv32imafd-ilp32--" % cfg)
        sys.exit(1)
  
!     # Compact and large code model only support rv64.
!     if cmodel in ["compact", "large"] and arch.startswith("rv32"):
        continue
+     elif cmodel:
+       local_extra_multlib_option_dict['mcmodel=%s' % cmodel] = cmodel
  
      arch = arch_canonicalize (arch, args.misa_spec)
      arches[arch] = 1
*************** for cmodel in cmodels:
*** 181,190 ****
        arches[alt] = 1
        reuse.append('march.%s/mabi.%s=march.%s/mabi.%s' % (arch, abi, alt, abi))
  
!     if cmodel:
!       required.append('march=%s/mabi=%s/mcmodel=%s' % (arch, abi, cmodel))
!     else:
!       required.append('march=%s/mabi=%s' % (arch, abi))
  
    arch_options = '/'.join(['march=%s' % x for x in arches.keys()])
    arch_dirnames = ' \\\n'.join(arches.keys())
--- 202,214 ----
        arches[alt] = 1
        reuse.append('march.%s/mabi.%s=march.%s/mabi.%s' % (arch, abi, alt, abi))
  
!     extra_multlib_option_str = '/'.join(local_extra_multlib_option_dict.keys())
! 
!     multilib_cfg_line = 'march=%s/mabi=%s' % (arch, abi)
! 
!     if (len(extra_multlib_option_str) > 0):
!       multilib_cfg_line += '/' + extra_multlib_option_str
!     required.append(multilib_cfg_line)
  
    arch_options = '/'.join(['march=%s' % x for x in arches.keys()])
    arch_dirnames = ' \\\n'.join(arches.keys())
*************** prog = sys.argv[0].split('/')[-1]
*** 196,202 ****
  print('# This file was generated by %s with the command:' % prog)
  print('#  %s' % ' '.join(sys.argv))
  
! print('MULTILIB_OPTIONS = %s %s %s' % (arch_options, abi_options, cmodel_options))
! print('MULTILIB_DIRNAMES = %s %s %s' % (arch_dirnames, abi_dirnames, cmodel_dirnames))
  print('MULTILIB_REQUIRED = %s' % ' \\\n'.join(required))
  print('MULTILIB_REUSE = %s' % ' \\\n'.join(reuse))
--- 220,226 ----
  print('# This file was generated by %s with the command:' % prog)
  print('#  %s' % ' '.join(sys.argv))
  
! print('MULTILIB_OPTIONS = %s %s %s' % (arch_options, abi_options, " ".join(extra_multlib_option_dict.keys())))
! print('MULTILIB_DIRNAMES = %s %s %s' % (arch_dirnames, abi_dirnames, " ".join(extra_multlib_option_dict.values())))
  print('MULTILIB_REQUIRED = %s' % ' \\\n'.join(required))
  print('MULTILIB_REUSE = %s' % ' \\\n'.join(reuse))
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-avlprop.cc gcc-17-20260607/gcc/config/riscv/riscv-avlprop.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-avlprop.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-avlprop.cc	Sun Jun  7 22:32:06 2026
*************** This file is part of GCC.
*** 6,12 ****
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3, or(at your option)
  any later version.
  
  GCC is distributed in the hope that it will be useful,
--- 6,12 ----
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3, or (at your option)
  any later version.
  
  GCC is distributed in the hope that it will be useful,
*************** along with GCC; see the file COPYING3.
*** 23,29 ****
  
       - Better code maintain:
         Current LCM-based VSETVL pass is so complicated that codes
!        there will become even harder to maintain. A straight forward
         AVL propagation PASS is much easier to maintain.
  
       - Reduce scalar register pressure:
--- 23,29 ----
  
       - Better code maintain:
         Current LCM-based VSETVL pass is so complicated that codes
!        there will become even harder to maintain.  A straight forward
         AVL propagation PASS is much easier to maintain.
  
       - Reduce scalar register pressure:
*************** along with GCC; see the file COPYING3.
*** 51,57 ****
  	tail elements are agnostic.
  
         We DON'T do this optimization on VSETVL pass since it is a
!        post-RA pass that consumed 't0' already wheras a standalone
         pre-RA AVL propagation pass allows us elide the consumption
         of the pseudo register of 't0' then we can reduce scalar
         register pressure.
--- 51,57 ----
  	tail elements are agnostic.
  
         We DON'T do this optimization on VSETVL pass since it is a
!        post-RA pass that consumed 't0' already whereas a standalone
         pre-RA AVL propagation pass allows us elide the consumption
         of the pseudo register of 't0' then we can reduce scalar
         register pressure.
*************** pass_avlprop::get_preferred_avl (
*** 313,325 ****
       - Few code changes in Loop Vectorizer.
       - Reuse the current clean flow of partial vectorization, That is, apply
         predicate LEN or MASK into LOAD/STORE operations and other special
!        arithmetic operations (e.d. DIV), then do the whole vector register
         operation if it DON'T affect the correctness.
         Such flow is used by all other targets like x86, sve, s390, ... etc.
       - PLUS_EXPR has better gimple optimizations than COND_LEN_ADD.
  
     We propagate AVL from NON-VLMAX to VLMAX for gimple IR like PLUS_EXPR which
!    generates the VLMAX instruction due to missed LEN information. The later
     VSETVL PASS will elided the redundant vsetvls.
  */
  
--- 313,325 ----
       - Few code changes in Loop Vectorizer.
       - Reuse the current clean flow of partial vectorization, That is, apply
         predicate LEN or MASK into LOAD/STORE operations and other special
!        arithmetic operations (e.g., DIV), then do the whole vector register
         operation if it DON'T affect the correctness.
         Such flow is used by all other targets like x86, sve, s390, ... etc.
       - PLUS_EXPR has better gimple optimizations than COND_LEN_ADD.
  
     We propagate AVL from NON-VLMAX to VLMAX for gimple IR like PLUS_EXPR which
!    generates the VLMAX instruction due to missed LEN information.  The later
     VSETVL PASS will elided the redundant vsetvls.
  */
  
*************** pass_avlprop::get_vlmax_ta_preferred_avl
*** 340,346 ****
        const auto *set = dyn_cast<set_info *> (def);
  
        /* FIXME: Stop AVL propagation if any USE is not a RVV real
! 	 instruction. It should be totally enough for vectorized codes since
  	 they always locate at extended blocks.
  
  	 TODO: We can extend PHI checking for intrinsic codes if it
--- 340,346 ----
        const auto *set = dyn_cast<set_info *> (def);
  
        /* FIXME: Stop AVL propagation if any USE is not a RVV real
! 	 instruction.  It should be totally enough for vectorized codes since
  	 they always locate at extended blocks.
  
  	 TODO: We can extend PHI checking for intrinsic codes if it
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-bclr-lowest-set-bit.cc gcc-17-20260607/gcc/config/riscv/riscv-bclr-lowest-set-bit.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-bclr-lowest-set-bit.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-bclr-lowest-set-bit.cc	Sun Jun  7 22:32:06 2026
*************** find_later_ctz (rtx_insn *start, rtx src
*** 164,170 ****
     inserting unrelated instructions between the two components of
     the x & (x - 1) idiom.  We'd have to match the ctz in various
     positions as well as deal with random insns the scheduler puts
!    in the middle of the key instrutions.
  
     So, this mini pass to optimize this scenario.  */
  
--- 164,170 ----
     inserting unrelated instructions between the two components of
     the x & (x - 1) idiom.  We'd have to match the ctz in various
     positions as well as deal with random insns the scheduler puts
!    in the middle of the key instructions.
  
     So, this mini pass to optimize this scenario.  */
  
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-cores.def gcc-17-20260607/gcc/config/riscv/riscv-cores.def
*** gcc-17-20260531/gcc/config/riscv/riscv-cores.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-cores.def	Sun Jun  7 22:32:06 2026
*************** RISCV_TUNE("sifive-p400-series", sifive_
*** 42,54 ****
  RISCV_TUNE("sifive-p600-series", sifive_p600, sifive_p600_tune_info)
  RISCV_TUNE("tt-ascalon-d8", tt_ascalon_d8, tt_ascalon_d8_tune_info)
  RISCV_TUNE("thead-c906", generic, thead_c906_tune_info)
! RISCV_TUNE("xt-c908", generic, generic_ooo_tune_info)
  RISCV_TUNE("xt-c908v", generic, generic_ooo_tune_info)
  RISCV_TUNE("xt-c910", generic, generic_ooo_tune_info)
  RISCV_TUNE("xt-c910v2", generic, generic_ooo_tune_info)
  RISCV_TUNE("xt-c920", generic, generic_ooo_tune_info)
  RISCV_TUNE("xt-c920v2", generic, generic_ooo_tune_info)
! RISCV_TUNE("xt-c9501fdvt", generic_ooo, generic_ooo_tune_info)
  RISCV_TUNE("xiangshan-nanhu", xiangshan, xiangshan_nanhu_tune_info)
  RISCV_TUNE("xiangshan-kunminghu", xiangshan, generic_ooo_tune_info)
  RISCV_TUNE("spacemit-x60", spacemit_x60, spacemit_x60_tune_info)
--- 42,54 ----
  RISCV_TUNE("sifive-p600-series", sifive_p600, sifive_p600_tune_info)
  RISCV_TUNE("tt-ascalon-d8", tt_ascalon_d8, tt_ascalon_d8_tune_info)
  RISCV_TUNE("thead-c906", generic, thead_c906_tune_info)
! RISCV_TUNE("xt-c908", xt_c908, xt_c908_tune_info)
  RISCV_TUNE("xt-c908v", generic, generic_ooo_tune_info)
  RISCV_TUNE("xt-c910", generic, generic_ooo_tune_info)
  RISCV_TUNE("xt-c910v2", generic, generic_ooo_tune_info)
  RISCV_TUNE("xt-c920", generic, generic_ooo_tune_info)
  RISCV_TUNE("xt-c920v2", generic, generic_ooo_tune_info)
! RISCV_TUNE("xt-c9501fdvt", generic_ooo, xt_c9501_tune_info)
  RISCV_TUNE("xiangshan-nanhu", xiangshan, xiangshan_nanhu_tune_info)
  RISCV_TUNE("xiangshan-kunminghu", xiangshan, generic_ooo_tune_info)
  RISCV_TUNE("spacemit-x60", spacemit_x60, spacemit_x60_tune_info)
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-ext-andes.def gcc-17-20260607/gcc/config/riscv/riscv-ext-andes.def
*** gcc-17-20260531/gcc/config/riscv/riscv-ext-andes.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-ext-andes.def	Sun Jun  7 22:32:06 2026
*************** Format of DEFINE_RISCV_EXT, please refer
*** 24,30 ****
  DEFINE_RISCV_EXT(
    /* NAME */ xandesperf,
    /* UPPERCASE_NAME */ XANDESPERF,
!   /* FULL_NAME */ "Andes performace extension",
    /* DESC */ "",
    /* URL */ ,
    /* DEP_EXTS */ ({}),
--- 24,30 ----
  DEFINE_RISCV_EXT(
    /* NAME */ xandesperf,
    /* UPPERCASE_NAME */ XANDESPERF,
!   /* FULL_NAME */ "Andes performance extension",
    /* DESC */ "",
    /* URL */ ,
    /* DEP_EXTS */ ({}),
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-ext.def gcc-17-20260607/gcc/config/riscv/riscv-ext.def
*** gcc-17-20260531/gcc/config/riscv/riscv-ext.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-ext.def	Sun Jun  7 22:32:06 2026
*************** Format of DEFINE_RISCV_EXT:
*** 66,72 ****
      Extra flags for the extension, this is a bitmask of the
      extra flags.  The extra flags are:
      - EXT_FLAG_MACRO: Set this flag if this extension is just a macro of set of
!        extensions, and not define any new instrcutions, new CSRs or new
         behaviors, the example is `b` extension is just a macro of `zba`, `zbb`
         and `zbs`.
  */
--- 66,72 ----
      Extra flags for the extension, this is a bitmask of the
      extra flags.  The extra flags are:
      - EXT_FLAG_MACRO: Set this flag if this extension is just a macro of set of
!        extensions, and not define any new instructions, new CSRs or new
         behaviors, the example is `b` extension is just a macro of `zba`, `zbb`
         and `zbs`.
  */
*************** DEFINE_RISCV_EXT(
*** 710,716 ****
        return true;
      }
  
!   /* Do nothing for future RV128 specification. Behaviour
       for this case is not yet well defined.  */
    return false;
  
--- 710,716 ----
        return true;
      }
  
!   /* Do nothing for future RV128 specification.  Behaviour
       for this case is not yet well defined.  */
    return false;
  
*************** DEFINE_RISCV_EXT(
*** 1170,1175 ****
--- 1170,1188 ----
    /* EXTRA_EXTENSION_FLAGS */ 0)
  
  DEFINE_RISCV_EXT(
+   /* NAME */ zvfofp8min,
+   /* UPPERCASE_NAME */ ZVFOFP8MIN,
+   /* FULL_NAME */ "Vector FP8 minimum extension",
+   /* DESC */ "",
+   /* URL */ ,
+   /* DEP_EXTS */ ({"zve32f"}),
+   /* SUPPORTED_VERSIONS */ ({{0, 2}}),
+   /* FLAG_GROUP */ zvf,
+   /* BITMASK_GROUP_ID */ BITMASK_NOT_YET_ALLOCATED,
+   /* BITMASK_BIT_POSITION*/ BITMASK_NOT_YET_ALLOCATED,
+   /* EXTRA_EXTENSION_FLAGS */ 0)
+ 
+ DEFINE_RISCV_EXT(
    /* NAME */ zvfbfwma,
    /* UPPERCASE_NAME */ ZVFBFWMA,
    /* FULL_NAME */ "Vector BF16 widening multiply/add extension",
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-ext.opt gcc-17-20260607/gcc/config/riscv/riscv-ext.opt
*** gcc-17-20260531/gcc/config/riscv/riscv-ext.opt	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-ext.opt	Sun Jun  7 22:32:06 2026
***************
*** 15,21 ****
  ; License for more details.
  ;
  ; You should have received a copy of the GNU General Public License
! ; along with GCC; see the file COPYING3.  If not see 
  ; <http://www.gnu.org/licenses/>.
  ; This file is generated automatically using
  ;  gcc/config/riscv/gen-riscv-ext-opt.cc from:
--- 15,21 ----
  ; License for more details.
  ;
  ; You should have received a copy of the GNU General Public License
! ; along with GCC; see the file COPYING3.  If not see
  ; <http://www.gnu.org/licenses/>.
  ; This file is generated automatically using
  ;  gcc/config/riscv/gen-riscv-ext-opt.cc from:
*************** Mask(ZVE64X) Var(riscv_zve_subext)
*** 266,271 ****
--- 266,273 ----
  
  Mask(ZVFBFMIN) Var(riscv_zvf_subext)
  
+ Mask(ZVFOFP8MIN) Var(riscv_zvf_subext)
+ 
  Mask(ZVFBFWMA) Var(riscv_zvf_subext)
  
  Mask(ZVFH) Var(riscv_zvf_subext)
*************** Mask(XANDESVPACKFPH) Var(riscv_xandes_su
*** 473,476 ****
  Mask(XANDESVDOT) Var(riscv_xandes_subext)
  
  Mask(XSMTVDOT) Var(riscv_xsmt_subext)
- 
--- 475,477 ----
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-modes.def gcc-17-20260607/gcc/config/riscv/riscv-modes.def
*** gcc-17-20260531/gcc/config/riscv/riscv-modes.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-modes.def	Sun Jun  7 22:32:06 2026
*************** ADJUST_FLOAT_FORMAT (BF, &arm_bfloat_hal
*** 29,35 ****
  
  /* Vector modes.  */
  
! /* Encode the ratio of SEW/LMUL into the mask types. There are the following
   * mask types.  */
  
  /* Encode the ratio of SEW/LMUL into the mask types.
--- 29,35 ----
  
  /* Vector modes.  */
  
! /* Encode the ratio of SEW/LMUL into the mask types.  There are the following
   * mask types.  */
  
  /* Encode the ratio of SEW/LMUL into the mask types.
*************** RVV_NF4_MODES (4)
*** 342,348 ****
  
  RVV_NF2_MODES (2)
  
! /* VLS modes used as SIMD auto-vectorization for epilogue. We know the
     return type of GET_MODE_BITSIZE is poly_uint16 or unsigned short.
     The maximum bitsize of all vector modes is 65536 = (8192 (LMUL1) * 8),
     even though RISC-V 'V' ISA spec allow maximum bitsize = 65536 * 8.
--- 342,348 ----
  
  RVV_NF2_MODES (2)
  
! /* VLS modes used as SIMD auto-vectorization for epilogue.  We know the
     return type of GET_MODE_BITSIZE is poly_uint16 or unsigned short.
     The maximum bitsize of all vector modes is 65536 = (8192 (LMUL1) * 8),
     even though RISC-V 'V' ISA spec allow maximum bitsize = 65536 * 8.
*************** VLS_MODES (4096); /* V4096QI V2048HI V10
*** 434,441 ****
     be 65536 for a single vector register which means the vector mode in
     GCC can be maximum = 65536 * 8 bits (LMUL=8).
     However, 'GET_MODE_SIZE' is using poly_uint16/unsigned short which will
!    overflow if we specify vector-length = 65536. To support this feature,
!    we need to change the codes outside the RISC-V port. We will support it in
     the future.  */
  #define MAX_BITSIZE_MODE_ANY_MODE (4096 * 8)
  
--- 434,441 ----
     be 65536 for a single vector register which means the vector mode in
     GCC can be maximum = 65536 * 8 bits (LMUL=8).
     However, 'GET_MODE_SIZE' is using poly_uint16/unsigned short which will
!    overflow if we specify vector-length = 65536.  To support this feature,
!    we need to change the codes outside the RISC-V port.  We will support it in
     the future.  */
  #define MAX_BITSIZE_MODE_ANY_MODE (4096 * 8)
  
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-opt-popretz.cc gcc-17-20260607/gcc/config/riscv/riscv-opt-popretz.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-opt-popretz.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-opt-popretz.cc	Sun Jun  7 22:32:06 2026
***************
*** 34,40 ****
     Why not use peephole2?
     ----------------------
     An alternative approach would be to use a peephole2 pattern to perform this
!    optimization. However, between "li a0, 0" and "cm.popret", there can be
     STACK_TIE and other instructions that make it difficult to write a robust
     peephole pattern that handles all cases.
  
--- 34,40 ----
     Why not use peephole2?
     ----------------------
     An alternative approach would be to use a peephole2 pattern to perform this
!    optimization.  However, between "li a0, 0" and "cm.popret", there can be
     STACK_TIE and other instructions that make it difficult to write a robust
     peephole pattern that handles all cases.
  
*************** riscv_popret_insn_p (int code)
*** 132,138 ****
  
  /* Convert a cm.popret instruction code to its corresponding cm.popretz code.
     Given an instruction code for gpr_multi_popret, returns the equivalent
!    gpr_multi_popretz instruction code. Returns CODE_FOR_nothing if the
     input is not a valid popret instruction.  */
  static int
  riscv_code_for_popretz (int code)
--- 132,138 ----
  
  /* Convert a cm.popret instruction code to its corresponding cm.popretz code.
     Given an instruction code for gpr_multi_popret, returns the equivalent
!    gpr_multi_popretz instruction code.  Returns CODE_FOR_nothing if the
     input is not a valid popret instruction.  */
  static int
  riscv_code_for_popretz (int code)
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-opts.h gcc-17-20260607/gcc/config/riscv/riscv-opts.h
*** gcc-17-20260531/gcc/config/riscv/riscv-opts.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-opts.h	Sun Jun  7 22:32:06 2026
*************** enum riscv_microarchitecture_type {
*** 66,72 ****
    andes_45_series,
    spacemit_x60,
    arcv_rmx100,
!   arcv_rhx100
  };
  extern enum riscv_microarchitecture_type riscv_microarchitecture;
  
--- 66,73 ----
    andes_45_series,
    spacemit_x60,
    arcv_rmx100,
!   arcv_rhx100,
!   xt_c908
  };
  extern enum riscv_microarchitecture_type riscv_microarchitecture;
  
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-profiles.def gcc-17-20260607/gcc/config/riscv/riscv-profiles.def
*** gcc-17-20260531/gcc/config/riscv/riscv-profiles.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-profiles.def	Sun Jun  7 22:32:06 2026
***************
*** 17,23 ****
     along with GCC; see the file COPYING3.  If not see
     <http://www.gnu.org/licenses/>.  */
  
! /* This is a list of RISC-V Profiles defination.
  
     Before using #include to read this file, define a macro:
  
--- 17,23 ----
     along with GCC; see the file COPYING3.  If not see
     <http://www.gnu.org/licenses/>.  */
  
! /* This is a list of RISC-V Profiles definition.
  
     Before using #include to read this file, define a macro:
  
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-protos.h gcc-17-20260607/gcc/config/riscv/riscv-protos.h
*** gcc-17-20260531/gcc/config/riscv/riscv-protos.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-protos.h	Sun Jun  7 22:32:06 2026
*************** struct cpu_vector_cost
*** 336,345 ****
    /* Cost of a not-taken branch.  */
    const int cond_not_taken_branch_cost;
  
!   /* Cost of an VLS modes operations.  */
    const common_vector_cost *vls;
  
!   /* Cost of an VLA modes operations.  */
    const scalable_vector_cost *vla;
  
    /* Cost of vector register move operations.  */
--- 336,345 ----
    /* Cost of a not-taken branch.  */
    const int cond_not_taken_branch_cost;
  
!   /* Cost of a VLS modes operations.  */
    const common_vector_cost *vls;
  
!   /* Cost of a VLA modes operations.  */
    const scalable_vector_cost *vla;
  
    /* Cost of vector register move operations.  */
*************** namespace riscv_vector {
*** 360,366 ****
  
  /* These flags describe how to pass the operands to a rvv insn pattern.
     e.g.:
!      If a insn has this flags:
         HAS_DEST_P | HAS_MASK_P | USE_VUNDEF_MERGE_P
  	 | TU_POLICY_P | BINARY_OP_P | FRM_DYN_P
       that means:
--- 360,366 ----
  
  /* These flags describe how to pass the operands to a rvv insn pattern.
     e.g.:
!      If an insn has this flags:
         HAS_DEST_P | HAS_MASK_P | USE_VUNDEF_MERGE_P
  	 | TU_POLICY_P | BINARY_OP_P | FRM_DYN_P
       that means:
*************** namespace riscv_vector {
*** 373,388 ****
         operands[7] is the mask policy operands
         operands[8] is the rounding mode operands
  
!      Then you can call `emit_vlmax_insn (flags, icode, ops)` to emit a insn.
       and ops[0] is the dest operand (operands[0]), ops[1] is the mask
       operand (operands[1]), ops[2] and ops[3] is the two
!      operands (operands[3], operands[4]) to do the operation. Other operands
       will be created by emit_vlmax_insn according to the flags information.
  */
  enum insn_flags : unsigned int
  {
    /* flags for dest, mask, merge operands.  */
!   /* Means INSN has dest operand. False for STORE insn.  */
    HAS_DEST_P = 1 << 0,
    /* Means INSN has mask operand.  */
    HAS_MASK_P = 1 << 1,
--- 373,388 ----
         operands[7] is the mask policy operands
         operands[8] is the rounding mode operands
  
!      Then you can call `emit_vlmax_insn (flags, icode, ops)` to emit an insn.
       and ops[0] is the dest operand (operands[0]), ops[1] is the mask
       operand (operands[1]), ops[2] and ops[3] is the two
!      operands (operands[3], operands[4]) to do the operation.  Other operands
       will be created by emit_vlmax_insn according to the flags information.
  */
  enum insn_flags : unsigned int
  {
    /* flags for dest, mask, merge operands.  */
!   /* Means INSN has dest operand.  False for STORE insn.  */
    HAS_DEST_P = 1 << 0,
    /* Means INSN has mask operand.  */
    HAS_MASK_P = 1 << 1,
*************** enum insn_type : unsigned int
*** 510,516 ****
    BINARY_OP_VXRM_RDN = BINARY_OP | VXRM_RDN_P,
    BINARY_OP_VXRM_ROD = BINARY_OP | VXRM_ROD_P,
  
!   /* Ternary operator. Always have real merge operand.  */
    TERNARY_OP = HAS_DEST_P | HAS_MASK_P | USE_ALL_TRUES_MASK_P | HAS_MERGE_P
  	       | TDEFAULT_POLICY_P | MDEFAULT_POLICY_P | TERNARY_OP_P,
    TERNARY_OP_FRM_DYN = TERNARY_OP | FRM_DYN_P,
--- 510,516 ----
    BINARY_OP_VXRM_RDN = BINARY_OP | VXRM_RDN_P,
    BINARY_OP_VXRM_ROD = BINARY_OP | VXRM_ROD_P,
  
!   /* Ternary operator.  Always have real merge operand.  */
    TERNARY_OP = HAS_DEST_P | HAS_MASK_P | USE_ALL_TRUES_MASK_P | HAS_MERGE_P
  	       | TDEFAULT_POLICY_P | MDEFAULT_POLICY_P | TERNARY_OP_P,
    TERNARY_OP_FRM_DYN = TERNARY_OP | FRM_DYN_P,
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-selftests.cc gcc-17-20260607/gcc/config/riscv/riscv-selftests.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-selftests.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-selftests.cc	Sun Jun  7 22:32:06 2026
*************** run_poly_int_selftests (void)
*** 247,253 ****
  static void
  run_const_vector_selftests (void)
  {
!   /* We dont't need to do the redundant tests in different march && mabi.
       Just pick up the march && mabi which fully support all RVV modes.  */
    riscv_selftest_arch_abi_setter rv ("rv64imafdcv", ABI_LP64D);
    rtl_dump_test t (SELFTEST_LOCATION, locate_file ("riscv/empty-func.rtl"));
--- 247,253 ----
  static void
  run_const_vector_selftests (void)
  {
!   /* We don't need to do the redundant tests in different march && mabi.
       Just pick up the march && mabi which fully support all RVV modes.  */
    riscv_selftest_arch_abi_setter rv ("rv64imafdcv", ABI_LP64D);
    rtl_dump_test t (SELFTEST_LOCATION, locate_file ("riscv/empty-func.rtl"));
*************** run_const_vector_selftests (void)
*** 268,275 ****
  	      emit_move_insn (dest, dup);
  	      rtx_insn *insn = get_last_insn ();
  	      rtx src = SET_SRC (PATTERN (insn));
! 	      /* 1. Should be vmv.v.i for in rang of -16 ~ 15.
! 		 2. Should be vmv.v.x for exceed -16 ~ 15.  */
  	      if (IN_RANGE (val, -16, 15))
  		ASSERT_TRUE (
  		  rtx_equal_p (XEXP (SET_SRC (PATTERN (insn)), 1), dup));
--- 268,275 ----
  	      emit_move_insn (dest, dup);
  	      rtx_insn *insn = get_last_insn ();
  	      rtx src = SET_SRC (PATTERN (insn));
! 	      /* 1.  Should be vmv.v.i for in range of -16 ~ 15.
! 		 2.  Should be vmv.v.x for exceed -16 ~ 15.  */
  	      if (IN_RANGE (val, -16, 15))
  		ASSERT_TRUE (
  		  rtx_equal_p (XEXP (SET_SRC (PATTERN (insn)), 1), dup));
*************** run_const_vector_selftests (void)
*** 319,325 ****
  static void
  run_broadcast_selftests (void)
  {
!   /* We dont't need to do the redundant tests in different march && mabi.
       Just pick up the march && mabi which fully support all RVV modes.  */
    riscv_selftest_arch_abi_setter rv ("rv64imafdcv", ABI_LP64D);
    rtl_dump_test t (SELFTEST_LOCATION, locate_file ("riscv/empty-func.rtl"));
--- 319,325 ----
  static void
  run_broadcast_selftests (void)
  {
!   /* We don't need to do the redundant tests in different march && mabi.
       Just pick up the march && mabi which fully support all RVV modes.  */
    riscv_selftest_arch_abi_setter rv ("rv64imafdcv", ABI_LP64D);
    rtl_dump_test t (SELFTEST_LOCATION, locate_file ("riscv/empty-func.rtl"));
*************** riscv_run_selftests (void)
*** 532,538 ****
      /* We can know POLY value = [4, 4] when BYTES_PER_RISCV_VECTOR
         is !is_constant () since we can use csrr vlenb and scalar shift
         instruction to compute such POLY value and store it into a scalar
!        register.  Wheras, we can't know [4, 4] on it is specified as
         FIXED-VLMAX since BYTES_PER_RISCV_VECTOR = 16 for -march=rv64gcv
         and csrr vlenb is 16 which is totally unrelated to any
         compile-time unknown POLY value.
--- 532,538 ----
      /* We can know POLY value = [4, 4] when BYTES_PER_RISCV_VECTOR
         is !is_constant () since we can use csrr vlenb and scalar shift
         instruction to compute such POLY value and store it into a scalar
!        register.  Whereas, we can't know [4, 4] on it is specified as
         FIXED-VLMAX since BYTES_PER_RISCV_VECTOR = 16 for -march=rv64gcv
         and csrr vlenb is 16 which is totally unrelated to any
         compile-time unknown POLY value.
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-sr.cc gcc-17-20260607/gcc/config/riscv/riscv-sr.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-sr.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-sr.cc	Sun Jun  7 22:32:06 2026
*************** check_for_no_return_call (rtx_insn *prol
*** 188,194 ****
       NOTE_INSN_PROLOGUE_END
       A no-return call instruction
  
!      If we do, then we can remove the prologue instruction safely. Remember
       that we've already confirmed by this point that the prologue is a call
       to riscv_save_0.  */
  
--- 188,194 ----
       NOTE_INSN_PROLOGUE_END
       A no-return call instruction
  
!      If we do, then we can remove the prologue instruction safely.  Remember
       that we've already confirmed by this point that the prologue is a call
       to riscv_save_0.  */
  
*************** riscv_remove_unneeded_save_restore_calls
*** 447,466 ****
        && !SIBCALL_REG_P (REGNO (target)))
      return;
  
-   riscv_cc cc = get_riscv_cc (XVECEXP (callpat, 0, 1));
    rtx sibcall = NULL;
    if (set_target != NULL)
!     sibcall = gen_sibcall_value_internal (set_target, target, const0_rtx,
! 					  gen_int_mode (cc, SImode));
    else
!     sibcall
!       = gen_sibcall_internal (target, const0_rtx, gen_int_mode (cc, SImode));
  
    rtx_insn *before_call = PREV_INSN (call);
    remove_insn (call);
    rtx_insn *insn = emit_call_insn_after_setloc (sibcall, before_call,
  						INSN_LOCATION (call));
    REG_NOTES (insn) = REG_NOTES (call);
    SIBLING_CALL_P (insn) = 1;
  
    /* Now update the prologue and epilogue to take account of the
--- 447,464 ----
        && !SIBCALL_REG_P (REGNO (target)))
      return;
  
    rtx sibcall = NULL;
    if (set_target != NULL)
!     sibcall = gen_sibcall_value_internal (set_target, target, const0_rtx);
    else
!     sibcall = gen_sibcall_internal (target, const0_rtx);
  
    rtx_insn *before_call = PREV_INSN (call);
    remove_insn (call);
    rtx_insn *insn = emit_call_insn_after_setloc (sibcall, before_call,
  						INSN_LOCATION (call));
    REG_NOTES (insn) = REG_NOTES (call);
+   CALL_INSN_ABI_ID (insn) = CALL_INSN_ABI_ID (call);
    SIBLING_CALL_P (insn) = 1;
  
    /* Now update the prologue and epilogue to take account of the
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-string.cc gcc-17-20260607/gcc/config/riscv/riscv-string.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-string.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-string.cc	Sun Jun  7 22:32:06 2026
*************** riscv_expand_strcmp_scalar (rtx result,
*** 470,476 ****
     The result will be stored in RESULT.
     The strings are referenced by SRC1 and SRC2.
     The argument BYTES_RTX either holds the number of characters to
!    compare, or is NULL_RTX. The argument ALIGN_RTX holds the alignment.
  
     Return true if expansion was successful, or false otherwise.  */
  
--- 470,476 ----
     The result will be stored in RESULT.
     The strings are referenced by SRC1 and SRC2.
     The argument BYTES_RTX either holds the number of characters to
!    compare, or is NULL_RTX.  The argument ALIGN_RTX holds the alignment.
  
     Return true if expansion was successful, or false otherwise.  */
  
*************** riscv_expand_strcmp (rtx result, rtx src
*** 487,493 ****
    if (riscv_strcmp_inline_limit == 0)
      return false;
  
!   /* Round down the comparision limit to a multiple of xlen.  */
    compare_max = riscv_strcmp_inline_limit & ~(xlen - 1);
  
    /* Decide how many bytes to compare inline.  */
--- 487,493 ----
    if (riscv_strcmp_inline_limit == 0)
      return false;
  
!   /* Round down the comparison limit to a multiple of xlen.  */
    compare_max = riscv_strcmp_inline_limit & ~(xlen - 1);
  
    /* Decide how many bytes to compare inline.  */
*************** emit_memcmp_scalar_result_calculation (r
*** 707,713 ****
    do_ior3 (result, result, const1_rtx);
  }
  
! /* Expand memcmp using scalar instructions (incl. Zbb).
  
     RESULT is the register where the return value will be stored.
     The source pointers are SRC1 and SRC2 (NBYTES bytes to compare).  */
--- 707,713 ----
    do_ior3 (result, result, const1_rtx);
  }
  
! /* Expand memcmp using scalar instructions (including Zbb).
  
     RESULT is the register where the return value will be stored.
     The source pointers are SRC1 and SRC2 (NBYTES bytes to compare).  */
*************** riscv_block_move_loop (rtx dest, rtx src
*** 908,914 ****
    if (leftover)
      riscv_block_move_straight (dest, src, leftover, align);
    else
!     emit_insn(gen_nop ());
  }
  
  /* Expand a cpymemsi instruction, which copies LENGTH bytes from
--- 908,914 ----
    if (leftover)
      riscv_block_move_straight (dest, src, leftover, align);
    else
!     emit_insn (gen_nop ());
  }
  
  /* Expand a cpymemsi instruction, which copies LENGTH bytes from
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-subset.h gcc-17-20260607/gcc/config/riscv/riscv-subset.h
*** gcc-17-20260531/gcc/config/riscv/riscv-subset.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-subset.h	Sun Jun  7 22:32:06 2026
*************** class riscv_subset_list
*** 45,51 ****
  {
  public:
    /* Because the parse method is called in several places, to prevent repeated
!      errors, use this flag to prevent it from repeating parse. */
    static bool parse_failed;
  
  private:
--- 45,51 ----
  {
  public:
    /* Because the parse method is called in several places, to prevent repeated
!      errors, use this flag to prevent it from repeating the parse.  */
    static bool parse_failed;
  
  private:
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-target-attr.cc gcc-17-20260607/gcc/config/riscv/riscv-target-attr.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-target-attr.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-target-attr.cc	Sun Jun  7 22:32:06 2026
*************** riscv_process_one_target_attr (char *arg
*** 320,326 ****
      }
  
    std::unique_ptr<char[]> buf (new char[len+1]);
!   char *str_to_check = buf.get();
    strcpy (str_to_check, arg_str);
  
    /* Split attribute name from argument (if present).  */
--- 320,326 ----
      }
  
    std::unique_ptr<char[]> buf (new char[len+1]);
!   char *str_to_check = buf.get ();
    strcpy (str_to_check, arg_str);
  
    /* Split attribute name from argument (if present).  */
*************** riscv_process_target_attr (tree args,
*** 479,486 ****
  
  /* Implement TARGET_OPTION_VALID_ATTRIBUTE_P.
     This is used to process attribute ((target ("..."))).
!    Note, that riscv_set_current_function() has not been called before,
!    so we need must not mess with the current global_options, which
     likely belong to another function.  */
  
  bool
--- 479,486 ----
  
  /* Implement TARGET_OPTION_VALID_ATTRIBUTE_P.
     This is used to process attribute ((target ("..."))).
!    Note that riscv_set_current_function () has not been called before,
!    so we must not mess with the current global_options, which
     likely belong to another function.  */
  
  bool
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-v.cc gcc-17-20260607/gcc/config/riscv/riscv-v.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-v.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-v.cc	Sun Jun  7 22:32:06 2026
***************
*** 48,54 ****
  #include "optabs.h"
  #include "tm-constrs.h"
  #include "rtx-vector-builder.h"
- #include "targhooks.h"
  #include "predict.h"
  #include "errors.h"
  #include "riscv-v.h"
--- 48,53 ----
*************** is_vlmax_len_p (machine_mode mode, rtx l
*** 98,104 ****
  
  /* Helper functions for insn_flags && insn_types */
  
! /* Return true if caller need pass mask operand for insn pattern with
     INSN_FLAGS. */
  
  static bool
--- 97,103 ----
  
  /* Helper functions for insn_flags && insn_types */
  
! /* Return true if caller needs to pass mask operand for insn pattern with
     INSN_FLAGS. */
  
  static bool
*************** public:
*** 305,311 ****
  	machine_mode mode = insn_data[(int) icode].operand[m_opno].mode;
  	/* 'create_input_operand doesn't allow VOIDmode.
  	   According to vector.md, we may have some patterns that do not have
! 	   explicit machine mode specifying the operand. Such operands are
  	   always Pmode.  */
  	if (mode == VOIDmode)
  	  mode = Pmode;
--- 304,310 ----
  	machine_mode mode = insn_data[(int) icode].operand[m_opno].mode;
  	/* 'create_input_operand doesn't allow VOIDmode.
  	   According to vector.md, we may have some patterns that do not have
! 	   explicit machine mode specifying the operand.  Such operands are
  	   always Pmode.  */
  	if (mode == VOIDmode)
  	  mode = Pmode;
*************** private:
*** 407,415 ****
     vector mode.  For VLA modes this corresponds to VLMAX.
  
     Unless the vector length can be encoded in the vsetivl[i] instruction this
!    function must only be used as long as we can create pseudo registers. This is
!    because it will set a pseudo register to VLMAX using vsetvl and use this as
!    definition for the vector length.  */
  void
  emit_vlmax_insn (unsigned icode, unsigned insn_flags, rtx *ops)
  {
--- 406,414 ----
     vector mode.  For VLA modes this corresponds to VLMAX.
  
     Unless the vector length can be encoded in the vsetivl[i] instruction this
!    function must only be used as long as we can create pseudo registers.  This
!    is because it will set a pseudo register to VLMAX using vsetvl and use this
!    as definition for the vector length.  */
  void
  emit_vlmax_insn (unsigned icode, unsigned insn_flags, rtx *ops)
  {
*************** rvv_builder::single_step_npatterns_p ()
*** 703,709 ****
  }
  
  /* Return true if the diff between const vector and vid sequence
!    is repeated. For example as below cases:
     The diff means the const vector - vid.
       CASE 1:
       CONST VECTOR: {3, 2, 1, 0, 7, 6, 5, 4, ... }
--- 702,708 ----
  }
  
  /* Return true if the diff between const vector and vid sequence
!    is repeated.  For example as below cases:
     The diff means the const vector - vid.
       CASE 1:
       CONST VECTOR: {3, 2, 1, 0, 7, 6, 5, 4, ... }
*************** autovec_use_vlmax_p (void)
*** 929,936 ****
  	  || rvv_vector_bits == RVV_VECTOR_BITS_ZVL;
  }
  
! /* This function emits VLMAX vrgather instruction. Emit vrgather.vx/vi when sel
!    is a const duplicate vector. Otherwise, emit vrgather.vv.  */
  static void
  emit_vlmax_gather_insn (rtx target, rtx op, rtx sel)
  {
--- 928,935 ----
  	  || rvv_vector_bits == RVV_VECTOR_BITS_ZVL;
  }
  
! /* This function emits VLMAX vrgather instruction.  Emit vrgather.vx/vi when sel
!    is a const duplicate vector.  Otherwise, emit vrgather.vv.  */
  static void
  emit_vlmax_gather_insn (rtx target, rtx op, rtx sel)
  {
*************** expand_const_vector (rtx target, rtx src
*** 1734,1740 ****
    /* Support scalable const series vector.  */
    rtx base, step;
    if (const_vec_series_p (src, &base, &step))
!     return expand_const_vec_series(target, base, step);
  
    /* Handle variable-length vector.  */
    unsigned int nelts_per_pattern = CONST_VECTOR_NELTS_PER_PATTERN (src);
--- 1733,1739 ----
    /* Support scalable const series vector.  */
    rtx base, step;
    if (const_vec_series_p (src, &base, &step))
!     return expand_const_vec_series (target, base, step);
  
    /* Handle variable-length vector.  */
    unsigned int nelts_per_pattern = CONST_VECTOR_NELTS_PER_PATTERN (src);
*************** get_nf (machine_mode mode)
*** 2071,2078 ****
    return mode_vtype_infos.nf[mode];
  }
  
! /* Return the subpart mode of the tuple mode. For RVVM2x2SImode,
!    the subpart mode is RVVM2SImode. This will help to build
     array/struct type in builtins.  */
  machine_mode
  get_subpart_mode (machine_mode mode)
--- 2070,2077 ----
    return mode_vtype_infos.nf[mode];
  }
  
! /* Return the subpart mode of the tuple mode.  For RVVM2x2SImode,
!    the subpart mode is RVVM2SImode.  This will help to build
     array/struct type in builtins.  */
  machine_mode
  get_subpart_mode (machine_mode mode)
*************** get_ma (rtx ma)
*** 2132,2138 ****
    return INTVAL (ma);
  }
  
! /* Get prefer tail policy.  */
  enum tail_policy
  get_prefer_tail_policy ()
  {
--- 2131,2137 ----
    return INTVAL (ma);
  }
  
! /* Get preferred tail policy.  */
  enum tail_policy
  get_prefer_tail_policy ()
  {
*************** get_prefer_tail_policy ()
*** 2141,2147 ****
    return TAIL_ANY;
  }
  
! /* Get prefer mask policy.  */
  enum mask_policy
  get_prefer_mask_policy ()
  {
--- 2140,2146 ----
    return TAIL_ANY;
  }
  
! /* Get preferred mask policy.  */
  enum mask_policy
  get_prefer_mask_policy ()
  {
*************** expand_vec_init (rtx target, rtx vals)
*** 2937,2943 ****
    /* Optimize trailing same elements sequence:
        v = {y, y2, y3, y4, y5, x, x, x, x, x, x, x, x, x, x, x};  */
    if (!expand_vector_init_trailing_same_elem (target, v, nelts))
!     /* Handle common situation by vslide1down. This function can handle any
         situation of vec_init<mode>. Only the cases that are not optimized above
         will fall through here.  */
      expand_vector_init_insert_elems (target, v, nelts);
--- 2936,2942 ----
    /* Optimize trailing same elements sequence:
        v = {y, y2, y3, y4, y5, x, x, x, x, x, x, x, x, x, x, x};  */
    if (!expand_vector_init_trailing_same_elem (target, v, nelts))
!     /* Handle common situation by vslide1down.  This function can handle any
         situation of vec_init<mode>. Only the cases that are not optimized above
         will fall through here.  */
      expand_vector_init_insert_elems (target, v, nelts);
*************** expand_vec_perm (rtx target, rtx op0, rt
*** 3299,3307 ****
    machine_mode sel_mode = GET_MODE (sel);
    poly_uint64 nunits = GET_MODE_NUNITS (sel_mode);
  
!   /* Check if the sel only references the first values vector. If each select
       index is in range of [0, nunits - 1]. A single vrgather instructions is
!      enough. Since we will use vrgatherei16.vv for variable-length vector,
       it is never out of range and we don't need to modulo the index.  */
    if (nunits.is_constant () && const_vec_all_in_range_p (sel, 0, nunits - 1))
      {
--- 3298,3306 ----
    machine_mode sel_mode = GET_MODE (sel);
    poly_uint64 nunits = GET_MODE_NUNITS (sel_mode);
  
!   /* Check if the sel only references the first values vector.  If each select
       index is in range of [0, nunits - 1]. A single vrgather instructions is
!      enough.  Since we will use vrgatherei16.vv for variable-length vector,
       it is never out of range and we don't need to modulo the index.  */
    if (nunits.is_constant () && const_vec_all_in_range_p (sel, 0, nunits - 1))
      {
*************** expand_vec_perm (rtx target, rtx op0, rt
*** 3321,3326 ****
--- 3320,3326 ----
  	  op = op1;
  	}
        emit_vlmax_gather_insn (target, op, sel);
+       return;
      }
  
    /* Note: vec_perm indices are supposed to wrap when they go beyond the
*************** get_gather_index_mode (struct expand_vec
*** 3419,3425 ****
  }
  
  /* Recognize the patterns that we can use merge operation to shuffle the
!    vectors. The value of Each element (index i) in selector can only be
     either i or nunits + i.  We will check the pattern is actually monotonic.
  
     E.g.
--- 3419,3425 ----
  }
  
  /* Recognize the patterns that we can use merge operation to shuffle the
!    vectors.  The value of Each element (index i) in selector can only be
     either i or nunits + i.  We will check the pattern is actually monotonic.
  
     E.g.
*************** shuffle_consecutive_patterns (struct exp
*** 3616,3622 ****
  }
  
  /* Recognize the patterns that we can use compress operation to shuffle the
!    vectors. The perm selector of compress pattern is divided into 2 part:
     The first part is the random index number < NUNITS.
     The second part is consecutive last N index number >= NUNITS.
  
--- 3616,3622 ----
  }
  
  /* Recognize the patterns that we can use compress operation to shuffle the
!    vectors.  The perm selector of compress pattern is divided into 2 part:
     The first part is the random index number < NUNITS.
     The second part is consecutive last N index number >= NUNITS.
  
*************** shuffle_slide_patterns (struct expand_ve
*** 3858,3864 ****
       skip/slide over.  For a slidedown it indicates how long
       OP1's high part is, while the first element is the amount to slide.  */
    insn_code icode;
!   int slide_cnt = slideup ? pivot : d->perm[0].to_constant();
    if (slideup)
      {
        rtx ops[] = {d->target, d->op0, d->op1, gen_int_mode (slide_cnt, Pmode)};
--- 3858,3864 ----
       skip/slide over.  For a slidedown it indicates how long
       OP1's high part is, while the first element is the amount to slide.  */
    insn_code icode;
!   int slide_cnt = slideup ? pivot : d->perm[0].to_constant ();
    if (slideup)
      {
        rtx ops[] = {d->target, d->op0, d->op1, gen_int_mode (slide_cnt, Pmode)};
*************** shuffle_decompress_patterns (struct expa
*** 4087,4093 ****
    poly_uint64 nelt = d->perm.length ();
    machine_mode mask_mode = get_mask_mode (d->vmode);
  
!   /* For constant size indices, we dont't need to handle it here.
       Just leave it to vec_perm<mode>.  */
    if (d->perm.length ().is_constant ())
      return false;
--- 4087,4093 ----
    poly_uint64 nelt = d->perm.length ();
    machine_mode mask_mode = get_mask_mode (d->vmode);
  
!   /* For constant size indices, we don't need to handle it here.
       Just leave it to vec_perm<mode>.  */
    if (d->perm.length ().is_constant ())
      return false;
*************** shuffle_bswap_pattern (struct expand_vec
*** 4157,4163 ****
      case 32:
      case 64:
        /* We will have VEC_PERM_EXPR after rtl expand when invoking
! 	 __builtin_bswap. It will generate about 9 instructions in
  	 loop as below, no matter it is bswap16, bswap32 or bswap64.
  	   .L2:
  	 1 vle16.v v4,0(a0)
--- 4157,4163 ----
      case 32:
      case 64:
        /* We will have VEC_PERM_EXPR after rtl expand when invoking
! 	 __builtin_bswap.  It will generate about 9 instructions in
  	 loop as below, no matter it is bswap16, bswap32 or bswap64.
  	   .L2:
  	 1 vle16.v v4,0(a0)
*************** shuffle_bswap_pattern (struct expand_vec
*** 4171,4177 ****
  	 9 add     a3,a3,a2
  	   bne     a4,zero,.L2
  
! 	 But for bswap16 we may have a even simple code gen, which
  	 has only 7 instructions in loop as below.
  	   .L5
  	 1 vle8.v  v2,0(a5)
--- 4171,4177 ----
  	 9 add     a3,a3,a2
  	   bne     a4,zero,.L2
  
! 	 But for bswap16 we may have an even simple code gen, which
  	 has only 7 instructions in loop as below.
  	   .L5
  	 1 vle8.v  v2,0(a5)
*************** shuffle_generic_patterns (struct expand_
*** 4396,4402 ****
    machine_mode sel_mode;
  
    /* We don't enable SLP for non-power of 2 NPATTERNS.  */
!   if (!pow2p_hwi (d->perm.encoding().npatterns ()))
      return false;
  
    /* Disable shuffle if we can't find an appropriate integer index mode for
--- 4396,4402 ----
    machine_mode sel_mode;
  
    /* We don't enable SLP for non-power of 2 NPATTERNS.  */
!   if (!pow2p_hwi (d->perm.encoding ().npatterns ()))
      return false;
  
    /* Disable shuffle if we can't find an appropriate integer index mode for
*************** expand_vec_perm_const (machine_mode vmod
*** 4484,4490 ****
  		       rtx op0, rtx op1, const vec_perm_indices &sel)
  {
    /* RVV doesn't have Mask type pack/unpack instructions and we don't use
!      mask to do the iteration loop control. Just disable it directly.  */
    if (GET_MODE_CLASS (vmode) == MODE_VECTOR_BOOL)
      return false;
  
--- 4484,4490 ----
  		       rtx op0, rtx op1, const vec_perm_indices &sel)
  {
    /* RVV doesn't have Mask type pack/unpack instructions and we don't use
!      mask to do the iteration loop control.  Just disable it directly.  */
    if (GET_MODE_CLASS (vmode) == MODE_VECTOR_BOOL)
      return false;
  
*************** expand_select_vl (rtx *ops)
*** 4544,4550 ****
        return;
      }
    /* We arbitrary picked QImode as inner scalar mode to get vector mode.
!      since vsetvl only demand ratio. We let VSETVL PASS to optimize it.  */
    scalar_int_mode mode = QImode;
    machine_mode rvv_mode = get_vector_mode (mode, nunits).require ();
    emit_insn (gen_no_side_effects_vsetvl_rtx (rvv_mode, ops[0], ops[1]));
--- 4544,4550 ----
        return;
      }
    /* We arbitrary picked QImode as inner scalar mode to get vector mode.
!      since vsetvl only demand ratio.  We let VSETVL PASS to optimize it.  */
    scalar_int_mode mode = QImode;
    machine_mode rvv_mode = get_vector_mode (mode, nunits).require ();
    emit_insn (gen_no_side_effects_vsetvl_rtx (rvv_mode, ops[0], ops[1]));
*************** cmp_lmul_gt_one (machine_mode mode)
*** 5204,5210 ****
    return false;
  }
  
! /* Return true if the VLS mode is legal. There are 2 cases here.
  
     1. Enable VLS modes for VLA vectorization since fixed length VLMAX mode
        is the highest priority choice and should not conflict with VLS modes.
--- 5204,5210 ----
    return false;
  }
  
! /* Return true if the VLS mode is legal.  There are 2 cases here.
  
     1. Enable VLS modes for VLA vectorization since fixed length VLMAX mode
        is the highest priority choice and should not conflict with VLS modes.
*************** vls_mode_valid_p (machine_mode mode, boo
*** 5309,5315 ****
  }
  
  /* We don't have to convert the floating point to integer when the
!    mantissa is zero.  Thus, ther will be a limitation for both the
     single and double precision floating point.  There will be no
     mantissa if the floating point is greater than the limit.
  
--- 5309,5315 ----
  }
  
  /* We don't have to convert the floating point to integer when the
!    mantissa is zero.  Thus, there will be a limitation for both the
     single and double precision floating point.  There will be no
     mantissa if the floating point is greater than the limit.
  
*************** expand_vec_ssadd (rtx op_0, rtx op_1, rt
*** 5754,5761 ****
    emit_vec_binary_alu (op_0, op_1, op_2, SS_PLUS, vec_mode);
  }
  
! /* Expand the standard name usadd<mode>3 for vector mode,  we can leverage
!    the vector fixed point vector single-width saturating add directly.  */
  
  void
  expand_vec_ussub (rtx op_0, rtx op_1, rtx op_2, machine_mode vec_mode)
--- 5754,5761 ----
    emit_vec_binary_alu (op_0, op_1, op_2, SS_PLUS, vec_mode);
  }
  
! /* Expand the standard name ussub<mode>3 for vector mode,  we can leverage
!    the vector fixed point vector single-width saturating subtract directly.  */
  
  void
  expand_vec_ussub (rtx op_0, rtx op_1, rtx op_2, machine_mode vec_mode)
*************** expand_vec_double_sstrunc (rtx op_0, rtx
*** 5804,5810 ****
    emit_vlmax_insn (icode, BINARY_OP_VXRM_RNU, ops);
  }
  
! /* Expand the standard name ustrunc<m><n>2 for double vector mode,  like
     DI => HI.  we can leverage the vector fixed point vector narrowing
     fixed-point clip directly.  */
  
--- 5804,5810 ----
    emit_vlmax_insn (icode, BINARY_OP_VXRM_RNU, ops);
  }
  
! /* Expand the standard name ustrunc<m><n>2 for quad vector mode,  like
     DI => HI.  we can leverage the vector fixed point vector narrowing
     fixed-point clip directly.  */
  
*************** vlmax_avl_type_p (rtx_insn *rinsn)
*** 6143,6149 ****
    return INTVAL (avl_type) == VLMAX;
  }
  
! /* Return true if it is an RVV instruction depends on VL global
     status register.  */
  bool
  has_vl_op (rtx_insn *rinsn)
--- 6143,6149 ----
    return INTVAL (avl_type) == VLMAX;
  }
  
! /* Return true if it is an RVV instruction that depends on VL global
     status register.  */
  bool
  has_vl_op (rtx_insn *rinsn)
*************** has_vl_op (rtx_insn *rinsn)
*** 6155,6162 ****
  static bool
  get_default_ta ()
  {
!   /* For the instruction that doesn't require TA, we still need a default value
!      to emit vsetvl. We pick up the default value according to prefer policy. */
    return (bool) (get_prefer_tail_policy () & 0x1
  		 || (get_prefer_tail_policy () >> 1 & 0x1));
  }
--- 6155,6163 ----
  static bool
  get_default_ta ()
  {
!   /* For the instruction that does not require TA, we still need a default
!      value to emit vsetvl.  We pick up the default value according to
!      preferred policy.  */
    return (bool) (get_prefer_tail_policy () & 0x1
  		 || (get_prefer_tail_policy () >> 1 & 0x1));
  }
*************** vlmax_avl_p (rtx x)
*** 6201,6207 ****
    return x && rtx_equal_p (x, RVV_VLMAX);
  }
  
! /* Helper function to get SEW operand. We always have SEW value for
     all RVV instructions that have VTYPE OP.  */
  uint8_t
  get_sew (rtx_insn *rinsn)
--- 6202,6208 ----
    return x && rtx_equal_p (x, RVV_VLMAX);
  }
  
! /* Helper function to get SEW operand.  We always have SEW value for
     all RVV instructions that have VTYPE OP.  */
  uint8_t
  get_sew (rtx_insn *rinsn)
*************** get_sew (rtx_insn *rinsn)
*** 6209,6215 ****
    return get_attr_sew (rinsn);
  }
  
! /* Helper function to get VLMUL operand. We always have VLMUL value for
     all RVV instructions that have VTYPE OP. */
  enum vlmul_type
  get_vlmul (rtx_insn *rinsn)
--- 6210,6216 ----
    return get_attr_sew (rinsn);
  }
  
! /* Helper function to get VLMUL operand.  We always have VLMUL value for
     all RVV instructions that have VTYPE OP. */
  enum vlmul_type
  get_vlmul (rtx_insn *rinsn)
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-v.h gcc-17-20260607/gcc/config/riscv/riscv-v.h
*** gcc-17-20260531/gcc/config/riscv/riscv-v.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-v.h	Sun Jun  7 22:32:06 2026
*************** private:
*** 83,89 ****
    unsigned int m_inner_bytes_size;
  };
  
! extern bool valid_vec_immediate_p(rtx);
  
  } // namespace riscv_vector
  
--- 83,89 ----
    unsigned int m_inner_bytes_size;
  };
  
! extern bool valid_vec_immediate_p (rtx);
  
  } // namespace riscv_vector
  
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vect-permconst.cc gcc-17-20260607/gcc/config/riscv/riscv-vect-permconst.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-vect-permconst.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vect-permconst.cc	Sun Jun  7 22:32:06 2026
*************** This file is part of GCC.
*** 4,10 ****
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3, or(at your option)
  any later version.
  
  GCC is distributed in the hope that it will be useful,
--- 4,10 ----
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3, or (at your option)
  any later version.
  
  GCC is distributed in the hope that it will be useful,
*************** vector_permconst::process_bb (basic_bloc
*** 177,183 ****
  	continue;
  
        /* A load from the constant pool should have a REG_EQUAL
! 	 note with the vector contant in the note.  */
        rtx note = find_reg_equal_equiv_note (insn);
        if (!note
  	  || REG_NOTE_KIND (note) != REG_EQUAL
--- 177,183 ----
  	continue;
  
        /* A load from the constant pool should have a REG_EQUAL
! 	 note with the vector constant in the note.  */
        rtx note = find_reg_equal_equiv_note (insn);
        if (!note
  	  || REG_NOTE_KIND (note) != REG_EQUAL
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins-bases.cc gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-bases.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins-bases.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-bases.cc	Sun Jun  7 22:32:06 2026
*************** public:
*** 90,96 ****
        }
      else
        {
! 	/* Normalize same RATO (SEW/LMUL) into same vsetvl instruction.
  
  	     - e8,mf8/e16,mf4/e32,mf2/e64,m1 --> e8mf8
  	     - e8,mf4/e16,mf2/e32,m1/e64,m2  --> e8mf4
--- 90,96 ----
        }
      else
        {
! 	/* Normalize same RATIO (SEW/LMUL) into same vsetvl instruction.
  
  	     - e8,mf8/e16,mf4/e32,mf2/e64,m1 --> e8mf8
  	     - e8,mf4/e16,mf2/e32,m1/e64,m2  --> e8mf4
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins-functions.def gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-functions.def
*** gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins-functions.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-functions.def	Sun Jun  7 22:32:06 2026
*************** any later version.
*** 11,21 ****
  
  GCC is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
! along with GCC; see the file COPYING3. If not see
  <http://www.gnu.org/licenses/>. */
  
  /* Use "DEF_RVV_FUNCTION" macro to define RVV intrinsic functions.
--- 11,21 ----
  
  GCC is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
! along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>. */
  
  /* Use "DEF_RVV_FUNCTION" macro to define RVV intrinsic functions.
*************** DEF_RVV_FUNCTION (vlenb, vlenb, none_pre
*** 106,112 ****
  DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops)
  DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops)
  
! /* 7. Vector Loads and Stores. */
  
  // 7.4. Vector Unit-Stride Instructions
  DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops)
--- 106,112 ----
  DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops)
  DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops)
  
! /* 7.  Vector Loads and Stores.  */
  
  // 7.4. Vector Unit-Stride Instructions
  DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops)
*************** DEF_RVV_FUNCTION (vmerge, no_mask_policy
*** 299,305 ****
  DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops)
  DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops)
  
! /* 12. Vector Fixed-Point Arithmetic Instructions. */
  
  // 12.1. Vector Single-Width Saturating Add and Subtract
  DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops)
--- 299,305 ----
  DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops)
  DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops)
  
! /* 12.  Vector Fixed-Point Arithmetic Instructions.  */
  
  // 12.1. Vector Single-Width Saturating Add and Subtract
  DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops)
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins-shapes.cc gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-shapes.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins-shapes.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-shapes.cc	Sun Jun  7 22:32:06 2026
*************** supports_vectype_p (const function_group
*** 105,111 ****
  /* Add a function instance for every operand && predicate && args
     combination in GROUP.  Take the function base name from GROUP && operand
     suffix from operand_suffixes && mode suffix from type_suffixes && predication
!    suffix from predication_suffixes. Use apply_predication to add in
     the predicate.  */
  static void
  build_all (function_builder &b, const function_group_info &group)
--- 105,111 ----
  /* Add a function instance for every operand && predicate && args
     combination in GROUP.  Take the function base name from GROUP && operand
     suffix from operand_suffixes && mode suffix from type_suffixes && predication
!    suffix from predication_suffixes.  Use apply_predication to add in
     the predicate.  */
  static void
  build_all (function_builder &b, const function_group_info &group)
*************** struct reduc_alu_frm_def : public build_
*** 608,614 ****
    }
  };
  
! /* widen_alu_def class. Handle vwadd/vwsub. Unlike
     vadd.vx/vadd.vv/vwmul.vv/vwmul.vx, vwadd.vv/vwadd.vx/vwadd.wv/vwadd.wx has
     'OP' suffix in overloaded API.  */
  struct widen_alu_def : public build_base
--- 608,614 ----
    }
  };
  
! /* widen_alu_def class.  Handle vwadd/vwsub.  Unlike
     vadd.vx/vadd.vv/vwmul.vv/vwmul.vx, vwadd.vv/vwadd.vx/vwadd.wv/vwadd.wx has
     'OP' suffix in overloaded API.  */
  struct widen_alu_def : public build_base
*************** struct widen_alu_def : public build_base
*** 634,640 ****
    }
  };
  
! /* no_mask_policy_def class. Such instructions belong to this class
     doesn't need mask policy.  */
  struct no_mask_policy_def : public build_base
  {
--- 634,640 ----
    }
  };
  
! /* no_mask_policy_def class.  Such instructions belong to this class
     doesn't need mask policy.  */
  struct no_mask_policy_def : public build_base
  {
*************** struct no_mask_policy_def : public build
*** 655,661 ****
    }
  };
  
! /* return_mask_def class. Such instructions belong to this class
     is returning mask value.  */
  struct return_mask_def : public build_base
  {
--- 655,661 ----
    }
  };
  
! /* return_mask_def class.  Such instructions belong to this class
     is returning mask value.  */
  struct return_mask_def : public build_base
  {
*************** struct return_mask_def : public build_ba
*** 683,689 ****
    }
  };
  
! /* narrow_alu_def class. Handle narrowing instructions like vnsrl.wv.  */
  struct narrow_alu_def : public build_base
  {
    char *get_name (function_builder &b, const function_instance &instance,
--- 683,689 ----
    }
  };
  
! /* narrow_alu_def class.  Handle narrowing instructions like vnsrl.wv.  */
  struct narrow_alu_def : public build_base
  {
    char *get_name (function_builder &b, const function_instance &instance,
*************** struct narrow_alu_def : public build_bas
*** 726,732 ****
    }
  };
  
! /* move_def class. Handle vmv.v.v/vmv.v.x.  */
  struct move_def : public build_base
  {
    char *get_name (function_builder &b, const function_instance &instance,
--- 726,732 ----
    }
  };
  
! /* move_def class.  Handle vmv.v.v/vmv.v.x.  */
  struct move_def : public build_base
  {
    char *get_name (function_builder &b, const function_instance &instance,
*************** struct sf_vqmacc_def : public build_base
*** 1320,1326 ****
    }
  };
  
! /* sf_vfnrclip_def class. Handle instructions like vfnrclip.  */
  struct sf_vfnrclip_def : public build_base
  {
    char *get_name (function_builder &b, const function_instance &instance,
--- 1320,1326 ----
    }
  };
  
! /* sf_vfnrclip_def class.  Handle instructions like vfnrclip.  */
  struct sf_vfnrclip_def : public build_base
  {
    char *get_name (function_builder &b, const function_instance &instance,
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins-types.def gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-types.def
*** gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins-types.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins-types.def	Sun Jun  7 22:32:06 2026
*************** any later version.
*** 11,21 ****
  
  GCC is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
! along with GCC; see the file COPYING3. If not see
  <http://www.gnu.org/licenses/>. */
  
  /* Use "DEF_RVV_I_OPS" macro include all signed integer which will be
--- 11,21 ----
  
  GCC is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
! along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>. */
  
  /* Use "DEF_RVV_I_OPS" macro include all signed integer which will be
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins.cc gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins.cc	Sun Jun  7 22:32:06 2026
*************** namespace riscv_vector {
*** 62,71 ****
  struct vector_type_info
  {
    /* The name of the type as declared by riscv_vector.h
!      which is recommend to use. For example: 'vint32m1_t'.  */
    const char *name;
  
!   /* ABI name of vector type. The type is always available
       under this name, even when riscv_vector.h isn't included.
       For example:  '__rvv_int32m1_t'.  */
    const char *abi_name;
--- 62,71 ----
  struct vector_type_info
  {
    /* The name of the type as declared by riscv_vector.h
!      which is recommended to use.  For example: 'vint32m1_t'.  */
    const char *name;
  
!   /* ABI name of vector type.  The type is always available
       under this name, even when riscv_vector.h isn't included.
       For example:  '__rvv_int32m1_t'.  */
    const char *abi_name;
*************** public:
*** 84,108 ****
    tree GTY ((skip)) decl;
  
    /* The overload hash of non-overloaded intrinsic is determined by
!      the overload name and argument list. Adding the overload name to
       the hash is also to address the following situations:
       vint16mf4_t  __riscv_vreinterpret_i16mf4 (vfloat16mf4_t src);
       vuint16mf4_t __riscv_vreinterpret_u16mf4 (vfloat16mf4_t src);
       The base, shape and argument list of the vreinterpret instance are
!      the same, only the overload name is different. Therefore, it is
!      enough to add overload_name and argument list to the hash value.*/
    const char *overload_name;
  
!   /* The argument list part of the hash value. Add the unsigned/signed type
!      and machine mode of each argument to the hash value. */
    vec<tree> GTY ((skip)) argument_types;
  
    /* True if the decl represents an overloaded function that needs to be
!      resolved. */
    bool overloaded_p;
  
!   /* The hash value to indicate the non-overloaded function. Generate hash value
!      based on overload_name and argument_types. */
    hashval_t overloaded_hash () const;
  
    /* Generate hash value based on the overload_name and the argument list passed
--- 84,108 ----
    tree GTY ((skip)) decl;
  
    /* The overload hash of non-overloaded intrinsic is determined by
!      the overload name and argument list.  Adding the overload name to
       the hash is also to address the following situations:
       vint16mf4_t  __riscv_vreinterpret_i16mf4 (vfloat16mf4_t src);
       vuint16mf4_t __riscv_vreinterpret_u16mf4 (vfloat16mf4_t src);
       The base, shape and argument list of the vreinterpret instance are
!      the same, only the overload name is different.  Therefore, it is
!      enough to add overload_name and argument list to the hash value.  */
    const char *overload_name;
  
!   /* The argument list part of the hash value.  Add the unsigned/signed type
!      and machine mode of each argument to the hash value.  */
    vec<tree> GTY ((skip)) argument_types;
  
    /* True if the decl represents an overloaded function that needs to be
!      resolved.  */
    bool overloaded_p;
  
!   /* The hash value to indicate the non-overloaded function.  Generate hash
!      value based on overload_name and argument_types.  */
    hashval_t overloaded_hash () const;
  
    /* Generate hash value based on the overload_name and the argument list passed
*************** get_builtin_partition (required_ext ext,
*** 3654,3659 ****
--- 3654,3661 ----
        return RVV_PARTITION_ZVFBFMIN;
      case ZVFBFWMA_EXT:
        return RVV_PARTITION_ZVFBFWMA;
+     case ZVFOFP8MIN_EXT:
+       return RVV_PARTITION_ZVFOFP8MIN;
      case XSFVQMACCQOQ_EXT:
        return RVV_PARTITION_XSFVQMACCQOQ;
      case XSFVQMACCDOD_EXT:
*************** struct pragma_intrinsic_flags
*** 3699,3709 ****
  static void
  riscv_pragma_intrinsic_flags_pollute (struct pragma_intrinsic_flags *flags)
  {
!   /* We already defer the required extension checking to expantion time, so we
       only need to pollute those flags that might affect the type registration.
  
       e.g. zvfbmin and zvfhmin are required to define the vector bf16 and f16,
! 	  and VECTOR_ELEN* also required for vector interger and floating
  	  type.  */
    flags->intrinsic_riscv_isa_flags = riscv_isa_flags;
    flags->intrinsic_riscv_base_subext = riscv_base_subext;
--- 3701,3711 ----
  static void
  riscv_pragma_intrinsic_flags_pollute (struct pragma_intrinsic_flags *flags)
  {
!   /* We already defer the required extension checking to expansion time, so we
       only need to pollute those flags that might affect the type registration.
  
       e.g. zvfbmin and zvfhmin are required to define the vector bf16 and f16,
! 	  and VECTOR_ELEN* also required for vector integer and floating
  	  type.  */
    flags->intrinsic_riscv_isa_flags = riscv_isa_flags;
    flags->intrinsic_riscv_base_subext = riscv_base_subext;
*************** riscv_pragma_intrinsic_flags_restore (st
*** 3754,3763 ****
  /* RAII class for enabling enough RVV features to define the built-in
     types and implement the riscv_vector.h pragma.
  
!    Note: According to 'TYPE_MODE' macro implementation, we need set
     have_regs_of_mode[mode] to be true if we want to get the exact mode
!    from 'TYPE_MODE'. However, have_regs_of_mode has not been set yet in
!    targetm.init_builtins (). We need rvv_switcher to set have_regs_of_mode
     before targetm.init_builtins () and recover back have_regs_of_mode
     after targetm.init_builtins ().  */
  class rvv_switcher
--- 3756,3765 ----
  /* RAII class for enabling enough RVV features to define the built-in
     types and implement the riscv_vector.h pragma.
  
!    Note: According to 'TYPE_MODE' macro implementation, we need to set
     have_regs_of_mode[mode] to be true if we want to get the exact mode
!    from 'TYPE_MODE'.  However, have_regs_of_mode has not been set yet in
!    targetm.init_builtins ().  We need rvv_switcher to set have_regs_of_mode
     before targetm.init_builtins () and recover back have_regs_of_mode
     after targetm.init_builtins ().  */
  class rvv_switcher
*************** register_builtin_type (vector_type_index
*** 3884,3890 ****
    builtin_types[type].scalar_const_ptr = build_const_pointer (eltype);
    /* TODO: We currently just skip the register of the illegal RVV type.
       Ideally, we should report error message more friendly instead of
!      reporting "unknown" type. Support more friendly error message in
       the future.  */
    if (!riscv_vla_mode_p (mode))
      return;
--- 3886,3892 ----
    builtin_types[type].scalar_const_ptr = build_const_pointer (eltype);
    /* TODO: We currently just skip the register of the illegal RVV type.
       Ideally, we should report error message more friendly instead of
!      reporting "unknown" type.  Support more friendly error message in
       the future.  */
    if (!riscv_vla_mode_p (mode))
      return;
*************** register_tuple_type (vector_type_index t
*** 3912,3918 ****
  {
    /* TODO: We currently just skip the register of the illegal RVV type.
      Ideally, we should report error message more friendly instead of
!     reporting "unknown" type. Support more friendly error message in
      the future.  */
    if (!abi_vector_types[subpart_type])
      return;
--- 3914,3920 ----
  {
    /* TODO: We currently just skip the register of the illegal RVV type.
      Ideally, we should report error message more friendly instead of
!     reporting "unknown" type.  Support more friendly error message in
      the future.  */
    if (!abi_vector_types[subpart_type])
      return;
*************** register_vector_type (vector_type_index
*** 4024,4030 ****
       is disabled according to '-march'.  */
    /* TODO: We currently just skip the register of the illegal RVV type.
       Ideally, we should report error message more friendly instead of
!      reporting "unknown" type. Support more friendly error message in
       the future.  */
    if (!vectype)
      return;
--- 4026,4032 ----
       is disabled according to '-march'.  */
    /* TODO: We currently just skip the register of the illegal RVV type.
       Ideally, we should report error message more friendly instead of
!      reporting "unknown" type.  Support more friendly error message in
       the future.  */
    if (!vectype)
      return;
*************** required_extensions_p (enum rvv_base_typ
*** 4095,4101 ****
  
  /* Check whether all the RVV_REQUIRE_* values in REQUIRED_EXTENSIONS are
     enabled.
!    TODO: We defer the required extensions to expantion time, this function is
  	 only doing the legality now, and we may rename this function and moving
  	 to another layer.  */
  static bool
--- 4097,4103 ----
  
  /* Check whether all the RVV_REQUIRE_* values in REQUIRED_EXTENSIONS are
     enabled.
!    TODO: We defer the required extensions to expansion time, this function is
  	 only doing the legality now, and we may rename this function and moving
  	 to another layer.  */
  static bool
*************** use_real_merge_p (enum predication_type_
*** 4141,4148 ****
  	 || pred == PRED_TYPE_mu;
  }
  
! /* Get TAIL policy for predication. If predication indicates TU, return the TU.
!    Otherwise, return the prefer default configuration.  */
  static rtx
  get_tail_policy_for_pred (enum predication_type_index pred)
  {
--- 4143,4150 ----
  	 || pred == PRED_TYPE_mu;
  }
  
! /* Get TAIL policy for predication.  If predication indicates TU, return the TU.
!    Otherwise, return the preferred default configuration.  */
  static rtx
  get_tail_policy_for_pred (enum predication_type_index pred)
  {
*************** get_tail_policy_for_pred (enum predicati
*** 4151,4158 ****
    return gen_int_mode (get_prefer_tail_policy (), Pmode);
  }
  
! /* Get MASK policy for predication. If predication indicates MU, return the MU.
!    Otherwise, return the prefer default configuration.  */
  static rtx
  get_mask_policy_for_pred (enum predication_type_index pred)
  {
--- 4153,4160 ----
    return gen_int_mode (get_prefer_tail_policy (), Pmode);
  }
  
! /* Get MASK policy for predication.  If predication indicates MU, return the MU.
!    Otherwise, return the preferred default configuration.  */
  static rtx
  get_mask_policy_for_pred (enum predication_type_index pred)
  {
*************** tree
*** 4227,4234 ****
  rvv_arg_type_info::get_tree_type (vector_type_index type_idx) const
  {
    /* If the builtin type is not registered means '-march' doesn't
!      satisfy the require extension of the type. For example,
!      vfloat32m1_t require floating-point extension. In this case,
       just return NULL_TREE.  */
    if (type_idx != VECTOR_TYPE_INVALID && !builtin_types[type_idx].vector)
      return NULL_TREE;
--- 4229,4236 ----
  rvv_arg_type_info::get_tree_type (vector_type_index type_idx) const
  {
    /* If the builtin type is not registered means '-march' doesn't
!      satisfy the require extension of the type.  For example,
!      vfloat32m1_t require floating-point extension.  In this case,
       just return NULL_TREE.  */
    if (type_idx != VECTOR_TYPE_INVALID && !builtin_types[type_idx].vector)
      return NULL_TREE;
*************** function_builder::add_function (const fu
*** 4580,4590 ****
  
       Currently, tree-streamer-in.c:unpack_ts_function_decl_value_fields
       validates that tree nodes returned by TARGET_BUILTIN_DECL are non-NULL and
!      some node other than error_mark_node. This is a holdover from when builtin
       decls were streamed by code rather than by value.
  
       Ultimately, we should be able to remove this validation of BUILT_IN_MD
!      nodes and remove the target hook. For now, however, we need to appease the
       validation and return a non-NULL, non-error_mark_node node, so we
       arbitrarily choose integer_zero_node.  */
    tree decl = in_lto_p
--- 4582,4592 ----
  
       Currently, tree-streamer-in.c:unpack_ts_function_decl_value_fields
       validates that tree nodes returned by TARGET_BUILTIN_DECL are non-NULL and
!      some node other than error_mark_node.  This is a holdover from when builtin
       decls were streamed by code rather than by value.
  
       Ultimately, we should be able to remove this validation of BUILT_IN_MD
!      nodes and remove the target hook.  For now, however, we need to appease the
       validation and return a non-NULL, non-error_mark_node node, so we
       arbitrarily choose integer_zero_node.  */
    tree decl = in_lto_p
*************** function_builder::add_function (const fu
*** 4612,4620 ****
  }
  
  /* Add a built-in function for INSTANCE, with the argument types given
!    by ARGUMENT_TYPES and the return type given by RETURN_TYPE. NAME is
!    the "full" name for C function. OVERLOAD_NAME is the "short" name for
!    C++ overloaded function. OVERLOAD_NAME can be nullptr because some
     instance doesn't have C++ overloaded function.  */
  void
  function_builder::add_unique_function (const function_instance &instance,
--- 4614,4622 ----
  }
  
  /* Add a built-in function for INSTANCE, with the argument types given
!    by ARGUMENT_TYPES and the return type given by RETURN_TYPE.  NAME is
!    the "full" name for C function.  OVERLOAD_NAME is the "short" name for
!    C++ overloaded function.  OVERLOAD_NAME can be nullptr because some
     instance doesn't have C++ overloaded function.  */
  void
  function_builder::add_unique_function (const function_instance &instance,
*************** function_expander::add_input_operand (un
*** 4757,4764 ****
    add_input_operand (TYPE_MODE (TREE_TYPE (arg)), x);
  }
  
! /* Since we may normalize vop/vop_tu/vop_m/vop_tumu.. into a single patter.
!    We add a undef for the intrinsics that don't need a real merge.  */
  void
  function_expander::add_vundef_operand (machine_mode mode)
  {
--- 4759,4766 ----
    add_input_operand (TYPE_MODE (TREE_TYPE (arg)), x);
  }
  
! /* Since we may normalize vop/vop_tu/vop_m/vop_tumu.. into a single pattern.
!    We add an undef for the intrinsics that don't need a real merge.  */
  void
  function_expander::add_vundef_operand (machine_mode mode)
  {
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins.def gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins.def
*** gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins.def	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 19,40 ****
  <http://www.gnu.org/licenses/>.  */
  
  /* Use "DEF_RVV_TYPE" macro to define RVV datatype builtins.
!    1.The 'NAME' argument is the name exposed to users.
       For example, "vint32m1_t".
!    2.The 'NCHARS' argument is the length of ABI-name.
       For example, length of "__rvv_int32m1_t" is 15.
!    3.The 'ABI_NAME' argument is the ABI-name. For example, "__rvv_int32m1_t".
!    4.The 'SCALAR_TYPE' argument is associated scalar type which is used in
!      "build_vector_type_for_mode". For "vint32m1_t", we use "intSI_type_node" in
!      RV64. Otherwise, we use "long_integer_type_node".
!    5.The 'VECTOR_MODE' is the machine modes of corresponding RVV type used
       in "build_vector_type_for_mode".
       For example: VECTOR_MODE = RVVM1SImode for "vint32m1_t".
!    6.The 'VECTOR_SUFFIX' define mode suffix for vector type.
       For example: type_suffixes[VECTOR_TYPE_vin32m1_t].vector = i32m1.
!    7.The 'SCALAR_SUFFIX' define mode suffix for scalar type.
       For example: type_suffixes[VECTOR_TYPE_vin32m1_t].scalar = i32.
!    8.The 'VSETVL_SUFFIX' define mode suffix for vsetvli instruction.
       For example: type_suffixes[VECTOR_TYPE_vin32m1_t].vsetvl = e32m1.
  */
  
--- 19,40 ----
  <http://www.gnu.org/licenses/>.  */
  
  /* Use "DEF_RVV_TYPE" macro to define RVV datatype builtins.
!    1.  The 'NAME' argument is the name exposed to users.
       For example, "vint32m1_t".
!    2.  The 'NCHARS' argument is the length of ABI-name.
       For example, length of "__rvv_int32m1_t" is 15.
!    3.  The 'ABI_NAME' argument is the ABI-name.  For example, "__rvv_int32m1_t".
!    4.  The 'SCALAR_TYPE' argument is associated scalar type which is used in
!      "build_vector_type_for_mode".  For "vint32m1_t", we use "intSI_type_node"
!      in RV64.  Otherwise, we use "long_integer_type_node".
!    5.  The 'VECTOR_MODE' is the machine modes of corresponding RVV type used
       in "build_vector_type_for_mode".
       For example: VECTOR_MODE = RVVM1SImode for "vint32m1_t".
!    6.  The 'VECTOR_SUFFIX' define mode suffix for vector type.
       For example: type_suffixes[VECTOR_TYPE_vin32m1_t].vector = i32m1.
!    7.  The 'SCALAR_SUFFIX' define mode suffix for scalar type.
       For example: type_suffixes[VECTOR_TYPE_vin32m1_t].scalar = i32.
!    8.  The 'VSETVL_SUFFIX' define mode suffix for vsetvli instruction.
       For example: type_suffixes[VECTOR_TYPE_vin32m1_t].vsetvl = e32m1.
  */
  
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins.h gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins.h
*** gcc-17-20260531/gcc/config/riscv/riscv-vector-builtins.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vector-builtins.h	Sun Jun  7 22:32:06 2026
***************
*** 46,52 ****
     predication suffix stay the same.
  
     - The function_instance class describes contains all properties of each
!      individual function. Such these information will be used by
       function_builder, function_base, function_shape, gimple_folder,
       function_expander, etc.
  
--- 46,52 ----
     predication suffix stay the same.
  
     - The function_instance class describes contains all properties of each
!      individual function.  Such these information will be used by
       function_builder, function_base, function_shape, gimple_folder,
       function_expander, etc.
  
*************** static const unsigned int CP_WRITE_CSR =
*** 110,115 ****
--- 110,116 ----
  #define RVV_REQUIRE_MIN_VLEN_64 (1 << 5)	/* Require TARGET_MIN_VLEN >= 64.  */
  #define RVV_REQUIRE_ELEN_FP_16 (1 << 6) /* Require FP ELEN >= 32.  */
  #define RVV_REQUIRE_ELEN_BF_16 (1 << 7) /* Require BF16.  */
+ #define RVV_REQUIRE_ZVFOFP8MIN (1 << 8) /* Require ZVFOFP8MIN extension.  */
  
  /* Enumerates the required extensions.  */
  enum required_ext
*************** enum required_ext
*** 129,134 ****
--- 130,136 ----
    ZVKSH_EXT,		/* Crypto vector Zvksh sub-ext */
    ZVFBFMIN_EXT,		/* Zvfbfmin extension */
    ZVFBFWMA_EXT,		/* Zvfbfwma extension */
+   ZVFOFP8MIN_EXT,	/* Zvfofp8min extension */
    XSFVQMACCQOQ_EXT,	/* XSFVQMACCQOQ extension */
    XSFVQMACCDOD_EXT,	/* XSFVQMACCDOD extension */
    XSFVFNRCLIPXFQF_EXT,	/* XSFVFNRCLIPXFQF extension */
*************** enum rvv_builtin_partition
*** 159,164 ****
--- 161,167 ----
    RVV_PARTITION_ZVFBFWMA,
    RVV_PARTITION_ZVFHMIN,
    RVV_PARTITION_ZVFH,
+   RVV_PARTITION_ZVFOFP8MIN,
    RVV_PARTITION_XSFVQMACCQOQ,
    RVV_PARTITION_XSFVQMACCDOD,
    RVV_PARTITION_XSFVFNRCLIPXFQF,
*************** static inline const char * required_ext_
*** 211,216 ****
--- 214,221 ----
        return "zvfbfmin";
      case ZVFBFWMA_EXT:
        return "zvfbfwma";
+     case ZVFOFP8MIN_EXT:
+       return "zvfofp8min";
      case XSFVQMACCQOQ_EXT:
        return "xsfvqmaccqoq";
      case XSFVQMACCDOD_EXT:
*************** static inline bool required_extensions_s
*** 266,271 ****
--- 271,278 ----
        return TARGET_ZVFBFMIN;
      case ZVFBFWMA_EXT:
        return TARGET_ZVFBFWMA;
+     case ZVFOFP8MIN_EXT:
+       return TARGET_ZVFOFP8MIN;
      case XSFVQMACCQOQ_EXT:
        return TARGET_XSFVQMACCQOQ;
      case XSFVQMACCDOD_EXT:
*************** struct function_group_info
*** 414,420 ****
       The function supports every combination of the two.
       The list of predication is terminated by two NUM_PRED_TYPES,
       while the list of operand info is terminated by NUM_BASE_TYPES.
!      The list of these type suffix is lexicographically ordered based
       on the index value.  */
    const predication_type_index *preds;
    const rvv_op_info ops_infos;
--- 421,427 ----
       The function supports every combination of the two.
       The list of predication is terminated by two NUM_PRED_TYPES,
       while the list of operand info is terminated by NUM_BASE_TYPES.
!      The list of these type suffixes is lexicographically ordered based
       on the index value.  */
    const predication_type_index *preds;
    const rvv_op_info ops_infos;
*************** function_expander::add_output_operand (m
*** 732,738 ****
    create_output_operand (&m_ops[opno++], target, mode);
  }
  
! /* Since we may normalize vop/vop_tu/vop_m/vop_tumu.. into a single patter.
     We add a fake all true mask for the intrinsics that don't need a real mask.
   */
  inline void
--- 739,745 ----
    create_output_operand (&m_ops[opno++], target, mode);
  }
  
! /* Since we may normalize vop/vop_tu/vop_m/vop_tumu.. into a single pattern.
     We add a fake all true mask for the intrinsics that don't need a real mask.
   */
  inline void
*************** function_base::has_merge_operand_p () co
*** 860,866 ****
    return true;
  }
  
! /* We choose to return false by default since most of the intrinsics does
     not have rounding mode operand.  */
  inline bool
  function_base::has_rounding_mode_operand_p () const
--- 867,873 ----
    return true;
  }
  
! /* We choose to return false by default since most of the intrinsics do
     not have rounding mode operand.  */
  inline bool
  function_base::has_rounding_mode_operand_p () const
*************** function_base::has_rounding_mode_operand
*** 868,874 ****
    return false;
  }
  
! /* We choose to return false by default since most of the intrinsics does
     not need frm operand.  */
  inline bool
  function_base::may_require_frm_p () const
--- 875,881 ----
    return false;
  }
  
! /* We choose to return false by default since most of the intrinsics do
     not need frm operand.  */
  inline bool
  function_base::may_require_frm_p () const
*************** function_base::may_require_frm_p () cons
*** 876,882 ****
    return false;
  }
  
! /* We choose to return false by default since most of the intrinsics does
     not need vxrm operand.  */
  inline bool
  function_base::may_require_vxrm_p () const
--- 883,889 ----
    return false;
  }
  
! /* We choose to return false by default since most of the intrinsics do
     not need vxrm operand.  */
  inline bool
  function_base::may_require_vxrm_p () const
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vector-costs.cc gcc-17-20260607/gcc/config/riscv/riscv-vector-costs.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-vector-costs.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vector-costs.cc	Sun Jun  7 22:32:06 2026
*************** compute_nregs_for_mode (loop_vec_info lo
*** 515,521 ****
  }
  
  /* This function helps to determine whether current LMUL will cause
!    potential vector register (V_REG) spillings according to live range
     information.
  
       - First, compute how many variable are alive of each program point
--- 515,521 ----
  }
  
  /* This function helps to determine whether current LMUL will cause
!    potential vector register (V_REG) spilling according to live range
     information.
  
       - First, compute how many variable are alive of each program point
*************** costs::has_unexpected_spills_p (loop_vec
*** 965,971 ****
  	    = (*program_points_per_bb.get (bb)).length () + 1;
  	  if ((*iter).second.is_empty ())
  	    continue;
! 	  /* We prefer larger LMUL unless it causes register spillings.  */
  	  unsigned int nregs
  	    = max_number_of_live_regs (loop_vinfo, bb, (*iter).second,
  				       max_point, biggest_mode, lmul);
--- 965,971 ----
  	    = (*program_points_per_bb.get (bb)).length () + 1;
  	  if ((*iter).second.is_empty ())
  	    continue;
! 	  /* We prefer larger LMUL unless it causes register spilling.  */
  	  unsigned int nregs
  	    = max_number_of_live_regs (loop_vinfo, bb, (*iter).second,
  				       max_point, biggest_mode, lmul);
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vector-costs.h gcc-17-20260607/gcc/config/riscv/riscv-vector-costs.h
*** gcc-17-20260531/gcc/config/riscv/riscv-vector-costs.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vector-costs.h	Sun Jun  7 22:32:06 2026
*************** private:
*** 71,77 ****
  
    /* On some CPUs, VLA and VLS provide the same theoretical vector
       throughput, such as 4x128 VLS vs. 2x256 VLA.  In those
!      situations, we try to predict whether an VLS implementation
       of the loop could be completely unrolled and become straight-line code.
       If so, it is generally better to use the VLS version rather
       than length-agnostic VLA, since the VLA loop would execute an unknown
--- 71,77 ----
  
    /* On some CPUs, VLA and VLS provide the same theoretical vector
       throughput, such as 4x128 VLS vs. 2x256 VLA.  In those
!      situations, we try to predict whether a VLS implementation
       of the loop could be completely unrolled and become straight-line code.
       If so, it is generally better to use the VLS version rather
       than length-agnostic VLA, since the VLA loop would execute an unknown
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vsetvl.cc gcc-17-20260607/gcc/config/riscv/riscv-vsetvl.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-vsetvl.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vsetvl.cc	Sun Jun  7 22:32:06 2026
*************** This file is part of GCC.
*** 6,12 ****
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3, or(at your option)
  any later version.
  
  GCC is distributed in the hope that it will be useful,
--- 6,12 ----
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3, or (at your option)
  any later version.
  
  GCC is distributed in the hope that it will be useful,
*************** along with GCC; see the file COPYING3.
*** 19,39 ****
  <http://www.gnu.org/licenses/>.  */
  
  /* The values of the vl and vtype registers will affect the behavior of RVV
!    insns. That is, when we need to execute an RVV instruction, we need to set
     the correct vl and vtype values by executing the vsetvl instruction before.
     Executing the fewest number of vsetvl instructions while keeping the behavior
!    the same is the problem this pass is trying to solve. This vsetvl pass is
     divided into 5 phases:
  
       - Phase 1 (fuse local vsetvl infos): traverses each Basic Block, parses
         each instruction in it that affects vl and vtype state and generates an
!        array of vsetvl_info objects. Then traverse the vsetvl_info array from
!        front to back and perform fusion according to the fusion rules. The fused
!        vsetvl infos are stored in the vsetvl_block_info object's `infos` field.
  
       - Phase 2 (earliest fuse global vsetvl infos): The header_info and
         footer_info of vsetvl_block_info are used as expressions, and the
!        earliest of each expression is computed. Based on the earliest
         information, try to lift up the corresponding vsetvl info to the src
         basic block of the edge (mainly to reduce the total number of vsetvl
         instructions, this uplift will cause some execution paths to execute
--- 19,40 ----
  <http://www.gnu.org/licenses/>.  */
  
  /* The values of the vl and vtype registers will affect the behavior of RVV
!    insns.  That is, when we need to execute an RVV instruction, we need to set
     the correct vl and vtype values by executing the vsetvl instruction before.
     Executing the fewest number of vsetvl instructions while keeping the behavior
!    the same is the problem this pass is trying to solve.  This vsetvl pass is
     divided into 5 phases:
  
       - Phase 1 (fuse local vsetvl infos): traverses each Basic Block, parses
         each instruction in it that affects vl and vtype state and generates an
!        array of vsetvl_info objects.  Then traverse the vsetvl_info array from
!        front to back and perform fusion according to the fusion rules.  The
!        fused vsetvl infos are stored in the vsetvl_block_info object's `infos`
!        field.
  
       - Phase 2 (earliest fuse global vsetvl infos): The header_info and
         footer_info of vsetvl_block_info are used as expressions, and the
!        earliest of each expression is computed.  Based on the earliest
         information, try to lift up the corresponding vsetvl info to the src
         basic block of the edge (mainly to reduce the total number of vsetvl
         instructions, this uplift will cause some execution paths to execute
*************** along with GCC; see the file COPYING3.
*** 51,59 ****
       - Phase 5 (cleanup): Clean up the avl operand in the RVV operator
         instruction and cleanup the unused dest operand of the vsetvl insn.
  
!      After the Phase 1 a virtual CFG of vsetvl_info is generated. The virtual
       basic block is represented by vsetvl_block_info, and the virtual vsetvl
!      statements inside are represented by vsetvl_info. The later phases 2 and 3
       are constantly modifying and adjusting this virtual CFG. Phase 4 performs
       insertion, modification and deletion of vsetvl instructions based on the
       optimized virtual CFG. The Phase 1, 2 and 3 do not involve modifications to
--- 52,60 ----
       - Phase 5 (cleanup): Clean up the avl operand in the RVV operator
         instruction and cleanup the unused dest operand of the vsetvl insn.
  
!      After the Phase 1 a virtual CFG of vsetvl_info is generated.  The virtual
       basic block is represented by vsetvl_block_info, and the virtual vsetvl
!      statements inside are represented by vsetvl_info.  The later phases 2 and 3
       are constantly modifying and adjusting this virtual CFG. Phase 4 performs
       insertion, modification and deletion of vsetvl instructions based on the
       optimized virtual CFG. The Phase 1, 2 and 3 do not involve modifications to
*************** using namespace riscv_vector;
*** 93,102 ****
  
  /* Set the bitmap DST to the union of SRC of predecessors of
     basic block B.
!    It's a bit different from bitmap_union_of_preds in cfganal.cc. This function
!    takes into account the case where pred is ENTRY basic block. The main reason
     for this difference is to make it easier to insert some special value into
!    the ENTRY base block. For example, vsetvl_info with a status of UNKNOWN.  */
  static void
  bitmap_union_of_preds_with_entry (sbitmap dst, sbitmap *src, basic_block b)
  {
--- 94,103 ----
  
  /* Set the bitmap DST to the union of SRC of predecessors of
     basic block B.
!    It's a bit different from bitmap_union_of_preds in cfganal.cc.  This function
!    takes into account the case where pred is ENTRY basic block.  The main reason
     for this difference is to make it easier to insert some special value into
!    the ENTRY base block.  For example, vsetvl_info with a status of UNKNOWN.  */
  static void
  bitmap_union_of_preds_with_entry (sbitmap dst, sbitmap *src, basic_block b)
  {
*************** policy_to_str (bool agnostic_p)
*** 256,262 ****
    return agnostic_p ? "agnostic" : "undisturbed";
  }
  
! /* Return true if it is an RVV instruction depends on VTYPE global
     status register.  */
  bool
  has_vtype_op (rtx_insn *rinsn)
--- 257,263 ----
    return agnostic_p ? "agnostic" : "undisturbed";
  }
  
! /* Return true if it is an RVV instruction that depends on VTYPE global
     status register.  */
  bool
  has_vtype_op (rtx_insn *rinsn)
*************** get_avl (rtx_insn *rinsn)
*** 485,492 ****
  static bool
  get_default_ma ()
  {
!   /* For the instruction that doesn't require MA, we still need a default value
!      to emit vsetvl. We pick up the default value according to prefer policy. */
    return (bool) (get_prefer_mask_policy () & 0x1
  		 || (get_prefer_mask_policy () >> 1 & 0x1));
  }
--- 486,494 ----
  static bool
  get_default_ma ()
  {
!   /* For the instruction that does not require MA, we still need a default
!      value to emit vsetvl.  We pick up the default value according to
!      preferred policy.  */
    return (bool) (get_prefer_mask_policy () & 0x1
  		 || (get_prefer_mask_policy () >> 1 & 0x1));
  }
*************** enum def_type
*** 558,564 ****
    BB_END_SET = 1 << 3,
    /* ??? TODO: In RTL_SSA framework, we have REAL_SET,
       PHI_SET, BB_HEAD_SET, BB_END_SET and
!      CLOBBER_DEF def_info types. Currently,
       we conservatively do not optimize clobber
       def since we don't see the case that we
       need to optimize it.  */
--- 560,566 ----
    BB_END_SET = 1 << 3,
    /* ??? TODO: In RTL_SSA framework, we have REAL_SET,
       PHI_SET, BB_HEAD_SET, BB_END_SET and
!      CLOBBER_DEF def_info types.  Currently,
       we conservatively do not optimize clobber
       def since we don't see the case that we
       need to optimize it.  */
*************** get_all_real_uses (insn_info *insn, unsi
*** 617,623 ****
    return uses;
  }
  
! /* Recursively find all define instructions. The kind of instruction is
     specified by the DEF_TYPE.  */
  static hash_set<set_info *>
  get_all_sets (phi_info *phi, unsigned int types)
--- 619,625 ----
    return uses;
  }
  
! /* Recursively find all define instructions.  The kind of instruction is
     specified by the DEF_TYPE.  */
  static hash_set<set_info *>
  get_all_sets (phi_info *phi, unsigned int types)
*************** get_all_predecessors (basic_block bb)
*** 795,801 ****
  }
  
  /* This flags indicates the minimum demand of the vl and vtype values by the
!    RVV instruction. For example, DEMAND_RATIO_P indicates that this RVV
     instruction only needs the SEW/LMUL ratio to remain the same, and does not
     require SEW and LMUL to be fixed.
     Therefore, if the former RVV instruction needs DEMAND_RATIO_P and the latter
--- 797,803 ----
  }
  
  /* This flags indicates the minimum demand of the vl and vtype values by the
!    RVV instruction.  For example, DEMAND_RATIO_P indicates that this RVV
     instruction only needs the SEW/LMUL ratio to remain the same, and does not
     require SEW and LMUL to be fixed.
     Therefore, if the former RVV instruction needs DEMAND_RATIO_P and the latter
*************** enum demand_flags : unsigned
*** 819,830 ****
    DEMAND_NON_ZERO_AVL_P = 1 << 7,
  };
  
! /* We split the demand information into three parts. They are sew and lmul
     related (sew_lmul_demand_type), tail and mask policy related
     (policy_demand_type) and avl related (avl_demand_type). Then we define three
     interfaces available_p, compatible_p and merge. available_p is
     used to determine whether the two vsetvl infos prev_info and next_info are
!    available or not. If prev_info is available for next_info, it means that the
     RVV insn corresponding to next_info on the path from prev_info to next_info
     can be used without inserting a separate vsetvl instruction. compatible_p
     is used to determine whether prev_info is compatible with next_info, and if
--- 821,832 ----
    DEMAND_NON_ZERO_AVL_P = 1 << 7,
  };
  
! /* We split the demand information into three parts.  They are sew and lmul
     related (sew_lmul_demand_type), tail and mask policy related
     (policy_demand_type) and avl related (avl_demand_type). Then we define three
     interfaces available_p, compatible_p and merge. available_p is
     used to determine whether the two vsetvl infos prev_info and next_info are
!    available or not.  If prev_info is available for next_info, it means that the
     RVV insn corresponding to next_info on the path from prev_info to next_info
     can be used without inserting a separate vsetvl instruction. compatible_p
     is used to determine whether prev_info is compatible with next_info, and if
*************** public:
*** 994,1002 ****
  
  	E.g.  BB 2 (Empty) ---> BB 3 (VALID, has rvv insn 1)
  
!      BB 2 has empty VSETVL_INFO, wheras BB 3 has VSETVL_INFO that satisfies
       get_insn ()->bb () == get_bb (). In earliest fusion, we may fuse bb 3 and
!      bb 2 so that the 'get_bb ()' of BB2 VSETVL_INFO will be BB2 wheras the
       'get_insn ()' of BB2 VSETVL INFO will be the rvv insn 1 (which is located
       at BB3).  */
    bool insn_inside_bb_p () const { return get_insn ()->bb () == get_bb (); }
--- 996,1004 ----
  
  	E.g.  BB 2 (Empty) ---> BB 3 (VALID, has rvv insn 1)
  
!      BB 2 has empty VSETVL_INFO, whereas BB 3 has VSETVL_INFO that satisfies
       get_insn ()->bb () == get_bb (). In earliest fusion, we may fuse bb 3 and
!      bb 2 so that the 'get_bb ()' of BB2 VSETVL_INFO will be BB2 whereas the
       'get_insn ()' of BB2 VSETVL INFO will be the rvv insn 1 (which is located
       at BB3).  */
    bool insn_inside_bb_p () const { return get_insn ()->bb () == get_bb (); }
*************** public:
*** 1122,1128 ****
      if (insn->is_debug_insn ())
        return;
  
!     /* We set it as unknown since we don't what will happen in CALL or ASM.  */
      if (insn->is_call () || insn->is_asm ())
        {
  	set_unknown ();
--- 1124,1131 ----
      if (insn->is_debug_insn ())
        return;
  
!     /* We set it as unknown since we don't know what will happen in CALL
!        or ASM.  */
      if (insn->is_call () || insn->is_asm ())
        {
  	set_unknown ();
*************** public:
*** 1162,1168 ****
      m_vlmul = ::get_vlmul (insn->rtl ());
      m_ratio = get_attr_ratio (insn->rtl ());
      /* when get_attr_ratio is invalid, this kind of instructions
!        doesn't care about ratio. However, we still need this value
         in demand info backward analysis.  */
      if (m_ratio == INVALID_ATTRIBUTE)
        m_ratio = calculate_ratio (m_sew, m_vlmul);
--- 1165,1171 ----
      m_vlmul = ::get_vlmul (insn->rtl ());
      m_ratio = get_attr_ratio (insn->rtl ());
      /* when get_attr_ratio is invalid, this kind of instructions
!        doesn't care about ratio.  However, we still need this value
         in demand info backward analysis.  */
      if (m_ratio == INVALID_ATTRIBUTE)
        m_ratio = calculate_ratio (m_sew, m_vlmul);
*************** public:
*** 1303,1310 ****
       if we fuse the VL modification from OTHER into THIS.  */
    bool vl_modify_non_avl_op_p (const vsetvl_info &other) const
    {
!     /* We don't need to worry about any operands from THIS be
!        modified by OTHER vsetvl since we OTHER vsetvl doesn't
         modify any operand.  */
      if (!other.has_vl ())
        return false;
--- 1306,1313 ----
       if we fuse the VL modification from OTHER into THIS.  */
    bool vl_modify_non_avl_op_p (const vsetvl_info &other) const
    {
!     /* We don't need to worry about any operands from THIS being
!        modified by OTHER vsetvl since OTHER vsetvl doesn't
         modify any operand.  */
      if (!other.has_vl ())
        return false;
*************** private:
*** 2467,2474 ****
  	  continue;
  	else
  	  /* We pick the highest probability among those incompatible VSETVL
! 	     infos. When all incompatible VSETVL infos have same probability, we
! 	     don't pick any of them.  */
  	  return false;
        }
      return true;
--- 2470,2477 ----
  	  continue;
  	else
  	  /* We pick the highest probability among those incompatible VSETVL
! 	     infos.  When all incompatible VSETVL infos have same probability,
! 	     we don't pick any of them.  */
  	  return false;
        }
      return true;
*************** pre_vsetvl::compute_lcm_local_properties
*** 2835,2841 ****
    bitmap_vector_ones (m_transp, last_basic_block_for_fn (cfun));
  
    /* -  If T is locally available at the end of a block, then T' must be
! 	available at the end of the same block. Since some optimization has
  	occurred earlier, T' might not be locally available, however, it must
  	have been previously computed on all paths. As a formula, T at AVLOC(B)
  	implies that T' at AVOUT(B).
--- 2838,2844 ----
    bitmap_vector_ones (m_transp, last_basic_block_for_fn (cfun));
  
    /* -  If T is locally available at the end of a block, then T' must be
! 	available at the end of the same block.  Since some optimization has
  	occurred earlier, T' might not be locally available, however, it must
  	have been previously computed on all paths. As a formula, T at AVLOC(B)
  	implies that T' at AVOUT(B).
*************** pre_vsetvl::remove_unused_dest_operand (
*** 3710,3729 ****
  	  rtx vl = get_vl (rinsn);
  	  vsetvl_info info = vsetvl_info (rinsn);
  	  if (has_no_uses (cfg_bb, rinsn, REGNO (vl)))
! 	    if (!info.has_vlmax_avl ())
! 	      {
! 		rtx new_pat = info.get_vsetvl_pat (true);
! 		if (dump_file)
! 		  {
! 		    fprintf (dump_file,
! 			     "  Remove vsetvl insn %u's dest(vl) operand since "
! 			     "it unused:\n",
! 			     INSN_UID (rinsn));
! 		    print_rtl_single (dump_file, rinsn);
! 		  }
! 		validate_change_or_fail (rinsn, &PATTERN (rinsn), new_pat,
! 					 false);
! 	      }
  	}
  }
  
--- 3713,3735 ----
  	  rtx vl = get_vl (rinsn);
  	  vsetvl_info info = vsetvl_info (rinsn);
  	  if (has_no_uses (cfg_bb, rinsn, REGNO (vl)))
! 	    {
! 	      if (!info.has_vlmax_avl ())
! 		{
! 		  rtx new_pat = info.get_vsetvl_pat (true);
! 		  if (dump_file)
! 		    {
! 		      fprintf (dump_file,
! 			       "  Remove vsetvl insn %u's dest(vl) operand"
! 			       " since "
! 			       "it unused:\n",
! 			       INSN_UID (rinsn));
! 		      print_rtl_single (dump_file, rinsn);
! 		    }
! 		  validate_change_or_fail (rinsn, &PATTERN (rinsn), new_pat,
! 					   false);
! 		}
! 	    }
  	}
  }
  
*************** pass_vsetvl::execute (function *)
*** 3877,3883 ****
      return 0;
  
    /* The RVV instruction may change after split which is not a stable
!      instruction. We need to split it here to avoid potential issue
       since the VSETVL PASS is insert before split PASS.  */
    split_all_insns ();
  
--- 3883,3889 ----
      return 0;
  
    /* The RVV instruction may change after split which is not a stable
!      instruction.  We need to split it here to avoid potential issue
       since the VSETVL PASS is insert before split PASS.  */
    split_all_insns ();
  
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-vsetvl.def gcc-17-20260607/gcc/config/riscv/riscv-vsetvl.def
*** gcc-17-20260531/gcc/config/riscv/riscv-vsetvl.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-vsetvl.def	Sun Jun  7 22:32:06 2026
*************** This file is part of GCC.
*** 6,12 ****
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3, or(at your option)
  any later version.
  
  GCC is distributed in the hope that it will be useful,
--- 6,12 ----
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 3, or (at your option)
  any later version.
  
  GCC is distributed in the hope that it will be useful,
*************** along with GCC; see the file COPYING3.
*** 22,32 ****
     available_p, fuse)
         prev_demand: the prev vector insn's sew_lmul_type
         next_demand: the next vector insn's sew_lmul_type
!        fused_demand: if them are compatible, change prev_info demand to the
  		     fused_demand after fuse prev_info and next_info
         compatible_p: check if prev_demand and next_demand are compatible
         available_p: check if prev_demand is available for next_demand
!        fuse: if them are compatible, how to modify prev_info  */
  
  #ifndef DEF_SEW_LMUL_RULE
  #define DEF_SEW_LMUL_RULE(prev_demand, next_demand, fused_demand,              \
--- 22,32 ----
     available_p, fuse)
         prev_demand: the prev vector insn's sew_lmul_type
         next_demand: the next vector insn's sew_lmul_type
!        fused_demand: if they are compatible, change prev_info demand to the
  		     fused_demand after fuse prev_info and next_info
         compatible_p: check if prev_demand and next_demand are compatible
         available_p: check if prev_demand is available for next_demand
!        fuse: if they are compatible, how to modify prev_info.  */
  
  #ifndef DEF_SEW_LMUL_RULE
  #define DEF_SEW_LMUL_RULE(prev_demand, next_demand, fused_demand,              \
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv-zicfilp.cc gcc-17-20260607/gcc/config/riscv/riscv-zicfilp.cc
*** gcc-17-20260531/gcc/config/riscv/riscv-zicfilp.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv-zicfilp.cc	Sun Jun  7 22:32:06 2026
***************
*** 44,59 ****
  #include "cgraph.h"
  #include "output.h"
  
! /* This pass implements forward-CFI landing pad checks for RISCV. This is
     a security feature similar to BTI (branch target identification) in
!    AArch64 and IBT (indirect branch tracking)in X86. A LPAD (landing-pad
     check) instruction is used to guard against the execution of
     instructions which are not the intended target of an indirect branch.
  
     When forward-CFI is disabled or unimplemented in the CPU, the
!    landing-pad check label instructions behave as NOP. When implemented in
     the CPU, and enabled, the destination of an indirect branch must be
!    LPAD insn. Otherwise, the CPU reaises an exception.
  
     In order to enable this mechanism, this pass iterates through the
     control flow of the code and adds appropriate LPAD instructions at the
--- 44,59 ----
  #include "cgraph.h"
  #include "output.h"
  
! /* This pass implements forward-CFI landing pad checks for RISCV.  This is
     a security feature similar to BTI (branch target identification) in
!    AArch64 and IBT (indirect branch tracking) in X86.  A LPAD (landing-pad
     check) instruction is used to guard against the execution of
     instructions which are not the intended target of an indirect branch.
  
     When forward-CFI is disabled or unimplemented in the CPU, the
!    landing-pad check label instructions behave as NOP.  When implemented in
     the CPU, and enabled, the destination of an indirect branch must be
!    LPAD insn.  Otherwise, the CPU raises an exception.
  
     In order to enable this mechanism, this pass iterates through the
     control flow of the code and adds appropriate LPAD instructions at the
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv.cc gcc-17-20260607/gcc/config/riscv/riscv.cc
*** gcc-17-20260531/gcc/config/riscv/riscv.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv.cc	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 109,115 ****
  /* Extract the backup dynamic frm rtl.  */
  #define DYNAMIC_FRM_RTL(c) ((c)->machine->mode_sw_info.dynamic_frm)
  
! /* True the mode switching has static frm, or false.  */
  #define STATIC_FRM_P(c) ((c)->machine->mode_sw_info.static_frm_p)
  
  #define CFUN_IN_CALL(c) ((c)->machine->mode_sw_info.cfun_call)
--- 109,115 ----
  /* Extract the backup dynamic frm rtl.  */
  #define DYNAMIC_FRM_RTL(c) ((c)->machine->mode_sw_info.dynamic_frm)
  
! /* True if the mode switching has static frm, or false.  */
  #define STATIC_FRM_P(c) ((c)->machine->mode_sw_info.static_frm_p)
  
  #define CFUN_IN_CALL(c) ((c)->machine->mode_sw_info.cfun_call)
*************** struct GTY(())  riscv_frame_info {
*** 141,151 ****
    /* How much the GPR save/restore routines adjust sp (or 0 if unused).  */
    unsigned save_libcall_adjustment;
  
!   /* the minimum number of bytes, in multiples of 16-byte address increments,
       required to cover the registers in a multi push & pop.  */
    unsigned multi_push_adj_base;
  
!   /* the number of additional 16-byte address increments allocated for the stack
       frame in a multi push & pop.  */
    unsigned multi_push_adj_addi;
  
--- 141,151 ----
    /* How much the GPR save/restore routines adjust sp (or 0 if unused).  */
    unsigned save_libcall_adjustment;
  
!   /* The minimum number of bytes, in multiples of 16-byte address increments,
       required to cover the registers in a multi push & pop.  */
    unsigned multi_push_adj_base;
  
!   /* The number of additional 16-byte address increments allocated for the stack
       frame in a multi push & pop.  */
    unsigned multi_push_adj_addi;
  
*************** struct GTY(())  riscv_frame_info {
*** 167,173 ****
    poly_int64 arg_pointer_offset;
  
    /* Reset this struct, clean all field to zero.  */
!   void reset(void);
  };
  
  enum riscv_privilege_levels {
--- 167,173 ----
    poly_int64 arg_pointer_offset;
  
    /* Reset this struct, clean all field to zero.  */
!   void reset (void);
  };
  
  enum riscv_privilege_levels {
*************** static const struct riscv_tune_param gen
*** 665,670 ****
--- 665,741 ----
    true,						/* prefer-agnostic.  */
  };
  
+ static const common_vector_cost xt_c9501_vls_vector_cost = {
+   3, /* int_stmt_cost  */
+   4, /* fp_stmt_cost  */
+   99, /* gather_load_cost  */
+   32, /* scatter_store_cost  */
+   8, /* segment_permute (2) */
+   9, /* segment_permute (3) */
+   9, /* segment_permute (4) */
+   12, /* segment_permute (5) */
+   12, /* segment_permute (6) */
+   12, /* segment_permute (7) */
+   12, /* segment_permute (8) */
+   2, /* vec_to_scalar_cost  */
+   2, /* scalar_to_vec_cost  */
+   4, /* permute_cost  */
+   6, /* align_load_cost  */
+   1, /* align_store_cost  */
+   8, /* unalign_load_cost  */
+   2, /* unalign_store_cost  */
+   6, /* reduc_i8_cost  */
+   6, /* reduc_i16_cost  */
+   6, /* reduc_i32_cost  */
+   6, /* reduc_i64_cost  */
+   11, /* reduc_f16_cost  */
+   11, /* reduc_f32_cost  */
+   9, /* reduc_f64_cost  */
+   17, /* reduc_f16_ordered_cost  */
+   16, /* reduc_f32_ordered_cost  */
+   12, /* reduc_f64_ordered_cost  */
+ };
+ 
+ static const scalable_vector_cost
+   xt_c9501_vla_vector_cost (xt_c9501_vls_vector_cost);
+ 
+ static const struct cpu_vector_cost xt_c9501_vector_cost = {
+   1,				/* scalar_int_stmt_cost  */
+   2,				/* scalar_fp_stmt_cost  */
+   4,				/* scalar_load_cost  */
+   1,				/* scalar_store_cost  */
+   1,				/* cond_taken_branch_cost  */
+   1,				/* cond_not_taken_branch_cost  */
+   &xt_c9501_vls_vector_cost,	/* vls  */
+   &xt_c9501_vla_vector_cost,	/* vla  */
+   &rvv_regmove_vector_cost,	/* regmove  */
+ };
+ 
+ /* Costs to use when optimizing for XT C9501.  */
+ static const struct riscv_tune_param xt_c9501_tune_info = {
+   {COSTS_N_INSNS (2), COSTS_N_INSNS (2)},	/* fp_add */
+   {COSTS_N_INSNS (3), COSTS_N_INSNS (3)},	/* fp_mul */
+   {COSTS_N_INSNS (8), COSTS_N_INSNS (13)},	/* fp_div */
+   {COSTS_N_INSNS (2), COSTS_N_INSNS (2)},	/* int_mul */
+   {COSTS_N_INSNS (20), COSTS_N_INSNS (20)},	/* int_div */
+   8,						/* issue_rate */
+   2,						/* branch_cost */
+   5,						/* memory_cost */
+   2,						/* fmv_cost */
+   false,					/* slow_unaligned_access */
+   false,					/* vector_unaligned_access */
+   true,						/* use_divmod_expansion */
+   false,					/* overlap_op_by_pieces */
+   true,						/* use_zero_stride_load */
+   false,					/* speculative_sched_vsetvl */
+   RISCV_FUSE_NOTHING,				/* fusible_ops */
+   &xt_c9501_vector_cost,			/* vector cost */
+   "32",						/* function_align */
+   "8",						/* jump_align */
+   "16",						/* loop_align */
+   true,						/* prefer-agnostic.  */
+ };
+ 
  /* Costs to use when optimizing for Tenstorrent Ascalon 8 wide.  */
  static const struct riscv_tune_param tt_ascalon_d8_tune_info = {
    {COSTS_N_INSNS (2), COSTS_N_INSNS (2)},	/* fp_add */
*************** static const struct riscv_tune_param and
*** 765,770 ****
--- 836,865 ----
    true,						/* prefer-agnostic.  */
  };
  
+ static const struct riscv_tune_param xt_c908_tune_info= {
+   {COSTS_N_INSNS (3), COSTS_N_INSNS (3)},	/* fp_add */
+   {COSTS_N_INSNS (4), COSTS_N_INSNS (4)},	/* fp_mul */
+   {COSTS_N_INSNS (7), COSTS_N_INSNS (7)},	/* fp_div */
+   {COSTS_N_INSNS (3), COSTS_N_INSNS (3)},	/* int_mul */
+   {COSTS_N_INSNS (7), COSTS_N_INSNS (7)},	/* int_div */
+   2,						/* issue_rate */
+   3,						/* branch_cost */
+   4,						/* memory_cost */
+   3,						/* fmv_cost */
+   false,					/* slow_unaligned_access */
+   false,					/* vector_unaligned_access */
+   false,					/* use_divmod_expansion */
+   true,					/* overlap_op_by_pieces */
+   false,					/* use_zero_stride_load */
+   false,					/* speculative_sched_vsetvl */
+   RISCV_FUSE_NOTHING,				/* fusible_ops */
+   &generic_vector_cost,				/* vector cost */
+   NULL,						/* function_align */
+   NULL,						/* jump_align */
+   NULL,						/* loop_align */
+   false,					/* prefer-agnostic.  */
+ };
+ 
  static const struct riscv_tune_param spacemit_x60_tune_info= {
    {COSTS_N_INSNS (4), COSTS_N_INSNS (5)},	/* fp_add */
    {COSTS_N_INSNS (4), COSTS_N_INSNS (5)},	/* fp_mul */
*************** static const attribute_spec riscv_gnu_at
*** 916,922 ****
    {"RVV sizeless type", 4, 4, false, true, false, true, NULL, NULL},
    {"RVV type", 0, 0, false, true, false, true, NULL, NULL},
    /* This attribute is used to declare a function, forcing it to use the
!     standard vector calling convention variant. Syntax:
      __attribute__((riscv_vector_cc)). */
    {"riscv_vector_cc", 0, 0, false, true, true, true, NULL, NULL},
    {"riscv_vls_cc", 0, 1, false, true, true, true,
--- 1011,1017 ----
    {"RVV sizeless type", 4, 4, false, true, false, true, NULL, NULL},
    {"RVV type", 0, 0, false, true, false, true, NULL, NULL},
    /* This attribute is used to declare a function, forcing it to use the
!     standard vector calling convention variant.  Syntax:
      __attribute__((riscv_vector_cc)). */
    {"riscv_vector_cc", 0, 0, false, true, true, true, NULL, NULL},
    {"riscv_vls_cc", 0, 1, false, true, true, true,
*************** static const attribute_spec riscv_gnu_at
*** 926,938 ****
  
       typedef vint8m1_t f_vint8m1_t __attribute__((riscv_rvv_vector_bits(256)));
  
!      The new created type f_vint8m1_t will be exactly 256 bits.  It can be
       be used in globals, structs, unions, and arrays instead of sizeless
       types.  */
    {"riscv_rvv_vector_bits", 1, 1, false, true, false, true,
     riscv_handle_rvv_vector_bits_attribute, NULL},
    /* This attribute is used to declare a function, forcing it to use the
!     standard vector calling convention variant. Syntax:
      __attribute__((norelax)). */
    {"norelax", 0, 0, true, false, false, false, NULL, NULL},
  };
--- 1021,1033 ----
  
       typedef vint8m1_t f_vint8m1_t __attribute__((riscv_rvv_vector_bits(256)));
  
!      The new created type f_vint8m1_t will be exactly 256 bits.  It can
       be used in globals, structs, unions, and arrays instead of sizeless
       types.  */
    {"riscv_rvv_vector_bits", 1, 1, false, true, false, true,
     riscv_handle_rvv_vector_bits_attribute, NULL},
    /* This attribute is used to declare a function, forcing it to use the
!     standard vector calling convention variant.  Syntax:
      __attribute__((norelax)). */
    {"norelax", 0, 0, true, false, false, false, NULL, NULL},
  };
*************** static const scoped_attribute_specs risc
*** 945,951 ****
  static const attribute_spec riscv_attributes[] =
  {
    /* This attribute is used to declare a function, forcing it to use the
!      standard vector calling convention variant. Syntax:
       [[riscv::vector_cc]]. */
    {"vector_cc", 0, 0, false, true, true, true, NULL, NULL},
    {"vls_cc", 0, 1, false, true, true, true, riscv_handle_rvv_vls_cc_attribute,
--- 1040,1046 ----
  static const attribute_spec riscv_attributes[] =
  {
    /* This attribute is used to declare a function, forcing it to use the
!      standard vector calling convention variant.  Syntax:
       [[riscv::vector_cc]]. */
    {"vector_cc", 0, 0, false, true, true, true, NULL, NULL},
    {"vls_cc", 0, 1, false, true, true, true, riscv_handle_rvv_vls_cc_attribute,
*************** static const attribute_spec riscv_attrib
*** 955,961 ****
  
       typedef vint8m1_t f_vint8m1_t __attribute__((riscv_rvv_vector_bits(256)));
  
!      The new created type f_vint8m1_t will be exactly 256 bits.  It can be
       be used in globals, structs, unions, and arrays instead of sizeless
       types.  */
    {"rvv_vector_bits", 1, 1, false, true, false, true,
--- 1050,1056 ----
  
       typedef vint8m1_t f_vint8m1_t __attribute__((riscv_rvv_vector_bits(256)));
  
!      The new created type f_vint8m1_t will be exactly 256 bits.  It can
       be used in globals, structs, unions, and arrays instead of sizeless
       types.  */
    {"rvv_vector_bits", 1, 1, false, true, false, true,
*************** typedef enum
*** 1009,1015 ****
  
  typedef insn_code (*code_for_push_pop_t) (machine_mode);
  
! void riscv_frame_info::reset(void)
  {
    total_size = 0;
    mask = 0;
--- 1104,1110 ----
  
  typedef insn_code (*code_for_push_pop_t) (machine_mode);
  
! void riscv_frame_info::reset (void)
  {
    total_size = 0;
    mask = 0;
*************** get_tune_str (const T *opts)
*** 1122,1128 ****
  }
  
  /* Return the riscv_tune_info entry for the given name string, return nullptr
!    if NULL_P is true, otherwise return an placeholder and report error.  */
  
  const struct riscv_tune_info *
  riscv_parse_tune (const char *tune_string, bool null_p)
--- 1217,1223 ----
  }
  
  /* Return the riscv_tune_info entry for the given name string, return nullptr
!    if NULL_P is true, otherwise return a placeholder and report error.  */
  
  const struct riscv_tune_info *
  riscv_parse_tune (const char *tune_string, bool null_p)
*************** riscv_build_integer_1 (struct riscv_inte
*** 1457,1463 ****
  /* Fill CODES with a sequence of rtl operations to load VALUE.
     Return the number of operations needed.
  
!    ALLOW_NEW_PSEUDOS indicates if or caller wants to allow new pseudo
     registers or not.  This is needed for cases where the integer synthesis and
     costing code are used in insn conditions, we can't have costing allow
     recognition at some points and reject at others.  */
--- 1552,1558 ----
  /* Fill CODES with a sequence of rtl operations to load VALUE.
     Return the number of operations needed.
  
!    ALLOW_NEW_PSEUDOS indicates if the caller wants to allow new pseudo
     registers or not.  This is needed for cases where the integer synthesis and
     costing code are used in insn conditions, we can't have costing allow
     recognition at some points and reject at others.  */
*************** static int riscv_symbol_insns (enum risc
*** 1989,1995 ****
  }
  
  /* Immediate values loaded by the FLI.S instruction in Chapter 25 of the latest RISC-V ISA
!    Manual draft. For details, please see:
     https://github.com/riscv/riscv-isa-manual/releases/tag/isa-449cd0c  */
  
  static const unsigned HOST_WIDE_INT fli_value_hf[32] =
--- 2084,2090 ----
  }
  
  /* Immediate values loaded by the FLI.S instruction in Chapter 25 of the latest RISC-V ISA
!    Manual draft.  For details, please see:
     https://github.com/riscv/riscv-isa-manual/releases/tag/isa-449cd0c  */
  
  static const unsigned HOST_WIDE_INT fli_value_hf[32] =
*************** const char *fli_value_print[32] =
*** 2049,2056 ****
    "8.0", "16.0", "128.0", "256.0", "32768.0", "65536.0", "inf", "nan"
  };
  
! /* Return index of the FLI instruction table if rtx X is an immediate constant that can
!    be moved using a single FLI instruction in zfa extension. Return -1 if not found.  */
  
  int
  riscv_float_const_rtx_index_for_fli (rtx x)
--- 2144,2152 ----
    "8.0", "16.0", "128.0", "256.0", "32768.0", "65536.0", "inf", "nan"
  };
  
! /* Return index of the FLI instruction table if rtx X is an immediate constant
!    that can be moved using a single FLI instruction in zfa extension.  Return -1
!    if not found.  */
  
  int
  riscv_float_const_rtx_index_for_fli (rtx x)
*************** riscv_float_const_rtx_index_for_fli (rtx
*** 2060,2066 ****
    machine_mode mode = GET_MODE (x);
  
    if (!TARGET_ZFA
!       || !CONST_DOUBLE_P(x)
        || mode == VOIDmode
        || (mode == HFmode && !(TARGET_ZFH || TARGET_ZVFH))
        || (mode == SFmode && !TARGET_HARD_FLOAT)
--- 2156,2162 ----
    machine_mode mode = GET_MODE (x);
  
    if (!TARGET_ZFA
!       || !CONST_DOUBLE_P (x)
        || mode == VOIDmode
        || (mode == HFmode && !(TARGET_ZFH || TARGET_ZVFH))
        || (mode == SFmode && !TARGET_HARD_FLOAT)
*************** riscv_v_vls_to_gpr_mode (unsigned vls_mo
*** 2448,2454 ****
      }
  }
  
! /* Call from ADJUST_NUNITS in riscv-modes.def. Return the correct
     NUNITS size for corresponding machine_mode.  */
  
  poly_int64
--- 2544,2550 ----
      }
  }
  
! /* Call from ADJUST_NUNITS in riscv-modes.def.  Return the correct
     NUNITS size for corresponding machine_mode.  */
  
  poly_int64
*************** riscv_v_adjust_nunits (machine_mode mode
*** 2464,2470 ****
    return scale;
  }
  
! /* Call from ADJUST_NUNITS in riscv-modes.def. Return the correct
     NUNITS size for corresponding machine_mode.  */
  
  poly_int64
--- 2560,2566 ----
    return scale;
  }
  
! /* Call from ADJUST_NUNITS in riscv-modes.def.  Return the correct
     NUNITS size for corresponding machine_mode.  */
  
  poly_int64
*************** riscv_address_insns (rtx x, machine_mode
*** 2692,2698 ****
     Return 0 if X isn't a valid constant.
  
     ALLOW_NEW_PSEUDOS controls whether or not we're going to be allowed
!    to create new pseduos.  It must be FALSE for any call directly or
     indirectly from a pattern's condition.  */
  
  int
--- 2788,2794 ----
     Return 0 if X isn't a valid constant.
  
     ALLOW_NEW_PSEUDOS controls whether or not we're going to be allowed
!    to create new pseudos.  It must be FALSE for any call directly or
     indirectly from a pattern's condition.  */
  
  int
*************** riscv_const_insns (rtx x, bool allow_new
*** 2849,2855 ****
  
      /* TODO: In RVV, we get CONST_POLY_INT by using csrr VLENB
         instruction and several scalar shift or mult instructions,
!        it is so far unknown. We set it to 4 temporarily.  */
      case CONST_POLY_INT:
        return 4;
  
--- 2945,2951 ----
  
      /* TODO: In RVV, we get CONST_POLY_INT by using csrr VLENB
         instruction and several scalar shift or mult instructions,
!        it is so far unknown.  We set it to 4 temporarily.  */
      case CONST_POLY_INT:
        return 4;
  
*************** riscv_call_tls_get_addr (rtx sym, rtx re
*** 3179,3186 ****
    start_sequence ();
  
    emit_insn (riscv_got_load_tls_gd (a0, sym));
!   insn = emit_call_insn (gen_call_value (result, func, const0_rtx,
! 					 gen_int_mode (RISCV_CC_BASE, SImode)));
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
    insn = end_sequence ();
--- 3275,3282 ----
    start_sequence ();
  
    emit_insn (riscv_got_load_tls_gd (a0, sym));
!   insn = emit_call_insn (gen_call_value (result, func, const0_rtx, NULL_RTX));
!   CALL_INSN_ABI_ID (insn) = RISCV_CC_BASE;
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
    insn = end_sequence ();
*************** riscv_shorten_lw_offset (rtx base, HOST_
*** 3293,3299 ****
    return addr;
  }
  
! /* Helper for riscv_legitimize_address. Given X, return true if it
     is a left shift by 1, 2 or 3 positions or a multiply by 2, 4 or 8.
  
     This respectively represent canonical shift-add rtxs or scaled
--- 3389,3395 ----
    return addr;
  }
  
! /* Helper for riscv_legitimize_address.  Given X, return true if it
     is a left shift by 1, 2 or 3 positions or a multiply by 2, 4 or 8.
  
     This respectively represent canonical shift-add rtxs or scaled
*************** riscv_legitimize_const_move (machine_mod
*** 3558,3564 ****
  }
  
  /* Report when we try to do something that requires vector when vector is
!    disabled. This is an error of last resort and isn't very high-quality.  It
     usually involves attempts to measure the vector length in some way.  */
  
  static void
--- 3654,3660 ----
  }
  
  /* Report when we try to do something that requires vector when vector is
!    disabled.  This is an error of last resort and isn't very high-quality.  It
     usually involves attempts to measure the vector length in some way.  */
  
  static void
*************** riscv_expand_mult_with_const_int (machin
*** 3720,3726 ****
  
     Essentially we want to generate (set (dest) (src)), where SRC is
     a poly_int.  We may need TMP as a scratch register.  We assume TMP
!    is truely a scratch register and need not have any particular value
     after the sequence.  */
  void
  riscv_legitimize_poly_move (machine_mode mode, rtx dest, rtx tmp, rtx src)
--- 3816,3822 ----
  
     Essentially we want to generate (set (dest) (src)), where SRC is
     a poly_int.  We may need TMP as a scratch register.  We assume TMP
!    is truly a scratch register and need not have any particular value
     after the sequence.  */
  void
  riscv_legitimize_poly_move (machine_mode mode, rtx dest, rtx tmp, rtx src)
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 4376,4382 ****
      case LABEL_REF:
      case CONST_DOUBLE:
        /* With TARGET_SUPPORTS_WIDE_INT const int can't be in CONST_DOUBLE
! 	 rtl object. Weird recheck due to switch-case fall through above.  */
        if (GET_CODE (x) == CONST_DOUBLE)
  	gcc_assert (GET_MODE (x) != VOIDmode);
        /* Fall through.  */
--- 4472,4478 ----
      case LABEL_REF:
      case CONST_DOUBLE:
        /* With TARGET_SUPPORTS_WIDE_INT const int can't be in CONST_DOUBLE
! 	 rtl object.  Weird recheck due to switch-case fall through above.  */
        if (GET_CODE (x) == CONST_DOUBLE)
  	gcc_assert (GET_MODE (x) != VOIDmode);
        /* Fall through.  */
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 4404,4410 ****
  	 instructions it needs.  */
        if ((cost = riscv_address_insns (XEXP (x, 0), mode, true)) > 0)
  	{
! 	  /* When optimizing for size, make uncompressible 32-bit addresses
  	     more expensive so that compressible 32-bit addresses are
  	     preferred.  */
  	  if ((TARGET_RVC || TARGET_ZCA)
--- 4500,4506 ----
  	 instructions it needs.  */
        if ((cost = riscv_address_insns (XEXP (x, 0), mode, true)) > 0)
  	{
! 	  /* When optimizing for size, make incompressible 32-bit addresses
  	     more expensive so that compressible 32-bit addresses are
  	     preferred.  */
  	  if ((TARGET_RVC || TARGET_ZCA)
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 4605,4612 ****
  	  return true;
  	}
        gcc_fallthrough ();
-     case ASHIFTRT:
      case LSHIFTRT:
        *total = riscv_binary_cost (x, SINGLE_SHIFT_COST,
  				  CONSTANT_P (XEXP (x, 1)) ? 4 : 9);
        return false;
--- 4701,4726 ----
  	  return true;
  	}
        gcc_fallthrough ();
      case LSHIFTRT:
+       /* mulh[u] pattern */
+       if (GET_CODE (x) == LSHIFTRT
+ 	  && TARGET_MUL
+ 	  && mode == GET_MODE_2XWIDER_MODE (word_mode).require ()
+ 	  && outer_code == TRUNCATE
+ 	  && (GET_CODE (XEXP (x, 0)) == MULT)
+ 	     && (GET_CODE (XEXP (XEXP (x, 0), 0)) == ZERO_EXTEND
+ 		 || GET_CODE (XEXP (XEXP (x, 0), 0)) == SIGN_EXTEND)
+ 	     && (GET_CODE (XEXP (XEXP (x, 0), 1)) == ZERO_EXTEND
+ 		 || GET_CODE (XEXP (XEXP (x, 0), 1)) == SIGN_EXTEND)
+ 	  && (GET_CODE (XEXP (x, 1)) == CONST_INT
+ 	      && INTVAL (XEXP (x, 1)) == BITS_PER_WORD))
+ 	{
+ 	  *total = tune_param->int_mul[mode == TImode];
+ 	  return true;
+ 	}
+ 	/* Fall through.  */
+ 
+     case ASHIFTRT:
        *total = riscv_binary_cost (x, SINGLE_SHIFT_COST,
  				  CONSTANT_P (XEXP (x, 1)) ? 4 : 9);
        return false;
*************** riscv_address_cost (rtx addr, machine_mo
*** 4898,4904 ****
  		    addr_space_t as ATTRIBUTE_UNUSED,
  		    bool speed ATTRIBUTE_UNUSED)
  {
!   /* When optimizing for size, make uncompressible 32-bit addresses more
     * expensive so that compressible 32-bit addresses are preferred.  */
    if ((TARGET_RVC || TARGET_ZCA)
        && !speed && riscv_mshorten_memrefs && mode == SImode
--- 5012,5018 ----
  		    addr_space_t as ATTRIBUTE_UNUSED,
  		    bool speed ATTRIBUTE_UNUSED)
  {
!   /* When optimizing for size, make incompressible 32-bit addresses more
     * expensive so that compressible 32-bit addresses are preferred.  */
    if ((TARGET_RVC || TARGET_ZCA)
        && !speed && riscv_mshorten_memrefs && mode == SImode
*************** riscv_output_move (rtx dest, rtx src)
*** 5305,5311 ****
  	    return "bseti\t%0,zero,%S1";
  
  	  /* Should never reach here.  */
! 	  abort ();
  	}
  
        if (src_code == HIGH)
--- 5419,5425 ----
  	    return "bseti\t%0,zero,%S1";
  
  	  /* Should never reach here.  */
! 	  gcc_unreachable ();
  	}
  
        if (src_code == HIGH)
*************** riscv_extend_comparands (rtx_code code,
*** 5579,5585 ****
    if (GET_MODE_SIZE (word_mode) > GET_MODE_SIZE (GET_MODE (*op0)).to_constant ())
      {
        /* It is more profitable to zero-extend QImode values.  But not if the
! 	 first operand has already been sign-extended, and the second one is
  	 is a constant or has already been sign-extended also.  */
        if (unsigned_condition (code) == code
  	  && (GET_MODE (*op0) == QImode
--- 5693,5699 ----
    if (GET_MODE_SIZE (word_mode) > GET_MODE_SIZE (GET_MODE (*op0)).to_constant ())
      {
        /* It is more profitable to zero-extend QImode values.  But not if the
! 	 first operand has already been sign-extended, and the second one
  	 is a constant or has already been sign-extended also.  */
        if (unsigned_condition (code) == code
  	  && (GET_MODE (*op0) == QImode
*************** riscv_pass_aggregate_in_fpr_pair_p (cons
*** 6550,6557 ****
         float f;
       };
  
!      This case we will got 1, but legacy ABI will got -1, however legacy ABI
!      will got 1 in later logic, so we should consider this case as compatible.
    */
    bool compatible_p = n_new2 == 1 && n_new == -1 && num_fpr == 1;
  
--- 6664,6671 ----
         float f;
       };
  
!      This case we will get 1, but legacy ABI will get -1, however legacy ABI
!      will get 1 in later logic, so we should consider this case as compatible.
    */
    bool compatible_p = n_new2 == 1 && n_new == -1 && num_fpr == 1;
  
*************** riscv_get_vector_arg (struct riscv_arg_i
*** 6811,6818 ****
      }
  
    /* The number and alignment of vector registers need for this scalable vector
!      argument. When the mode size is less than a full vector, we use 1 vector
!      register to pass. Just call TARGET_HARD_REGNO_NREGS for the number
       information.  */
    int nregs = riscv_hard_regno_nregs (V_ARG_FIRST, mode);
    int LMUL = riscv_tuple_mode_p (mode)
--- 6925,6932 ----
      }
  
    /* The number and alignment of vector registers need for this scalable vector
!      argument.  When the mode size is less than a full vector, we use 1 vector
!      register to pass.  Just call TARGET_HARD_REGNO_NREGS for the number
       information.  */
    int nregs = riscv_hard_regno_nregs (V_ARG_FIRST, mode);
    int LMUL = riscv_tuple_mode_p (mode)
*************** riscv_pass_aggregate_in_vr (struct riscv
*** 7080,7086 ****
  }
  
  /* Fill INFO with information about a single argument, and return an RTL
!    pattern to pass or return the argument. Return NULL_RTX if argument cannot
     pass or return in registers, then the argument may be passed by reference
     or through the stack.  CUM is the cumulative state for earlier arguments.
     MODE is the mode of this argument and TYPE is its type (if known).
--- 7194,7200 ----
  }
  
  /* Fill INFO with information about a single argument, and return an RTL
!    pattern to pass or return the argument.  Return NULL_RTX if argument cannot
     pass or return in registers, then the argument may be passed by reference
     or through the stack.  CUM is the cumulative state for earlier arguments.
     MODE is the mode of this argument and TYPE is its type (if known).
*************** riscv_function_arg (cumulative_args_t cu
*** 7223,7230 ****
    struct riscv_arg_info info;
  
    if (arg.end_marker_p ())
!     /* Return the calling convention that used by the current function. */
!     return gen_int_mode (cum->variant_cc, SImode);
  
    return riscv_get_arg_info (&info, cum, arg.mode, arg.type, arg.named, false);
  }
--- 7337,7343 ----
    struct riscv_arg_info info;
  
    if (arg.end_marker_p ())
!     return nullptr;
  
    return riscv_get_arg_info (&info, cum, arg.mode, arg.type, arg.named, false);
  }
*************** riscv_libcall_value (machine_mode mode,
*** 7324,7330 ****
  static bool
  riscv_pass_by_reference (cumulative_args_t cum_v, const function_arg_info &arg)
  {
!   HOST_WIDE_INT size = arg.type_size_in_bytes ().to_constant ();;
    struct riscv_arg_info info;
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
  
--- 7437,7443 ----
  static bool
  riscv_pass_by_reference (cumulative_args_t cum_v, const function_arg_info &arg)
  {
!   HOST_WIDE_INT size = arg.type_size_in_bytes ().to_constant ();
    struct riscv_arg_info info;
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
  
*************** riscv_vls_cc_function_abi (const_tree fn
*** 7717,7723 ****
    return riscv_get_vls_cc_attr (args);
  }
  
! /* Implemention of TARGET_FNTYPE_ABI, but one extra parameter `check_only`
     to suppress warning message.  */
  
  static const predefined_function_abi &
--- 7830,7836 ----
    return riscv_get_vls_cc_attr (args);
  }
  
! /* Implementation of TARGET_FNTYPE_ABI, but one extra parameter `check_only`
     to suppress warning message.  */
  
  static const predefined_function_abi &
*************** riscv_fntype_abi (const_tree fntype)
*** 7750,7779 ****
    return riscv_fntype_abi_1 (fntype, /* check_only */true);
  }
  
- /* Return riscv calling convention of call_insn.  */
- riscv_cc
- get_riscv_cc (const rtx use)
- {
-   gcc_assert (GET_CODE (use) == USE);
-   rtx unspec = XEXP (use, 0);
-   gcc_assert (GET_CODE (unspec) == UNSPEC
- 	      && XINT (unspec, 1) == UNSPEC_CALLEE_CC);
-   riscv_cc cc = (riscv_cc) INTVAL (XVECEXP (unspec, 0, 0));
-   gcc_assert (cc < RISCV_CC_UNKNOWN);
-   return cc;
- }
- 
- /* Implement TARGET_INSN_CALLEE_ABI.  */
- 
- const predefined_function_abi &
- riscv_insn_callee_abi (const rtx_insn *insn)
- {
-   rtx pat = PATTERN (insn);
-   gcc_assert (GET_CODE (pat) == PARALLEL);
-   riscv_cc cc = get_riscv_cc (XVECEXP (pat, 0, 1));
-   return function_abis[cc];
- }
- 
  /* Handle an attribute requiring a FUNCTION_DECL;
     arguments as in struct attribute_spec.handler.  */
  static tree
--- 7863,7868 ----
*************** riscv_print_operand (FILE *file, rtx op,
*** 8170,8176 ****
    if (letter == '~')
      {
        if (TARGET_64BIT)
! 	fputc('w', file);
        return;
      }
    machine_mode mode = GET_MODE (op);
--- 8259,8265 ----
    if (letter == '~')
      {
        if (TARGET_64BIT)
! 	fputc ('w', file);
        return;
      }
    machine_mode mode = GET_MODE (op);
*************** riscv_save_libcall_count (unsigned mask)
*** 8896,8902 ****
    for (unsigned n = GP_REG_LAST; n > GP_REG_FIRST; n--)
      if (BITSET_P (mask, n))
        return CALLEE_SAVED_REG_NUMBER (n) + 1;
!   abort ();
  }
  
  /* calculate number of s regs in multi push and pop.
--- 8985,8991 ----
    for (unsigned n = GP_REG_LAST; n > GP_REG_FIRST; n--)
      if (BITSET_P (mask, n))
        return CALLEE_SAVED_REG_NUMBER (n) + 1;
!   gcc_unreachable ();
  }
  
  /* calculate number of s regs in multi push and pop.
*************** riscv_compute_frame_info (void)
*** 9020,9026 ****
  	interrupt_save_prologue_temp = true;
      }
  
!   frame->reset();
  
    if (!cfun->machine->naked_p)
      {
--- 9109,9115 ----
  	interrupt_save_prologue_temp = true;
      }
  
!   frame->reset ();
  
    if (!cfun->machine->naked_p)
      {
*************** riscv_set_return_address (rtx address, r
*** 9266,9273 ****
    rtx slot_address;
  
    gcc_assert (BITSET_P (cfun->machine->frame.mask, RETURN_ADDR_REGNUM));
!   slot_address = riscv_add_offset (scratch, stack_pointer_rtx,
! 				  cfun->machine->frame.gp_sp_offset.to_constant());
    riscv_emit_move (gen_frame_mem (GET_MODE (address), slot_address), address);
  }
  
--- 9355,9363 ----
    rtx slot_address;
  
    gcc_assert (BITSET_P (cfun->machine->frame.mask, RETURN_ADDR_REGNUM));
!   slot_address
!     = riscv_add_offset (scratch, stack_pointer_rtx,
! 			cfun->machine->frame.gp_sp_offset.to_constant ());
    riscv_emit_move (gen_frame_mem (GET_MODE (address), slot_address), address);
  }
  
*************** riscv_first_stack_step (struct riscv_fra
*** 9585,9591 ****
  
    poly_int64 callee_saved_first_step =
      remaining_size - frame->frame_pointer_offset;
!   gcc_assert(callee_saved_first_step.is_constant ());
    HOST_WIDE_INT min_first_step =
      riscv_stack_align (callee_saved_first_step.to_constant ());
    HOST_WIDE_INT max_first_step = IMM_REACH / 2 - PREFERRED_STACK_BOUNDARY / 8;
--- 9675,9681 ----
  
    poly_int64 callee_saved_first_step =
      remaining_size - frame->frame_pointer_offset;
!   gcc_assert (callee_saved_first_step.is_constant ());
    HOST_WIDE_INT min_first_step =
      riscv_stack_align (callee_saved_first_step.to_constant ());
    HOST_WIDE_INT max_first_step = IMM_REACH / 2 - PREFERRED_STACK_BOUNDARY / 8;
*************** riscv_adjust_multi_push_cfi_prologue (in
*** 9667,9673 ****
  
    unsigned int num_multi_push = riscv_multi_push_regs_count (mask);
    for (unsigned int i = 0; i < num_multi_push; i++) {
!     gcc_assert(zcmp_save_reg_order[i] != INVALID_REGNUM);
      mask |= 1 << (zcmp_save_reg_order[i] - GP_REG_FIRST);
    }
  
--- 9757,9763 ----
  
    unsigned int num_multi_push = riscv_multi_push_regs_count (mask);
    for (unsigned int i = 0; i < num_multi_push; i++) {
!     gcc_assert (zcmp_save_reg_order[i] != INVALID_REGNUM);
      mask |= 1 << (zcmp_save_reg_order[i] - GP_REG_FIRST);
    }
  
*************** riscv_expand_prologue (void)
*** 10071,10077 ****
    if (need_shadow_stack_push_pop_p ())
      emit_insn (gen_sspush (Pmode, gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM)));
  
!   /* prefer multi-push to save-restore libcall.  */
    if (riscv_use_multi_push (frame))
      {
        remaining_size -= frame->multi_push_adj_base;
--- 10161,10167 ----
    if (need_shadow_stack_push_pop_p ())
      emit_insn (gen_sspush (Pmode, gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM)));
  
!   /* Prefer multi-push to save-restore libcall.  */
    if (riscv_use_multi_push (frame))
      {
        remaining_size -= frame->multi_push_adj_base;
*************** riscv_sched_variable_issue (FILE *, int,
*** 11328,11334 ****
  }
  
  /* Implement TARGET_SCHED_REORDER.  The goal here is to look at the ready
!    queue and reorder it ever so slightly to encourage issing an insn with
     the same vector configuration as the most recently issued vector
     instruction.  That will reduce vsetvl instructions.  */
  static int
--- 11418,11424 ----
  }
  
  /* Implement TARGET_SCHED_REORDER.  The goal here is to look at the ready
!    queue and reorder it ever so slightly to encourage issuing an insn with
     the same vector configuration as the most recently issued vector
     instruction.  That will reduce vsetvl instructions.  */
  static int
*************** riscv_sched_reorder (FILE *, int, rtx_in
*** 11340,11346 ****
    if (!last_vconfig.valid || *nreadyp == 1)
      return riscv_issue_rate ();
  
-   return riscv_issue_rate ();
    int nready = *nreadyp;
    int priority = INSN_PRIORITY (ready[nready - 1]);
    for (int i = nready - 1; i >= 0; i--)
--- 11430,11435 ----
*************** riscv_sched_adjust_cost (rtx_insn *, int
*** 11463,11469 ****
    return new_cost;
  }
  
! /* Implement TARGET_SCHED_CAN_SPECULATE_INSN hook.  Return true if insn can
     can be scheduled for speculative execution.  Reject vsetvl instructions to
     prevent the scheduler from hoisting them out of basic blocks without
     checking for data dependencies PR117974.  */
--- 11552,11558 ----
    return new_cost;
  }
  
! /* Implement TARGET_SCHED_CAN_SPECULATE_INSN hook.  Return true if insn
     can be scheduled for speculative execution.  Reject vsetvl instructions to
     prevent the scheduler from hoisting them out of basic blocks without
     checking for data dependencies PR117974.  */
*************** riscv_output_mi_thunk (FILE *file, tree
*** 11679,11685 ****
    emit_note (NOTE_INSN_PROLOGUE_END);
  
    if (is_zicfilp_p ())
!     emit_insn(gen_lpad (const0_rtx));
  
    /* Determine if we can use a sibcall to call FUNCTION directly.  */
    fnaddr = gen_rtx_MEM (FUNCTION_MODE, XEXP (DECL_RTL (function), 0));
--- 11768,11774 ----
    emit_note (NOTE_INSN_PROLOGUE_END);
  
    if (is_zicfilp_p ())
!     emit_insn (gen_lpad (const0_rtx));
  
    /* Determine if we can use a sibcall to call FUNCTION directly.  */
    fnaddr = gen_rtx_MEM (FUNCTION_MODE, XEXP (DECL_RTL (function), 0));
*************** riscv_output_mi_thunk (FILE *file, tree
*** 11723,11730 ****
      }
  
    /* Jump to the target function.  */
!   rtx callee_cc = gen_int_mode (fndecl_abi (function).id (), SImode);
!   insn = emit_call_insn (gen_sibcall (fnaddr, const0_rtx, callee_cc));
    SIBLING_CALL_P (insn) = 1;
  
    /* Run just enough of rest_of_compilation.  This sequence was
--- 11812,11819 ----
      }
  
    /* Jump to the target function.  */
!   insn = emit_call_insn (gen_sibcall (fnaddr, const0_rtx, NULL_RTX));
!   CALL_INSN_ABI_ID (insn) = fndecl_abi (function).id ();
    SIBLING_CALL_P (insn) = 1;
  
    /* Run just enough of rest_of_compilation.  This sequence was
*************** riscv_convert_vector_chunks (struct gcc_
*** 11762,11768 ****
    if (min_vlen > 32)
      {
        /* When targeting minimum VLEN > 32, we should use 64-bit chunk size.
! 	 Otherwise we can not include SEW = 64bits.
  	 Runtime invariant: The single indeterminate represent the
  	 number of 64-bit chunks in a vector beyond minimum length of 64 bits.
  	 Thus the number of bytes in a vector is 8 + 8 * x1 which is
--- 11851,11857 ----
    if (min_vlen > 32)
      {
        /* When targeting minimum VLEN > 32, we should use 64-bit chunk size.
! 	 Otherwise we can not include SEW = 64 bits.
  	 Runtime invariant: The single indeterminate represent the
  	 number of 64-bit chunks in a vector beyond minimum length of 64 bits.
  	 Thus the number of bytes in a vector is 8 + 8 * x1 which is
*************** riscv_convert_vector_chunks (struct gcc_
*** 11782,11788 ****
    else
      {
        /* When targeting minimum VLEN = 32, we should use 32-bit
! 	 chunk size. Runtime invariant: The single indeterminate represent the
  	 number of 32-bit chunks in a vector beyond minimum length of 32 bits.
  	 Thus the number of bytes in a vector is 4 + 4 * x1 which is
  	 riscv_vector_chunks * 4 = poly_int (4, 4).  */
--- 11871,11877 ----
    else
      {
        /* When targeting minimum VLEN = 32, we should use 32-bit
! 	 chunk size.  Runtime invariant: The single indeterminate represent the
  	 number of 32-bit chunks in a vector beyond minimum length of 32 bits.
  	 Thus the number of bytes in a vector is 4 + 4 * x1 which is
  	 riscv_vector_chunks * 4 = poly_int (4, 4).  */
*************** riscv_convert_vector_chunks (struct gcc_
*** 11791,11800 ****
      }
  
    /* Set riscv_vector_chunks as poly (1, 1) run-time constant if TARGET_VECTOR
!      is enabled. Set riscv_vector_chunks as 1 compile-time constant if
       TARGET_VECTOR is disabled. riscv_vector_chunks is used in "riscv-modes.def"
!      to set RVV mode size. The RVV machine modes size are run-time constant if
!      TARGET_VECTOR is enabled. The RVV machine modes size remains default
       compile-time constant if TARGET_VECTOR is disabled.  */
    if (TARGET_VECTOR_OPTS_P (opts))
      {
--- 11880,11889 ----
      }
  
    /* Set riscv_vector_chunks as poly (1, 1) run-time constant if TARGET_VECTOR
!      is enabled.  Set riscv_vector_chunks as 1 compile-time constant if
       TARGET_VECTOR is disabled. riscv_vector_chunks is used in "riscv-modes.def"
!      to set RVV mode size.  The RVV machine modes size are run-time constant if
!      TARGET_VECTOR is enabled.  The RVV machine modes size remains default
       compile-time constant if TARGET_VECTOR is disabled.  */
    if (TARGET_VECTOR_OPTS_P (opts))
      {
*************** riscv_function_ok_for_sibcall (tree decl
*** 12486,12492 ****
      return false;
  
    /* Don't use sibcalls in the large model, because a sibcall instruction
!      expanding and a epilogue expanding both use RISCV_PROLOGUE_TEMP
       register.  */
    if (riscv_cmodel == CM_LARGE)
      return false;
--- 12575,12581 ----
      return false;
  
    /* Don't use sibcalls in the large model, because a sibcall instruction
!      expanding and an epilogue expanding both use RISCV_PROLOGUE_TEMP
       register.  */
    if (riscv_cmodel == CM_LARGE)
      return false;
*************** zcmp_additional_adj (HOST_WIDE_INT total
*** 12813,12822 ****
  bool
  riscv_zcmp_valid_stack_adj_bytes_p (HOST_WIDE_INT total, int regs_num)
  {
!   HOST_WIDE_INT additioanl_bytes = zcmp_additional_adj (total, regs_num);
!   return additioanl_bytes == 0 || additioanl_bytes == 1 * ZCMP_SP_INC_STEP
! 	 || additioanl_bytes == 2 * ZCMP_SP_INC_STEP
! 	 || additioanl_bytes == ZCMP_MAX_SPIMM * ZCMP_SP_INC_STEP;
  }
  
  /* Return true if it's valid gpr_save pattern.  */
--- 12902,12911 ----
  bool
  riscv_zcmp_valid_stack_adj_bytes_p (HOST_WIDE_INT total, int regs_num)
  {
!   HOST_WIDE_INT additional_bytes = zcmp_additional_adj (total, regs_num);
!   return additional_bytes == 0 || additional_bytes == 1 * ZCMP_SP_INC_STEP
! 	 || additional_bytes == 2 * ZCMP_SP_INC_STEP
! 	 || additional_bytes == ZCMP_MAX_SPIMM * ZCMP_SP_INC_STEP;
  }
  
  /* Return true if it's valid gpr_save pattern.  */
*************** riscv_regmode_natural_size (machine_mode
*** 13105,13111 ****
  	return BYTES_PER_RISCV_VECTOR;
        else if (!riscv_vls_mode_p (mode))
  	/* For -march=rv64gc_zve32f, the natural vector register size
! 	   is 32bits which is smaller than scalar register size, so we
  	   return minimum size between vector register size and scalar
  	   register size.  */
  	return MIN (size.to_constant (), UNITS_PER_WORD);
--- 13194,13200 ----
  	return BYTES_PER_RISCV_VECTOR;
        else if (!riscv_vls_mode_p (mode))
  	/* For -march=rv64gc_zve32f, the natural vector register size
! 	   is 32 bits which is smaller than scalar register size, so we
  	   return minimum size between vector register size and scalar
  	   register size.  */
  	return MIN (size.to_constant (), UNITS_PER_WORD);
*************** riscv_frm_mode_needed (rtx_insn *cur_ins
*** 13469,13475 ****
  {
    if (!DYNAMIC_FRM_RTL(cfun))
      {
!       /* The dynamic frm will be initialized only onece during cfun.  */
        DYNAMIC_FRM_RTL (cfun) = gen_reg_rtx (SImode);
        emit_insn_at_entry (gen_frrmsi (DYNAMIC_FRM_RTL (cfun)));
        CFUN_IN_CALL (cfun) = false;
--- 13558,13564 ----
  {
    if (!DYNAMIC_FRM_RTL(cfun))
      {
!       /* The dynamic frm will be initialized only once during cfun.  */
        DYNAMIC_FRM_RTL (cfun) = gen_reg_rtx (SImode);
        emit_insn_at_entry (gen_frrmsi (DYNAMIC_FRM_RTL (cfun)));
        CFUN_IN_CALL (cfun) = false;
*************** vxrm_unknown_p (rtx_insn *insn)
*** 13602,13608 ****
    if (reg_set_p (gen_rtx_REG (SImode, VXRM_REGNUM), insn))
      return true;
  
!   /* Return true for all assembly since users may hardcode a assembly
       like this: asm volatile ("csrwi vxrm, 0").  */
    if (asm_insn_p (insn))
      return true;
--- 13691,13697 ----
    if (reg_set_p (gen_rtx_REG (SImode, VXRM_REGNUM), insn))
      return true;
  
!   /* Return true for all assembly since users may hardcode an assembly
       like this: asm volatile ("csrwi vxrm, 0").  */
    if (asm_insn_p (insn))
      return true;
*************** dispatch_function_versions (tree dispatc
*** 14832,14838 ****
  
    gseq = bb_seq (*empty_bb);
    /* Function version dispatch is via IFUNC.  IFUNC resolvers fire before
!      constructors, so explicity call __init_riscv_feature_bits here.  */
    tree init_fn_type = build_function_type_list (void_type_node,
  						long_unsigned_type_node,
  						ptr_type_node,
--- 14921,14927 ----
  
    gseq = bb_seq (*empty_bb);
    /* Function version dispatch is via IFUNC.  IFUNC resolvers fire before
!      constructors, so explicitly call __init_riscv_feature_bits here.  */
    tree init_fn_type = build_function_type_list (void_type_node,
  						long_unsigned_type_node,
  						ptr_type_node,
*************** synthesize_ior_xor (rtx_code code, rtx o
*** 15459,15465 ****
  
    /* The number of instructions to synthesize the constant is a good
       estimate of the budget.  That does not account for out of order
!      execution an fusion in the constant synthesis those would naturally
       decrease the budget.  It also does not account for the IOR/XOR at
       the end of the sequence which would increase the budget.  */
    int budget = (TARGET_ZBS ? riscv_const_insns (operands[2], true) : -1);
--- 15548,15554 ----
  
    /* The number of instructions to synthesize the constant is a good
       estimate of the budget.  That does not account for out of order
!      execution and fusion in the constant synthesis those would naturally
       decrease the budget.  It also does not account for the IOR/XOR at
       the end of the sequence which would increase the budget.  */
    int budget = (TARGET_ZBS ? riscv_const_insns (operands[2], true) : -1);
*************** synthesize_ior_xor (rtx_code code, rtx o
*** 15478,15484 ****
        budget--;
      }
  
!   /* Check for bseti cases. For each remaining bit in ival,
       decrease the budget by one. */
    while (ival)
      {
--- 15567,15573 ----
        budget--;
      }
  
!   /* Check for bseti cases.  For each remaining bit in ival,
       decrease the budget by one. */
    while (ival)
      {
*************** synthesize_and (rtx operands[3])
*** 15696,15702 ****
  
    /* The number of instructions to synthesize the constant is a good
       estimate of the budget.  That does not account for out of order
!      execution an fusion in the constant synthesis those would naturally
       decrease the budget.  It also does not account for the AND at
       the end of the sequence which would increase the budget. */
    int budget = riscv_const_insns (operands[2], true);
--- 15785,15791 ----
  
    /* The number of instructions to synthesize the constant is a good
       estimate of the budget.  That does not account for out of order
!      execution and fusion in the constant synthesis those would naturally
       decrease the budget.  It also does not account for the AND at
       the end of the sequence which would increase the budget. */
    int budget = riscv_const_insns (operands[2], true);
*************** riscv_memtag_tag_bitsize ()
*** 16225,16232 ****
  #define TARGET_FUNCTION_ARG_BOUNDARY riscv_function_arg_boundary
  #undef TARGET_FNTYPE_ABI
  #define TARGET_FNTYPE_ABI riscv_fntype_abi
- #undef TARGET_INSN_CALLEE_ABI
- #define TARGET_INSN_CALLEE_ABI riscv_insn_callee_abi
  
  #undef TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS
  #define TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS \
--- 16314,16319 ----
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv.h gcc-17-20260607/gcc/config/riscv/riscv.h
*** gcc-17-20260531/gcc/config/riscv/riscv.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv.h	Sun Jun  7 22:32:06 2026
*************** extern const char *riscv_arch_help (int
*** 66,71 ****
--- 66,72 ----
     --with-tune is ignored if -mtune or -mcpu is specified.
     --with-isa-spec is ignored if -misa-spec is specified.
     --with-tls is ignored if -mtls-dialect is specified.
+    --with-cmodel is ignored if -mcmodel is specified.
  
     Uses default values if -mcpu doesn't have a valid option.  */
  #define OPTION_DEFAULT_SPECS \
*************** extern const char *riscv_arch_help (int
*** 79,84 ****
--- 80,86 ----
    {"abi", "%{!mabi=*:-mabi=%(VALUE)}" },				\
    {"isa_spec", "%{!misa-spec=*:-misa-spec=%(VALUE)}" },			\
    {"tls", "%{!mtls-dialect=*:-mtls-dialect=%(VALUE)}"},         	\
+   {"cmodel", "%{!mcmodel=*:-mcmodel=%(VALUE)}" },			\
  
  #ifdef IN_LIBGCC2
  #undef TARGET_64BIT
*************** ARCH_UNSET_CLEANUP_SPECS \
*** 177,183 ****
  
  /* The `Q' extension is not yet supported.  */
  #define UNITS_PER_FP_REG (TARGET_DOUBLE_FLOAT ? 8 : 4)
! /* Size per vector register. For VLEN = 32, size = poly (4, 4). Otherwise, size = poly (8, 8). */
  #define UNITS_PER_V_REG (riscv_vector_chunks * riscv_bytes_per_vector_chunk)
  
  /* The largest type that can be passed in floating-point registers.  */
--- 179,186 ----
  
  /* The `Q' extension is not yet supported.  */
  #define UNITS_PER_FP_REG (TARGET_DOUBLE_FLOAT ? 8 : 4)
! /* Size per vector register.  For VLEN = 32, size = poly (4, 4).
!    Otherwise, size = poly (8, 8).  */
  #define UNITS_PER_V_REG (riscv_vector_chunks * riscv_bytes_per_vector_chunk)
  
  /* The largest type that can be passed in floating-point registers.  */
*************** extern enum riscv_cc get_riscv_cc (const
*** 901,907 ****
  
  #undef ASM_OUTPUT_OPCODE
  #define ASM_OUTPUT_OPCODE(STREAM, PTR)	\
!   (PTR) = riscv_asm_output_opcode(STREAM, PTR)
  
  #define JUMP_TABLES_IN_TEXT_SECTION (riscv_cmodel == CM_LARGE)
  #define CASE_VECTOR_MODE SImode
--- 904,910 ----
  
  #undef ASM_OUTPUT_OPCODE
  #define ASM_OUTPUT_OPCODE(STREAM, PTR)	\
!   (PTR) = riscv_asm_output_opcode (STREAM, PTR)
  
  #define JUMP_TABLES_IN_TEXT_SECTION (riscv_cmodel == CM_LARGE)
  #define CASE_VECTOR_MODE SImode
*************** extern void riscv_remove_unneeded_save_r
*** 1284,1290 ****
  #define DWARF_REG_TO_UNWIND_COLUMN(REGNO) \
    ((REGNO == RISCV_DWARF_VLENB) ? (FIRST_PSEUDO_REGISTER + 1) : REGNO)
  
! /* Like s390, riscv also defined this macro for the vector comparision.  Then
     the simplify-rtx relational_result will canonicalize the result to the
     CONST1_RTX for the simplification.  */
  #define VECTOR_STORE_FLAG_VALUE(MODE) CONSTM1_RTX (GET_MODE_INNER (MODE))
--- 1287,1293 ----
  #define DWARF_REG_TO_UNWIND_COLUMN(REGNO) \
    ((REGNO == RISCV_DWARF_VLENB) ? (FIRST_PSEUDO_REGISTER + 1) : REGNO)
  
! /* Like s390, riscv also defined this macro for the vector comparison.  Then
     the simplify-rtx relational_result will canonicalize the result to the
     CONST1_RTX for the simplification.  */
  #define VECTOR_STORE_FLAG_VALUE(MODE) CONSTM1_RTX (GET_MODE_INNER (MODE))
*************** extern void riscv_remove_unneeded_save_r
*** 1328,1334 ****
  		STACK_BOUNDARY / BITS_PER_UNIT)		   \
      : (crtl->outgoing_args_size + STACK_POINTER_OFFSET))
  
! /* According to the RISC-V C API, the arch string may contains ','. To avoid
     the conflict with the default separator, we choose '#' as the separator for
     the target attribute.  */
  #define TARGET_CLONES_ATTR_SEPARATOR '#'
--- 1331,1337 ----
  		STACK_BOUNDARY / BITS_PER_UNIT)		   \
      : (crtl->outgoing_args_size + STACK_POINTER_OFFSET))
  
! /* According to the RISC-V C API, the arch string may contain ','.  To avoid
     the conflict with the default separator, we choose '#' as the separator for
     the target attribute.  */
  #define TARGET_CLONES_ATTR_SEPARATOR '#'
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/riscv.md gcc-17-20260607/gcc/config/riscv/riscv.md
*** gcc-17-20260531/gcc/config/riscv/riscv.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/riscv.md	Sun Jun  7 22:32:06 2026
***************
*** 83,91 ****
    UNSPEC_CLMULH
    UNSPEC_CLMULR
  
-   ;; the calling convention of callee
-   UNSPEC_CALLEE_CC
- 
    ;; String unspecs
    UNSPEC_STRLEN
  
--- 83,88 ----
***************
*** 362,368 ****
  ;; rdvl        vector length vl csrr read
  ;; wrvxrm      vector fixed-point rounding mode write
  ;; wrfrm       vector floating-point rounding mode write
! ;; vsetvl      vector configuration-setting instrucions
  ;; 7. Vector Loads and Stores
  ;; vlde        vector unit-stride load instructions
  ;; vste        vector unit-stride store instructions
--- 359,365 ----
  ;; rdvl        vector length vl csrr read
  ;; wrvxrm      vector fixed-point rounding mode write
  ;; wrfrm       vector floating-point rounding mode write
! ;; vsetvl      vector configuration-setting instructions
  ;; 7. Vector Loads and Stores
  ;; vlde        vector unit-stride load instructions
  ;; vste        vector unit-stride store instructions
***************
*** 489,499 ****
  ;; vsm4r        crypto vector SM4 Rounds instructions
  ;; vsm3me       crypto vector SM3 Message Expansion instructions
  ;; vsm3c        crypto vector SM3 Compression instructions
! ;; 18.Vector BF16 instrctions
  ;; vfncvtbf16  vector narrowing single floating-point to brain floating-point instruction
  ;; vfwcvtbf16  vector widening brain floating-point to single floating-point instruction
  ;; vfwmaccbf16  vector BF16 widening multiply-accumulate
! ;; SiFive custom extension instrctions
  ;; sf_vqmacc      vector matrix integer multiply-add instructions
  ;; sf_vfnrclip     vector fp32 to int8 ranged clip instructions
  ;; sf_vc vector coprocessor interface without side effect
--- 486,496 ----
  ;; vsm4r        crypto vector SM4 Rounds instructions
  ;; vsm3me       crypto vector SM3 Message Expansion instructions
  ;; vsm3c        crypto vector SM3 Compression instructions
! ;; 18.Vector BF16 instructions
  ;; vfncvtbf16  vector narrowing single floating-point to brain floating-point instruction
  ;; vfwcvtbf16  vector widening brain floating-point to single floating-point instruction
  ;; vfwmaccbf16  vector BF16 widening multiply-accumulate
! ;; SiFive custom extension instructions
  ;; sf_vqmacc      vector matrix integer multiply-add instructions
  ;; sf_vfnrclip     vector fp32 to int8 ranged clip instructions
  ;; sf_vc vector coprocessor interface without side effect
***************
*** 680,686 ****
  (define_attr "tune"
    "generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo,mips_p8700,
     tt_ascalon_d8,andes_25_series,andes_23_series,andes_45_series,spacemit_x60,
!    arcv_rmx100,arcv_rhx100"
    (const (symbol_ref "((enum attr_tune) riscv_microarchitecture)")))
  
  ;; Describe a user's asm statement.
--- 677,683 ----
  (define_attr "tune"
    "generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo,mips_p8700,
     tt_ascalon_d8,andes_25_series,andes_23_series,andes_45_series,spacemit_x60,
!    arcv_rmx100,arcv_rhx100,xt_c908"
    (const (symbol_ref "((enum attr_tune) riscv_microarchitecture)")))
  
  ;; Describe a user's asm statement.
***************
*** 748,754 ****
  	  || (TARGET_64BIT && synthesize_add_extended (operands))))
      DONE;
  
!   /* Constants have already been handled already.  */
    if (TARGET_64BIT)
      {
        rtx tdest = gen_reg_rtx (DImode);
--- 745,751 ----
  	  || (TARGET_64BIT && synthesize_add_extended (operands))))
      DONE;
  
!   /* Constants have already been handled.  */
    if (TARGET_64BIT)
      {
        rtx tdest = gen_reg_rtx (DImode);
***************
*** 3148,3154 ****
    [(set_attr "type" "shift")
     (set_attr "mode" "SI")])
  
! ;; Canonical form for a extend of a logical shift right (sign/zero extraction).
  ;; Special cases, that are ignored (handled elsewhere):
  ;; * Single-bit extraction (Zbs/XTheadBs)
  ;; * Single-bit extraction (Zicondops/XVentanaCondops)
--- 3145,3151 ----
    [(set_attr "type" "shift")
     (set_attr "mode" "SI")])
  
! ;; Canonical form for an extend of a logical shift right (sign/zero extraction).
  ;; Special cases, that are ignored (handled elsewhere):
  ;; * Single-bit extraction (Zbs/XTheadBs)
  ;; * Single-bit extraction (Zicondops/XVentanaCondops)
***************
*** 3245,3258 ****
    unsigned HOST_WIDE_INT mask = INTVAL (operands[3]);
    int leading  = clz_hwi (mask);
    int trailing = ctz_hwi (mask);
!  
    operands[5] = GEN_INT (leading + trailing);
    operands[6] = GEN_INT (leading);
  })
  
  ;; Handle logical AND feeding an equality test against zero where an operand
  ;; to the AND is a constant requiring synthesis.  Because we only care about
! ;; zero/nonzero state afte the AND, we may be able to shift both operands
  ;; of the AND to the right and eliminate the need for constant synthesis.
  ;;
  ;; Once mvconst_internal goes away, this likely turns into a simple splitter.
--- 3242,3255 ----
    unsigned HOST_WIDE_INT mask = INTVAL (operands[3]);
    int leading  = clz_hwi (mask);
    int trailing = ctz_hwi (mask);
! 
    operands[5] = GEN_INT (leading + trailing);
    operands[6] = GEN_INT (leading);
  })
  
  ;; Handle logical AND feeding an equality test against zero where an operand
  ;; to the AND is a constant requiring synthesis.  Because we only care about
! ;; zero/nonzero state after the AND, we may be able to shift both operands
  ;; of the AND to the right and eliminate the need for constant synthesis.
  ;;
  ;; Once mvconst_internal goes away, this likely turns into a simple splitter.
***************
*** 4145,4166 ****
  (define_expand "sibcall"
    [(parallel [(call (match_operand 0 "")
  		    (match_operand 1 ""))
! 	      (use (unspec:SI [
! 		     (match_operand 2 "const_int_operand")
! 	           ] UNSPEC_CALLEE_CC))])]
    ""
  {
    rtx target = riscv_legitimize_call_address (XEXP (operands[0], 0));
!   emit_call_insn (gen_sibcall_internal (target, operands[1], operands[2]));
    DONE;
  })
  
  (define_insn "sibcall_internal"
    [(call (mem:SI (match_operand 0 "call_insn_operand" "j,S,U"))
! 	 (match_operand 1 "" ""))
!    (use (unspec:SI [
!           (match_operand 2 "const_int_operand")
!         ] UNSPEC_CALLEE_CC))]
    "SIBLING_CALL_P (insn)"
    "@
     jr\t%0
--- 4142,4158 ----
  (define_expand "sibcall"
    [(parallel [(call (match_operand 0 "")
  		    (match_operand 1 ""))
! 	      (use (match_operand 2 ""))])]
    ""
  {
    rtx target = riscv_legitimize_call_address (XEXP (operands[0], 0));
!   emit_call_insn (gen_sibcall_internal (target, operands[1]));
    DONE;
  })
  
  (define_insn "sibcall_internal"
    [(call (mem:SI (match_operand 0 "call_insn_operand" "j,S,U"))
! 	 (match_operand 1 "" ""))]
    "SIBLING_CALL_P (insn)"
    "@
     jr\t%0
***************
*** 4172,4195 ****
    [(parallel [(set (match_operand 0 "")
  		   (call (match_operand 1 "")
  			 (match_operand 2 "")))
! 	      (use (unspec:SI [
! 		     (match_operand 3 "const_int_operand")
! 	           ] UNSPEC_CALLEE_CC))])]
    ""
  {
    rtx target = riscv_legitimize_call_address (XEXP (operands[1], 0));
!   emit_call_insn (gen_sibcall_value_internal (operands[0], target, operands[2],
! 					      operands[3]));
    DONE;
  })
  
  (define_insn "sibcall_value_internal"
    [(set (match_operand 0 "" "")
  	(call (mem:SI (match_operand 1 "call_insn_operand" "j,S,U"))
! 	      (match_operand 2 "" "")))
!    (use (unspec:SI [
!           (match_operand 3 "const_int_operand")
!         ] UNSPEC_CALLEE_CC))]
    "SIBLING_CALL_P (insn)"
    "@
     jr\t%1
--- 4164,4182 ----
    [(parallel [(set (match_operand 0 "")
  		   (call (match_operand 1 "")
  			 (match_operand 2 "")))
! 	      (use (match_operand 3 ""))])]
    ""
  {
    rtx target = riscv_legitimize_call_address (XEXP (operands[1], 0));
!   emit_call_insn (gen_sibcall_value_internal (operands[0], target,
! 					      operands[2]));
    DONE;
  })
  
  (define_insn "sibcall_value_internal"
    [(set (match_operand 0 "" "")
  	(call (mem:SI (match_operand 1 "call_insn_operand" "j,S,U"))
! 	      (match_operand 2 "" "")))]
    "SIBLING_CALL_P (insn)"
    "@
     jr\t%1
***************
*** 4200,4221 ****
  (define_expand "call"
    [(parallel [(call (match_operand 0 "")
  		    (match_operand 1 ""))
! 	      (use (unspec:SI [
! 		     (match_operand 2 "const_int_operand")
! 	           ] UNSPEC_CALLEE_CC))])]
    ""
  {
    rtx target = riscv_legitimize_call_address (XEXP (operands[0], 0));
!   emit_call_insn (gen_call_internal (target, operands[1], operands[2]));
    DONE;
  })
  
  (define_insn "call_internal"
    [(call (mem:SI (match_operand 0 "call_insn_operand" "l,S,U"))
  	 (match_operand 1 "" ""))
-    (use (unspec:SI [
-           (match_operand 2 "const_int_operand")
-         ] UNSPEC_CALLEE_CC))
     (clobber (reg:SI RETURN_ADDR_REGNUM))]
    ""
    "@
--- 4187,4203 ----
  (define_expand "call"
    [(parallel [(call (match_operand 0 "")
  		    (match_operand 1 ""))
! 	      (use (match_operand 2 ""))])]
    ""
  {
    rtx target = riscv_legitimize_call_address (XEXP (operands[0], 0));
!   emit_call_insn (gen_call_internal (target, operands[1]));
    DONE;
  })
  
  (define_insn "call_internal"
    [(call (mem:SI (match_operand 0 "call_insn_operand" "l,S,U"))
  	 (match_operand 1 "" ""))
     (clobber (reg:SI RETURN_ADDR_REGNUM))]
    ""
    "@
***************
*** 4228,4241 ****
    [(parallel [(set (match_operand 0 "")
  		   (call (match_operand 1 "")
  			 (match_operand 2 "")))
! 	      (use (unspec:SI [
! 		     (match_operand 3 "const_int_operand")
! 	           ] UNSPEC_CALLEE_CC))])]
    ""
  {
    rtx target = riscv_legitimize_call_address (XEXP (operands[1], 0));
!   emit_call_insn (gen_call_value_internal (operands[0], target, operands[2],
! 					   operands[3]));
    DONE;
  })
  
--- 4210,4220 ----
    [(parallel [(set (match_operand 0 "")
  		   (call (match_operand 1 "")
  			 (match_operand 2 "")))
! 	      (use (match_operand 3 ""))])]
    ""
  {
    rtx target = riscv_legitimize_call_address (XEXP (operands[1], 0));
!   emit_call_insn (gen_call_value_internal (operands[0], target, operands[2]));
    DONE;
  })
  
***************
*** 4243,4251 ****
    [(set (match_operand 0 "" "")
  	(call (mem:SI (match_operand 1 "call_insn_operand" "l,S,U"))
  	      (match_operand 2 "" "")))
-    (use (unspec:SI [
-           (match_operand 3 "const_int_operand")
-         ] UNSPEC_CALLEE_CC))
     (clobber (reg:SI RETURN_ADDR_REGNUM))]
    ""
    "@
--- 4222,4227 ----
***************
*** 4265,4273 ****
  {
    int i;
  
!   /* Untyped calls always use the RISCV_CC_BASE calling convention.  */
!   emit_call_insn (gen_call (operands[0], const0_rtx,
! 			    gen_int_mode (RISCV_CC_BASE, SImode)));
  
    for (i = 0; i < XVECLEN (operands[2], 0); i++)
      {
--- 4241,4247 ----
  {
    int i;
  
!   emit_call_insn (gen_call (operands[0], const0_rtx, NULL));
  
    for (i = 0; i < XVECLEN (operands[2], 0); i++)
      {
***************
*** 4786,4792 ****
      FAIL;
  })
  
! ; Split (A<<1) | (A>=0) into a rotate + xor. Using two’s-complement identities:
  ; (A>=0) == ((A >> (W-1)) ^ 1) and (A<<1) | (A>>(W-1)) == ROL1 (A), so the whole
  ; expression equals ROL1 (A) ^ 1.
  (define_split
--- 4760,4766 ----
      FAIL;
  })
  
! ; Split (A<<1) | (A>=0) into a rotate + xor.  Using two’s-complement identities:
  ; (A>=0) == ((A >> (W-1)) ^ 1) and (A<<1) | (A>>(W-1)) == ROL1 (A), so the whole
  ; expression equals ROL1 (A) ^ 1.
  (define_split
***************
*** 4814,4820 ****
    [(set_attr "type" "load")
     (set (attr "length") (const_int 8))])
  
! ;; The AND is redunant here.  It always turns off the high 32 bits  and the
  ;; low number of bits equal to the shift count.  Those upper 32 bits will be
  ;; reset by the SIGN_EXTEND at the end.
  ;;
--- 4788,4794 ----
    [(set_attr "type" "load")
     (set (attr "length") (const_int 8))])
  
! ;; The AND is redundant here.  It always turns off the high 32 bits and the
  ;; low number of bits equal to the shift count.  Those upper 32 bits will be
  ;; reset by the SIGN_EXTEND at the end.
  ;;
***************
*** 5309,5313 ****
--- 5283,5288 ----
  (include "andes-25-series.md")
  (include "andes-45-series.md")
  (include "spacemit-x60.md")
+ (include "xt-c908.md")
  (include "arcv-rmx100.md")
  (include "arcv-rhx100.md")
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/sifive-vector-builtins-functions.def gcc-17-20260607/gcc/config/riscv/sifive-vector-builtins-functions.def
*** gcc-17-20260531/gcc/config/riscv/sifive-vector-builtins-functions.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/sifive-vector-builtins-functions.def	Sun Jun  7 22:32:06 2026
*************** any later version.
*** 11,21 ****
  
  GCC is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
! along with GCC; see the file COPYING3. If not see
  <http://www.gnu.org/licenses/>. */
  
  /* Use "DEF_RVV_FUNCTION" macro to define RVV intrinsic functions.
--- 11,21 ----
  
  GCC is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
! along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>. */
  
  /* Use "DEF_RVV_FUNCTION" macro to define RVV intrinsic functions.
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/sifive_vector.h gcc-17-20260607/gcc/config/riscv/sifive_vector.h
*** gcc-17-20260531/gcc/config/riscv/sifive_vector.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/sifive_vector.h	Sun Jun  7 22:32:06 2026
***************
*** 31,37 ****
  #define __riscv_intrinsic_xsfvqmaccqoq 1
  
  /* TODO: This should have a separate pragma to include only the SiFive
!          vector intrinsics. For now, we are including riscv_vector.h. */
  #include <riscv_vector.h>
  
  #endif // __SIFIVE_VECTOR_H
--- 31,37 ----
  #define __riscv_intrinsic_xsfvqmaccqoq 1
  
  /* TODO: This should have a separate pragma to include only the SiFive
! 	vector intrinsics.  For now, we are including riscv_vector.h.  */
  #include <riscv_vector.h>
  
  #endif // __SIFIVE_VECTOR_H
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/spacemit-x60.md gcc-17-20260607/gcc/config/riscv/spacemit-x60.md
*** gcc-17-20260531/gcc/config/riscv/spacemit-x60.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/spacemit-x60.md	Sun Jun  7 22:32:06 2026
***************
*** 24,30 ****
  ;; 2*alu + 2*lsu + 1*fpalu + 1*fdivsqrt + 1*vxu
  ;;
  ;; There's actually two VXU units and ops get split across them
! ;; to give the illusion of a single wider unit with higher 
  ;; performance.  There are a few ops that can only be fed into
  ;; one of the two units.  For the purposes of this scheduling
  ;; model, the VXU is treated as a single unit.
--- 24,30 ----
  ;; 2*alu + 2*lsu + 1*fpalu + 1*fdivsqrt + 1*vxu
  ;;
  ;; There's actually two VXU units and ops get split across them
! ;; to give the illusion of a single wider unit with higher
  ;; performance.  There are a few ops that can only be fed into
  ;; one of the two units.  For the purposes of this scheduling
  ;; model, the VXU is treated as a single unit.
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/thead.cc gcc-17-20260607/gcc/config/riscv/thead.cc
*** gcc-17-20260531/gcc/config/riscv/thead.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/thead.cc	Sun Jun  7 22:32:06 2026
*************** th_mempair_output_move (rtx operands[4],
*** 143,149 ****
  /* Analyze if a pair of loads/stores MEM1 and MEM2 with given MODE
     are consecutive so they can be merged into a mempair instruction.
     RESERVED will be set to true, if a reversal of the accesses is
!    required (false otherwise). Returns true if the accesses can be
     merged (even if reversing is necessary) and false if not.  */
  
  static bool
--- 143,149 ----
  /* Analyze if a pair of loads/stores MEM1 and MEM2 with given MODE
     are consecutive so they can be merged into a mempair instruction.
     RESERVED will be set to true, if a reversal of the accesses is
!    required (false otherwise).  Returns true if the accesses can be
     merged (even if reversing is necessary) and false if not.  */
  
  static bool
*************** th_mempair_operands_p (rtx operands[4],
*** 291,297 ****
    if (!th_mempair_check_consecutive_mems (mode, &mem_1, &mem_2, &reversed))
      return false;
  
!   /* If necessary, reverse the local copy of the operands to simplify	
       testing of alignments and mempair operand.  */
    if (reversed)
      {
--- 291,297 ----
    if (!th_mempair_check_consecutive_mems (mode, &mem_1, &mem_2, &reversed))
      return false;
  
!   /* If necessary, reverse the local copy of the operands to simplify
       testing of alignments and mempair operand.  */
    if (reversed)
      {
*************** th_mempair_restore_regs (rtx operands[4]
*** 372,378 ****
  }
  
  /* Prepare the OPERANDS array to emit a mempair instruction using the
!    provided information. No checks are performed, the resulting array
     should be validated using th_mempair_operands_p().  */
  
  void
--- 372,378 ----
  }
  
  /* Prepare the OPERANDS array to emit a mempair instruction using the
!    provided information.  No checks are performed, the resulting array
     should be validated using th_mempair_operands_p().  */
  
  void
*************** th_memidx_legitimate_modify_p (rtx x, bo
*** 535,542 ****
  }
  
  /* Provide a buffer for a th.lXia/th.lXib/th.sXia/th.sXib instruction
!    for the given MODE. If LOAD is true, a load instruction will be
!    provided (otherwise, a store instruction). If X is not suitable
     return NULL.  */
  
  static const char *
--- 535,542 ----
  }
  
  /* Provide a buffer for a th.lXia/th.lXib/th.sXia/th.sXib instruction
!    for the given MODE.  If LOAD is true, a load instruction will be
!    provided (otherwise, a store instruction).  If X is not suitable
     return NULL.  */
  
  static const char *
*************** th_memidx_classify_address_index (struct
*** 702,708 ****
  	   && GET_MODE (XEXP (offset, 0)) == DImode
  	   && GET_MODE (XEXP (XEXP (offset, 0), 0)) == SImode
  	   && CONST_INT_P (XEXP (offset, 1))
! 	   && IN_RANGE(INTVAL (XEXP (offset, 1)), 0, 3))
      {
        type = (GET_CODE (XEXP (offset, 0)) == SIGN_EXTEND)
  	     ? ADDRESS_REG_REG : ADDRESS_REG_UREG;
--- 702,708 ----
  	   && GET_MODE (XEXP (offset, 0)) == DImode
  	   && GET_MODE (XEXP (XEXP (offset, 0), 0)) == SImode
  	   && CONST_INT_P (XEXP (offset, 1))
! 	   && IN_RANGE (INTVAL (XEXP (offset, 1)), 0, 3))
      {
        type = (GET_CODE (XEXP (offset, 0)) == SIGN_EXTEND)
  	     ? ADDRESS_REG_REG : ADDRESS_REG_UREG;
*************** th_memidx_legitimate_index_p (rtx x, boo
*** 789,796 ****
  }
  
  /* Provide a buffer for a th.lrX/th.lurX/th.srX/th.surX instruction
!    for the given MODE. If LOAD is true, a load instruction will be
!    provided (otherwise, a store instruction). If X is not suitable
     return NULL.  */
  
  static const char *
--- 789,796 ----
  }
  
  /* Provide a buffer for a th.lrX/th.lurX/th.srX/th.surX instruction
!    for the given MODE.  If LOAD is true, a load instruction will be
!    provided (otherwise, a store instruction).  If X is not suitable
     return NULL.  */
  
  static const char *
*************** th_memidx_output_index (rtx dest, rtx sr
*** 831,838 ****
  }
  
  /* Provide a buffer for a th.flX/th.fluX/th.fsX/th.fsuX instruction
!    for the given MODE. If LOAD is true, a load instruction will be
!    provided (otherwise, a store instruction). If X is not suitable
     return NULL.  */
  
  static const char *
--- 831,838 ----
  }
  
  /* Provide a buffer for a th.flX/th.fluX/th.fsX/th.fsuX instruction
!    for the given MODE.  If LOAD is true, a load instruction will be
!    provided (otherwise, a store instruction).  If X is not suitable
     return NULL.  */
  
  static const char *
*************** th_classify_address (struct riscv_addres
*** 899,905 ****
  /* Provide a string containing a XTheadMemIdx instruction for the given
     MODE from the provided SRC to the provided DEST.
     A pointer to a NULL-terminated string containing the instruction will
!    be returned if a suitable instruction is available. Otherwise, this
     function returns NULL.  */
  
  const char *
--- 899,905 ----
  /* Provide a string containing a XTheadMemIdx instruction for the given
     MODE from the provided SRC to the provided DEST.
     A pointer to a NULL-terminated string containing the instruction will
!    be returned if a suitable instruction is available.  Otherwise, this
     function returns NULL.  */
  
  const char *
*************** th_print_operand_address (FILE *file, ma
*** 1224,1230 ****
  /* Number array of registers X1, X5-X7, X10-X17, X28-X31, to be
     operated on by instruction th.ipush/th.ipop in XTheadInt.  */
  
! int th_int_regs[] ={
    RETURN_ADDR_REGNUM,
    T0_REGNUM, T1_REGNUM, T2_REGNUM,
    A0_REGNUM, A1_REGNUM, A2_REGNUM, A3_REGNUM,
--- 1224,1230 ----
  /* Number array of registers X1, X5-X7, X10-X17, X28-X31, to be
     operated on by instruction th.ipush/th.ipop in XTheadInt.  */
  
! int th_int_regs[] = {
    RETURN_ADDR_REGNUM,
    T0_REGNUM, T1_REGNUM, T2_REGNUM,
    A0_REGNUM, A1_REGNUM, A2_REGNUM, A3_REGNUM,
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/tt-ascalon-d8.md gcc-17-20260607/gcc/config/riscv/tt-ascalon-d8.md
*** gcc-17-20260531/gcc/config/riscv/tt-ascalon-d8.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/tt-ascalon-d8.md	Sun Jun  7 22:32:06 2026
***************
*** 94,100 ****
  
  ;; Integer division is not pipelined.  Do not block the unit for more than
  ;; three cycles so the DFA does not get too large.  Similar for other
! ;; non-pipelined instructions. Division is variable cycles so pick a value
  ;; in the middle.
  (define_insn_reservation "tt_ascalon_d8_idiv" 15
    (and (eq_attr "tune" "tt_ascalon_d8")
--- 94,100 ----
  
  ;; Integer division is not pipelined.  Do not block the unit for more than
  ;; three cycles so the DFA does not get too large.  Similar for other
! ;; non-pipelined instructions.  Division is variable cycles so pick a value
  ;; in the middle.
  (define_insn_reservation "tt_ascalon_d8_idiv" 15
    (and (eq_attr "tune" "tt_ascalon_d8")
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/vector-crypto.md gcc-17-20260607/gcc/config/riscv/vector-crypto.md
*** gcc-17-20260531/gcc/config/riscv/vector-crypto.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/vector-crypto.md	Sun Jun  7 22:32:06 2026
***************
*** 141,147 ****
    [(set_attr "type" "vandn")
     (set_attr "mode" "<MODE>")])
  
! ;; Handle GET_MODE_INNER (mode) = DImode. We need to split them since
  ;; we need to deal with SEW = 64 in RV32 system.
  (define_expand "@pred_vandn<mode>_scalar"
    [(set (match_operand:V_VLSI_D 0 "register_operand")
--- 141,147 ----
    [(set_attr "type" "vandn")
     (set_attr "mode" "<MODE>")])
  
! ;; Handle GET_MODE_INNER (mode) = DImode.  We need to split them since
  ;; we need to deal with SEW = 64 in RV32 system.
  (define_expand "@pred_vandn<mode>_scalar"
    [(set (match_operand:V_VLSI_D 0 "register_operand")
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/vector-iterators.md gcc-17-20260607/gcc/config/riscv/vector-iterators.md
*** gcc-17-20260531/gcc/config/riscv/vector-iterators.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/vector-iterators.md	Sun Jun  7 22:32:06 2026
***************
*** 4742,4748 ****
  ;; Due to we cannot define a mode_attr mapping one HF to both
  ;; the SI and DI, we use 2 different mode_atter to cover all
  ;; the combination as above, as well as the different iterator
! ;; for the lrint<m><n> patterns. Aka:
  ;;
  ;; V_F2SI_CONVERT: (HF, SF, DF) => SI
  ;; V_F2DI_CONVERT: (HF, SF, DF) => DI
--- 4742,4748 ----
  ;; Due to we cannot define a mode_attr mapping one HF to both
  ;; the SI and DI, we use 2 different mode_atter to cover all
  ;; the combination as above, as well as the different iterator
! ;; for the lrint<m><n> patterns.  Aka:
  ;;
  ;; V_F2SI_CONVERT: (HF, SF, DF) => SI
  ;; V_F2DI_CONVERT: (HF, SF, DF) => DI
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/vector.md gcc-17-20260607/gcc/config/riscv/vector.md
*** gcc-17-20260531/gcc/config/riscv/vector.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/vector.md	Sun Jun  7 22:32:06 2026
***************
*** 85,94 ****
  	 (const_string "true")]
  	(const_string "false")))
  
! ;; The default SEW of RVV instruction. This attribute doesn't mean the instruction
! ;; is necessary to require SEW check for example vlm.v which require ratio to
! ;; check. However, we need default value of SEW for vsetvl instruction since there
! ;; is no field for ratio in the vsetvl instruction encoding.
  (define_attr "sew" ""
    (cond [(eq_attr "mode" "RVVMF8BI,RVVMF4BI,RVVMF2BI,RVVM1BI,\
  			  RVVM8QI,RVVM4QI,RVVM2QI,RVVM1QI,RVVMF2QI,RVVMF4QI,RVVMF8QI,\
--- 85,94 ----
  	 (const_string "true")]
  	(const_string "false")))
  
! ;; The default SEW of RVV instruction.  This attribute doesn't mean the
! ;; instruction is necessary to require SEW check for example vlm.v which require
! ;; ratio to check.  However, we need default value of SEW for vsetvl instruction
! ;; since there is no field for ratio in the vsetvl instruction encoding.
  (define_attr "sew" ""
    (cond [(eq_attr "mode" "RVVMF8BI,RVVMF4BI,RVVMF2BI,RVVM1BI,\
  			  RVVM8QI,RVVM4QI,RVVM2QI,RVVM1QI,RVVMF2QI,RVVMF4QI,RVVMF8QI,\
***************
*** 1001,1007 ****
  	   (const_int 4)]
  	(const_int INVALID_ATTRIBUTE)))
  
! ;; Defines rounding mode of an fixed-point operation.
  
  (define_attr "vxrm_mode" "rnu,rne,rdn,rod,clobber,none"
    (cond [(eq_attr "type" "vaalu,vsmul,vsshift,vnclip")
--- 1001,1007 ----
  	   (const_int 4)]
  	(const_int INVALID_ATTRIBUTE)))
  
! ;; Defines rounding mode of a fixed-point operation.
  
  (define_attr "vxrm_mode" "rnu,rne,rdn,rod,clobber,none"
    (cond [(eq_attr "type" "vaalu,vsmul,vsshift,vnclip")
***************
*** 1022,1028 ****
  	 (const_string "clobber")]
          (const_string "none")))
  
! ;; Defines rounding mode of an floating-point operation.
  (define_attr "frm_mode" ""
    (cond [(eq_attr "type" "vfalu,vfwalu,vfmul,vfdiv,vfwmul")
  	 (symbol_ref "riscv_vector::FRM_DYN")]
--- 1022,1028 ----
  	 (const_string "clobber")]
          (const_string "none")))
  
! ;; Defines rounding mode of a floating-point operation.
  (define_attr "frm_mode" ""
    (cond [(eq_attr "type" "vfalu,vfwalu,vfmul,vfdiv,vfwmul")
  	 (symbol_ref "riscv_vector::FRM_DYN")]
***************
*** 1188,1194 ****
  	 registers.
  
         - We can not leave it to TARGET_SECONDARY_RELOAD since it happens
! 	 before spilling. The clobber scratch is used by spilling fractional
  	 registers in IRA/LRA so it's too early.  */
    if (TARGET_XTHEADVECTOR && reg_or_mem_operand (operands[1], <MODE>mode))
      {
--- 1188,1194 ----
  	 registers.
  
         - We can not leave it to TARGET_SECONDARY_RELOAD since it happens
! 	 before spilling.  The clobber scratch is used by spilling fractional
  	 registers in IRA/LRA so it's too early.  */
    if (TARGET_XTHEADVECTOR && reg_or_mem_operand (operands[1], <MODE>mode))
      {
***************
*** 1223,1229 ****
  ;;       (clobber (reg:SI 14 a4 [149]))])
  ;; So that we could be able to emit vsetvl instruction using clobber scratch a4.
  ;; To let LRA generate the expected pattern, we should exclude fractional vector
! ;; load/store in "*mov<mode>_whole". Otherwise, it will reload this pattern into:
  ;;  (insn 20 19 9 2 (set (reg:RVVMF4QI 98 v2 [orig:134 _1 ] [134])
  ;;           (mem/c:RVVMF4QI (reg:SI 13 a3 [155]) [1 %sfp+[-2, -2] S[2, 2] A8])))
  ;; which is not the pattern we want.
--- 1223,1231 ----
  ;;       (clobber (reg:SI 14 a4 [149]))])
  ;; So that we could be able to emit vsetvl instruction using clobber scratch a4.
  ;; To let LRA generate the expected pattern, we should exclude fractional vector
! ;; load/store in "*mov<mode>_whole".  Otherwise, it will reload this pattern
! ;; into:
! 
  ;;  (insn 20 19 9 2 (set (reg:RVVMF4QI 98 v2 [orig:134 _1 ] [134])
  ;;           (mem/c:RVVMF4QI (reg:SI 13 a3 [155]) [1 %sfp+[-2, -2] S[2, 2] A8])))
  ;; which is not the pattern we want.
***************
*** 1686,1695 ****
  ;; VL/VTYPE global registers status after "insert-vsetvl" PASS.
  
  ;; -  "@vsetvl<mode>_no_side_effects" has no side effects and excludes VL/VTYPE
! ;; global registers status (define set). It's only used by GCC standard pattern
! ;; expansion. For example: "mov<mode>" pattern for fractional vector modes which
! ;; need to set VL/VTYPE. Then we could manually call this pattern to gain benefits
! ;; from the optimization of each GCC internal PASS.
  
  ;; 1. void foo (float *in, float *out)
  ;;    {
--- 1688,1697 ----
  ;; VL/VTYPE global registers status after "insert-vsetvl" PASS.
  
  ;; -  "@vsetvl<mode>_no_side_effects" has no side effects and excludes VL/VTYPE
! ;; global registers status (define set).  It's only used by GCC standard pattern
! ;; expansion.  For example: "mov<mode>" pattern for fractional vector modes
! ;; which need to set VL/VTYPE.  Then we could manually call this pattern to gain
! ;; benefits from the optimization of each GCC internal PASS.
  
  ;; 1. void foo (float *in, float *out)
  ;;    {
***************
*** 1860,1868 ****
  ;; The reason we can remove signe_extend is because currently the vl value
  ;; returned by the vsetvl instruction ranges from 0 to 65536 (uint16_t), and
  ;; bits 17 to 63 (including 31) are always 0, so there is no change after
! ;; sign_extend. Note that for HI and QI modes we cannot do this.
  ;; Of course, if the range of instructions returned by vsetvl later expands
! ;; to 32bits, then this combine pattern needs to be removed. But that could be
  ;; a long time from now.
  (define_insn_and_split "*vsetvldi_no_side_effects_si_extend"
    [(set (match_operand:DI 0 "register_operand")
--- 1862,1870 ----
  ;; The reason we can remove signe_extend is because currently the vl value
  ;; returned by the vsetvl instruction ranges from 0 to 65536 (uint16_t), and
  ;; bits 17 to 63 (including 31) are always 0, so there is no change after
! ;; sign_extend.  Note that for HI and QI modes we cannot do this.
  ;; Of course, if the range of instructions returned by vsetvl later expands
! ;; to 32 bits, then this combine pattern needs to be removed.  But that could be
  ;; a long time from now.
  (define_insn_and_split "*vsetvldi_no_side_effects_si_extend"
    [(set (match_operand:DI 0 "register_operand")
***************
*** 2949,2955 ****
    [(set_attr "type" "vialu")
     (set_attr "mode" "<MODE>")])
  
! ;; Handle GET_MODE_INNER (mode) = DImode. We need to split them since
  ;; we need to deal with SEW = 64 in RV32 system.
  (define_expand "@pred_<optab><mode>_scalar"
    [(set (match_operand:V_VLSI_D 0 "register_operand")
--- 2951,2957 ----
    [(set_attr "type" "vialu")
     (set_attr "mode" "<MODE>")])
  
! ;; Handle GET_MODE_INNER (mode) = DImode.  We need to split them since
  ;; we need to deal with SEW = 64 in RV32 system.
  (define_expand "@pred_<optab><mode>_scalar"
    [(set (match_operand:V_VLSI_D 0 "register_operand")
***************
*** 4732,4738 ****
    [(set_attr "type" "<sat_insn_type>")
     (set_attr "mode" "<MODE>")])
  
! ;; Handle GET_MODE_INNER (mode) = DImode. We need to split them since
  ;; we need to deal with SEW = 64 in RV32 system.
  (define_expand "@pred_<sat_op><mode>_scalar"
    [(set (match_operand:V_VLSI_D 0 "register_operand")
--- 4734,4740 ----
    [(set_attr "type" "<sat_insn_type>")
     (set_attr "mode" "<MODE>")])
  
! ;; Handle GET_MODE_INNER (mode) = DImode.  We need to split them since
  ;; we need to deal with SEW = 64 in RV32 system.
  (define_expand "@pred_<sat_op><mode>_scalar"
    [(set (match_operand:V_VLSI_D 0 "register_operand")
***************
*** 5117,5123 ****
     (set_attr "mode" "<MODE>")
     (set_attr "spec_restriction" "none,thv,thv,none,none")])
  
! ;; Handle GET_MODE_INNER (mode) = DImode. We need to split them since
  ;; we need to deal with SEW = 64 in RV32 system.
  (define_expand "@pred_cmp<mode>_scalar"
    [(set (match_operand:<VM> 0 "register_operand")
--- 5119,5125 ----
     (set_attr "mode" "<MODE>")
     (set_attr "spec_restriction" "none,thv,thv,none,none")])
  
! ;; Handle GET_MODE_INNER (mode) = DImode.  We need to split them since
  ;; we need to deal with SEW = 64 in RV32 system.
  (define_expand "@pred_cmp<mode>_scalar"
    [(set (match_operand:<VM> 0 "register_operand")
***************
*** 6178,6185 ****
  ;; -------------------------------------------------------------------------------
  
  ;; We keep this pattern same as pred_mov so that we can gain more optimizations.
! ;; For example, if we have vmxor.mm v1,v1,v1. It will be optimized as vmclr.m which
! ;; is generated by pred_mov.
  (define_insn "@pred_<optab><mode>"
    [(set (match_operand:VB_VLS 0 "register_operand"                   "=vr")
  	(if_then_else:VB_VLS
--- 6180,6187 ----
  ;; -------------------------------------------------------------------------------
  
  ;; We keep this pattern same as pred_mov so that we can gain more optimizations.
! ;; For example, if we have vmxor.mm v1,v1,v1.  It will be optimized
! ;; as vmclr.m which is generated by pred_mov.
  (define_insn "@pred_<optab><mode>"
    [(set (match_operand:VB_VLS 0 "register_operand"                   "=vr")
  	(if_then_else:VB_VLS
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/xt-c908.md gcc-17-20260607/gcc/config/riscv/xt-c908.md
*** gcc-17-20260531/gcc/config/riscv/xt-c908.md	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/config/riscv/xt-c908.md	Sun Jun  7 22:32:06 2026
***************
*** 0 ****
--- 1,137 ----
+ ;; xt_c908 DFA-based pipeline description for RISC-V targets.
+ ;;
+ ;; Approximate scalar scheduler model for XuanTie C908.
+ ;;
+ ;; This is intentionally scalar-only.  Vector scheduling should be added
+ ;; separately for xt-c908v.
+ 
+ (define_automaton "xt_c908")
+ 
+ (define_cpu_unit "xt_c908_alu0,xt_c908_alu1" "xt_c908")
+ (define_cpu_unit "xt_c908_lsu0,xt_c908_lsu1" "xt_c908")
+ (define_cpu_unit "xt_c908_mpy" "xt_c908")
+ (define_cpu_unit "xt_c908_div" "xt_c908")
+ (define_cpu_unit "xt_c908_fpalu" "xt_c908")
+ (define_cpu_unit "xt_c908_fdivsqrt" "xt_c908")
+ 
+ 
+ (define_reservation "xt_c908_alu" "xt_c908_alu0 | xt_c908_alu1")
+ (define_reservation "xt_c908_lsu" "xt_c908_lsu0 | xt_c908_lsu1")
+ 
+ ;; ----------------------------------------------------
+ ;; Memory (load/store)
+ ;; ----------------------------------------------------
+ 
+ (define_insn_reservation "xt_c908_load" 3
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "load,fpload"))
+   "xt_c908_lsu")
+ 
+ (define_insn_reservation "xt_c908_store" 1
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "store,fpstore"))
+   "xt_c908_lsu")
+ 
+ ;; ----------------------------------------------------
+ ;; Integer
+ ;; ----------------------------------------------------
+ 
+ (define_insn_reservation "xt_c908_jump" 1
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "branch,jump,call,jalr,ret,trap,sfb_alu"))
+   "xt_c908_alu0")
+ 
+ (define_insn_reservation "xt_c908_idivsi" 7
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "idiv"))
+   "xt_c908_div*7")
+ 
+ (define_insn_reservation "xt_c908_imul" 4
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "imul"))
+   "xt_c908_mpy*2")
+ 
+ (define_insn_reservation "xt_c908_mtc_mfc" 3
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "mtc,mfc"))
+   "xt_c908_alu")
+ 
+ (define_insn_reservation "xt_c908_alu" 1
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "unknown,const,arith,shift,slt,multi,auipc,nop,logical,\
+ 			move,bitmanip,min,max,minu,maxu,clz,ctz,rotate,\
+ 			condmove,crypto,mvpair,zicond,cpop,clmul,atomic"))
+   "xt_c908_alu")
+ 
+ ;; ----------------------------------------------------
+ ;; Floating point
+ ;; ----------------------------------------------------
+ 
+ (define_insn_reservation "xt_c908_fcvt" 4
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "fcvt,fmove,fcvt_i2f,fcvt_f2i"))
+   "xt_c908_fpalu")
+ 
+ (define_insn_reservation "xt_c908_fcmp" 4
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "fcmp"))
+   "xt_c908_fpalu")
+ 
+ (define_insn_reservation "xt_c908_fadd" 3
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "fadd"))
+   "xt_c908_fpalu")
+ 
+ (define_insn_reservation "xt_c908_fmulH" 3
+   (and (eq_attr "tune" "xt_c908")
+        (and (eq_attr "type" "fmul")
+ 		(eq_attr "mode" "HF")))
+   "xt_c908_fpalu")
+ 
+ (define_insn_reservation "xt_c908_fmulSD" 4
+   (and (eq_attr "tune" "xt_c908")
+        (and (eq_attr "type" "fmul")
+ 		(ior (eq_attr "mode" "SF")
+ 			(eq_attr "mode" "DF"))))
+   "xt_c908_fpalu")
+ 
+ (define_insn_reservation "xt_c908_fmaddH" 4
+   (and (eq_attr "tune" "xt_c908")
+        (and (eq_attr "type" "fmadd")
+ 		(eq_attr "mode" "HF")))
+   "xt_c908_fpalu")
+ 
+ (define_insn_reservation "xt_c908_fmaddSD" 5
+   (and (eq_attr "tune" "xt_c908")
+        (and (eq_attr "type" "fmadd")
+ 		(ior (eq_attr "mode" "SF")
+ 			(eq_attr "mode" "DF"))))
+   "xt_c908_fpalu")
+ 
+ (define_insn_reservation "xt_c908_fdiv" 7
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "fdiv,fsqrt"))
+   "xt_c908_fdivsqrt*7")
+ 
+ (define_insn_reservation "xt_c908_dummy" 1
+   (and (eq_attr "tune" "xt_c908")
+        (eq_attr "type" "rdfrm,rdvl,rdvlenb,sf_vc,sf_vc_se,
+       sf_vfnrclip,sf_vqmacc,vaalu,vaesdf,vaesdm,vaesef,vaesem,
+       vaeskf1,vaeskf2,vaesz,vandn,vbrev,vbrev8,vclmul,vclmulh,
+       vclz,vcompress,vcpop,vctz,vector,vext,vfalu,vfclass,vfcmp,
+       vfcvtftoi,vfcvtitof,vfdiv,vfmerge,vfminmax,vfmov,vfmovfv,
+       vfmovvf,vfmul,vfmuladd,vfncvtbf16,vfncvtftof,vfncvtftoi,
+       vfncvtitof,vfrecp,vfredo,vfredu,vfsgnj,vfslide1down,
+       vfslide1up,vfsqrt,vfwalu,vfwcvtbf16,vfwcvtftof,
+       vfwcvtftoi,vfwcvtitof,vfwmaccbf16,vfwmul,vfwmuladd,
+       vfwredo,vfwredu,vgather,vghsh,vgmul,vialu,vicalu,vicmp,
+       vidiv,vimerge,viminmax,vimov,vimovvx,vimovxv,vimul,
+       vimuladd,vired,vislide1down,vislide1up,viwalu,viwmul,
+       viwmuladd,viwred,vlde,vldff,vldm,vldox,vldr,vlds,vldux,
+       vlsegde,vlsegdff,vlsegdox,vlsegds,vlsegdux,vmalu,vmffs,
+       vmidx,vmiota,vmov,vmpop,vmsfs,vnclip,vnshift,vrev8,vrol,
+       vror,vsalu,vsetvl,vsetvl_pre,vsha2ch,vsha2cl,vsha2ms,
+       vshift,vslidedown,vslideup,vsm3c,vsm3me,vsm4k,vsm4r,
+       vsmul,vssegte,vssegtox,vssegts,vssegtux,vsshift,vste,
+       vstm,vstox,vstr,vsts,vstux,vwsll,wrfrm,wrvxrm"))
+   "nothing")
diff -Nrcpad gcc-17-20260531/gcc/config/riscv/zicond.md gcc-17-20260607/gcc/config/riscv/zicond.md
*** gcc-17-20260531/gcc/config/riscv/zicond.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/riscv/zicond.md	Sun Jun  7 22:32:06 2026
***************
*** 126,132 ****
  })
  
  ;; In some cases gimple can give us a sequence with a logical and
! ;; of two sCC insns.  This can be implemented an sCC feeding a
  ;; conditional zero.
  ;;
  ;; AND is commutative, so every form has two variants
--- 126,132 ----
  })
  
  ;; In some cases gimple can give us a sequence with a logical and
! ;; of two sCC insns.  This can be implemented with an sCC feeding a
  ;; conditional zero.
  ;;
  ;; AND is commutative, so every form has two variants
***************
*** 224,230 ****
  				      (match_dup 5)))]
    { PUT_CODE (operands[1], GET_CODE (operands[1]) == EQ ? NE : EQ); })
  
! ;; We can splat the sign bit across a GPR with a arithmetic right shift
  ;; which gives us a 0, -1 result.  We then turn on bit #0 unconditionally
  ;; which results in 1, -1.  There's probably other cases that could be
  ;; handled, this seems particularly important though.
--- 224,230 ----
  				      (match_dup 5)))]
    { PUT_CODE (operands[1], GET_CODE (operands[1]) == EQ ? NE : EQ); })
  
! ;; We can splat the sign bit across a GPR with an arithmetic right shift
  ;; which gives us a 0, -1 result.  We then turn on bit #0 unconditionally
  ;; which results in 1, -1.  There's probably other cases that could be
  ;; handled, this seems particularly important though.
***************
*** 245,251 ****
  ;; Similarly, but the condition and true/false values are reversed
  ;;
  ;; Note the case where the condition is reversed, but not the true/false
! ;; values.  Or vice-versa is not handled because we don't support 4->3
  ;; splits.
  (define_split
    [(set (match_operand:X 0 "register_operand")
--- 245,251 ----
  ;; Similarly, but the condition and true/false values are reversed
  ;;
  ;; Note the case where the condition is reversed, but not the true/false
! ;; values.  Or vice versa is not handled because we don't support 4->3
  ;; splits.
  (define_split
    [(set (match_operand:X 0 "register_operand")
***************
*** 288,294 ****
  ;; in the two arms.
  
  ;; Simple rv32 or rv64 ops where we can zero either operand to make
! ;; it neutral.  Two as the the common and potentially neutral op in
  ;; the 2nd if-then-else can be swapped.
  (define_split
    [(set (match_operand:X 0 "register_operand")
--- 288,294 ----
  ;; in the two arms.
  
  ;; Simple rv32 or rv64 ops where we can zero either operand to make
! ;; it neutral.  Two as the common and potentially neutral op in
  ;; the 2nd if-then-else can be swapped.
  (define_split
    [(set (match_operand:X 0 "register_operand")
diff -Nrcpad gcc-17-20260531/gcc/config/rl78/rl78.cc gcc-17-20260607/gcc/config/rl78/rl78.cc
*** gcc-17-20260531/gcc/config/rl78/rl78.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rl78/rl78.cc	Sun Jun  7 22:32:06 2026
*************** post-reload optimizers could operate on
*** 2443,2449 ****
  tried that there were some issues building the target libraries.
  
  During devirtualization, a simple register move optimizer is run.  It
! would be better to run a full CSE/propogation pass on it though, but
  that has not yet been attempted.
  
   */
--- 2443,2449 ----
  tried that there were some issues building the target libraries.
  
  During devirtualization, a simple register move optimizer is run.  It
! would be better to run a full CSE/propagation pass on it though, but
  that has not yet been attempted.
  
   */
*************** rl78_alloc_physical_registers (void)
*** 3672,3678 ****
  {
    /* During most of the compile, gcc is dealing with virtual
       registers.  At this point, we need to assign physical registers
!      to the vitual ones, and copy in/out as needed.  */
  
    rtx_insn *insn, *curr;
    enum attr_valloc valloc_method;
--- 3672,3678 ----
  {
    /* During most of the compile, gcc is dealing with virtual
       registers.  At this point, we need to assign physical registers
!      to the virtual ones, and copy in/out as needed.  */
  
    rtx_insn *insn, *curr;
    enum attr_valloc valloc_method;
*************** set_origin (rtx pat, rtx_insn * insn, in
*** 4185,4191 ****
     C.  If B is a virtual register or memory, this is a big win on its
     own.  If B turns out to be unneeded after this, it's a bigger win.
     For each register, we try to determine where it's value originally
!    came from, if it's propogated purely through moves (and not
     computes).  The ORIGINS[] array has the regno for the "origin" of
     the value in the [regno] it's indexed by.  */
  static void
--- 4185,4191 ----
     C.  If B is a virtual register or memory, this is a big win on its
     own.  If B turns out to be unneeded after this, it's a bigger win.
     For each register, we try to determine where it's value originally
!    came from, if it's propagated purely through moves (and not
     computes).  The ORIGINS[] array has the regno for the "origin" of
     the value in the [regno] it's indexed by.  */
  static void
*************** rl78_remove_unused_sets (void)
*** 4303,4309 ****
      }
  }
  
! /* This is the top of the devritualization pass.  */
  static void
  rl78_reorg (void)
  {
--- 4303,4309 ----
      }
  }
  
! /* This is the top of the devirtualization pass.  */
  static void
  rl78_reorg (void)
  {
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/aix.h gcc-17-20260607/gcc/config/rs6000/aix.h
*** gcc-17-20260531/gcc/config/rs6000/aix.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/aix.h	Sun Jun  7 22:32:06 2026
***************
*** 97,103 ****
     and __GLOBAL_AIXD_{libname} and are exported from each shared library.
  
     collect2 will detect these symbols when they exist in shared libraries that
!    the current program is being linked against.  All such initiliser functions
     will be called prior to the constructors of the current program, and
     finaliser functions called after destructors.
  
--- 97,103 ----
     and __GLOBAL_AIXD_{libname} and are exported from each shared library.
  
     collect2 will detect these symbols when they exist in shared libraries that
!    the current program is being linked against.  All such initialiser functions
     will be called prior to the constructors of the current program, and
     finaliser functions called after destructors.
  
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/cell.md gcc-17-20260607/gcc/config/rs6000/cell.md
*** gcc-17-20260531/gcc/config/rs6000/cell.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/cell.md	Sun Jun  7 22:32:06 2026
***************
*** 44,50 ****
  ;; Dual issue exceptions:
  ;;(1) nop-pipelined FXU instr in slot 0 
  ;;(2) non-pipelined FPU inst in slot 0
! ;; CSI instr(contex-synchronizing insn)
  ;; Microcode insn
  
  ;; BRU unit: bru(none register stall), bru_cr(cr register stall)
--- 44,50 ----
  ;; Dual issue exceptions:
  ;;(1) nop-pipelined FXU instr in slot 0 
  ;;(2) non-pipelined FPU inst in slot 0
! ;; CSI instr(context-synchronizing insn)
  ;; Microcode insn
  
  ;; BRU unit: bru(none register stall), bru_cr(cr register stall)
***************
*** 304,310 ****
         (eq_attr "cpu" "cell"))
    "fxu_cell+slot01")
  
! ; Basic FP latency is 10 cycles, thoughput is 1/cycle
  (define_insn_reservation "cell-fp" 10
    (and (eq_attr "type" "fp,fpsimple,dmul")
         (eq_attr "cpu" "cell"))
--- 304,310 ----
         (eq_attr "cpu" "cell"))
    "fxu_cell+slot01")
  
! ; Basic FP latency is 10 cycles, throughput is 1/cycle
  (define_insn_reservation "cell-fp" 10
    (and (eq_attr "type" "fp,fpsimple,dmul")
         (eq_attr "cpu" "cell"))
***************
*** 315,327 ****
         (eq_attr "cpu" "cell"))
    "vsu1_cell+slot01")
  
! ;; sdiv thoughput 1/74, not pipelined but only in the FPU
  (define_insn_reservation "cell-sdiv" 74
    (and (eq_attr "type" "sdiv,ddiv")
         (eq_attr "cpu" "cell"))
    "slot1,nonpipeline,nonpipeline*72")
  
! ;; fsqrt thoughput 1/84, not pipelined but only in the FPU
  (define_insn_reservation "cell-sqrt" 84
    (and (eq_attr "type" "ssqrt,dsqrt")
         (eq_attr "cpu" "cell"))
--- 315,327 ----
         (eq_attr "cpu" "cell"))
    "vsu1_cell+slot01")
  
! ;; sdiv throughput 1/74, not pipelined but only in the FPU
  (define_insn_reservation "cell-sdiv" 74
    (and (eq_attr "type" "sdiv,ddiv")
         (eq_attr "cpu" "cell"))
    "slot1,nonpipeline,nonpipeline*72")
  
! ;; fsqrt throughput 1/84, not pipelined but only in the FPU
  (define_insn_reservation "cell-sqrt" 84
    (and (eq_attr "type" "ssqrt,dsqrt")
         (eq_attr "cpu" "cell"))
***************
*** 410,416 ****
  ;; the target of VSU estimate should not be reused within 10 dispatch groups
  ;; the target of VSU float should not be reused within 8 dispatch groups
  ;; the target of VSU complex should not be reused within 5 dispatch groups
! ;; FP LOAD should not reuse an FPU Arithmetic target with 6 dispatch gropus
  
  ;; mtctr-bcctr/bcctrl, branch target ctr register shadow update at
  ;;  ex4 stage(10 cycles)
--- 410,416 ----
  ;; the target of VSU estimate should not be reused within 10 dispatch groups
  ;; the target of VSU float should not be reused within 8 dispatch groups
  ;; the target of VSU complex should not be reused within 5 dispatch groups
! ;; FP LOAD should not reuse an FPU Arithmetic target with 6 dispatch groups
  
  ;; mtctr-bcctr/bcctrl, branch target ctr register shadow update at
  ;;  ex4 stage(10 cycles)
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/darwin.h gcc-17-20260607/gcc/config/rs6000/darwin.h
*** gcc-17-20260531/gcc/config/rs6000/darwin.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/darwin.h	Sun Jun  7 22:32:06 2026
***************
*** 99,105 ****
     since the functions are actually in libSystem but for 7.x compatibility
     we want them to be looked for in libmx first.
     Include libSystemStubs when compiling against 10.3 - 10.6 SDKs (we assume
!    this is the case when targetting these) - but not for 64-bit long double.
     Don't do either for m64, the library is either a dummy or non-existent.
  */
  
--- 99,105 ----
     since the functions are actually in libSystem but for 7.x compatibility
     we want them to be looked for in libmx first.
     Include libSystemStubs when compiling against 10.3 - 10.6 SDKs (we assume
!    this is the case when targeting these) - but not for 64-bit long double.
     Don't do either for m64, the library is either a dummy or non-existent.
  */
  
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/mmintrin.h gcc-17-20260607/gcc/config/rs6000/mmintrin.h
*** gcc-17-20260531/gcc/config/rs6000/mmintrin.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/mmintrin.h	Sun Jun  7 22:32:06 2026
***************
*** 47,53 ****
  
     Most MMX intrinsic operations can be performed efficiently as
     C language 64-bit scalar operation or optimized to use the newer
!    128-bit SSE/Altivec operations.  We recomend this for new
     applications.  */
  #error "Please read comment above.  Use -DNO_WARN_X86_INTRINSICS to disable this error."
  #endif
--- 47,53 ----
  
     Most MMX intrinsic operations can be performed efficiently as
     C language 64-bit scalar operation or optimized to use the newer
!    128-bit SSE/Altivec operations.  We recommend this for new
     applications.  */
  #error "Please read comment above.  Use -DNO_WARN_X86_INTRINSICS to disable this error."
  #endif
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000-builtin.cc gcc-17-20260607/gcc/config/rs6000/rs6000-builtin.cc
*** gcc-17-20260531/gcc/config/rs6000/rs6000-builtin.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000-builtin.cc	Sun Jun  7 22:32:06 2026
*************** rs6000_init_builtins (void)
*** 761,766 ****
--- 761,781 ----
    else
      ieee128_float_type_node = NULL_TREE;
  
+   /* PTImode to get even/odd register pairs.  */
+   if (TARGET_POWERPC64)
+     {
+       intPTI_type_internal_node = make_signed_type (GET_MODE_BITSIZE (PTImode));
+       SET_TYPE_MODE (intPTI_type_internal_node, PTImode);
+       t = build_qualified_type (intPTI_type_internal_node, TYPE_QUAL_CONST);
+       lang_hooks.types.register_builtin_type (intPTI_type_internal_node,
+ 					      "__pti_internal");
+ 
+       uintPTI_type_internal_node = make_unsigned_type (GET_MODE_BITSIZE (PTImode));
+       SET_TYPE_MODE (uintPTI_type_internal_node, PTImode);
+       t = build_qualified_type (uintPTI_type_internal_node, TYPE_QUAL_CONST);
+       lang_hooks.types.register_builtin_type (uintPTI_type_internal_node,
+ 					      "__upti_internal");
+     }
    /* Vector pair and vector quad support.  */
    vector_pair_type_node = make_node (OPAQUE_TYPE);
    SET_TYPE_MODE (vector_pair_type_node, OOmode);
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000-call.cc gcc-17-20260607/gcc/config/rs6000/rs6000-call.cc
*** gcc-17-20260531/gcc/config/rs6000/rs6000-call.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000-call.cc	Sun Jun  7 22:32:06 2026
*************** rs6000_gimplify_va_arg (tree valist, tre
*** 2572,2578 ****
       std_gimplify_va_arg_expr that carries out the align adjust, for the case
       of relevance.
       We don't need to check for pass-by-reference because of the test above.
!      We can return a simplifed answer, since we know there's no offset to add.  */
  
    if (((TARGET_MACHO
          && rs6000_darwin64_abi)
--- 2572,2579 ----
       std_gimplify_va_arg_expr that carries out the align adjust, for the case
       of relevance.
       We don't need to check for pass-by-reference because of the test above.
!      We can return a simplified answer, since we know there's no offset to
!      add.  */
  
    if (((TARGET_MACHO
          && rs6000_darwin64_abi)
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000-internal.h gcc-17-20260607/gcc/config/rs6000/rs6000-internal.h
*** gcc-17-20260531/gcc/config/rs6000/rs6000-internal.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000-internal.h	Sun Jun  7 22:32:06 2026
***************
*** 1,5 ****
  /* Internal to rs6000 type, variable, and function declarations and
!    definitons shared between the various rs6000 source files.
     Copyright (C) 1991-2026 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
--- 1,5 ----
  /* Internal to rs6000 type, variable, and function declarations and
!    definitions shared between the various rs6000 source files.
     Copyright (C) 1991-2026 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000-logue.cc gcc-17-20260607/gcc/config/rs6000/rs6000-logue.cc
*** gcc-17-20260531/gcc/config/rs6000/rs6000-logue.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000-logue.cc	Sun Jun  7 22:32:06 2026
*************** is_altivec_return_reg (rtx reg, void *xy
*** 282,288 ****
  }
  
  
! /* Return whether REG is a global user reg or has been specifed by
     -ffixed-REG.  We should not restore these, and so cannot use
     lmw or out-of-line restore functions if there are any.  We also
     can't save them (well, emit frame notes for them), because frame
--- 282,288 ----
  }
  
  
! /* Return whether REG is a global user reg or has been specified by
     -ffixed-REG.  We should not restore these, and so cannot use
     lmw or out-of-line restore functions if there are any.  We also
     can't save them (well, emit frame notes for them), because frame
*************** rs6000_output_function_prologue (FILE *f
*** 4069,4075 ****
        asm_fprintf (file, "\tmflr %s\n", reg_names[0]);
  
        /* In the ELFv2 ABI we have no compiler stack word.  It must be
! 	 the resposibility of _mcount to preserve the static chain
  	 register if required.  */
        if (DEFAULT_ABI != ABI_ELFv2
  	  && cfun->static_chain_decl != NULL)
--- 4069,4075 ----
        asm_fprintf (file, "\tmflr %s\n", reg_names[0]);
  
        /* In the ELFv2 ABI we have no compiler stack word.  It must be
! 	 the responsibility of _mcount to preserve the static chain
  	 register if required.  */
        if (DEFAULT_ABI != ABI_ELFv2
  	  && cfun->static_chain_decl != NULL)
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000-p8swap.cc gcc-17-20260607/gcc/config/rs6000/rs6000-p8swap.cc
*** gcc-17-20260531/gcc/config/rs6000/rs6000-p8swap.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000-p8swap.cc	Sun Jun  7 22:32:06 2026
*************** quad_aligned_store_p (swap_web_entry *in
*** 456,462 ****
        if (!rtx_equal_p (DF_REF_REG (use), swap_reg))
  	continue;
  
!       /* If there is no def or the def is artifical or there are
  	 multiple defs, punt.  */
        if (!def_link || !def_link->ref || DF_REF_IS_ARTIFICIAL (def_link->ref)
  	  || def_link->next)
--- 456,462 ----
        if (!rtx_equal_p (DF_REF_REG (use), swap_reg))
  	continue;
  
!       /* If there is no def or the def is artificial or there are
  	 multiple defs, punt.  */
        if (!def_link || !def_link->ref || DF_REF_IS_ARTIFICIAL (def_link->ref)
  	  || def_link->next)
*************** const_load_sequence_p (swap_web_entry *i
*** 533,539 ****
    df_ref use;
  
    /* Iterate over the definitions that are used by this insn.  Since
!      this is known to be a swap insn, expect only one used definnition.  */
    FOR_EACH_INSN_INFO_USE (use, insn_info)
      {
        struct df_link *def_link = DF_REF_CHAIN (use);
--- 533,539 ----
    df_ref use;
  
    /* Iterate over the definitions that are used by this insn.  Since
!      this is known to be a swap insn, expect only one used definition.  */
    FOR_EACH_INSN_INFO_USE (use, insn_info)
      {
        struct df_link *def_link = DF_REF_CHAIN (use);
*************** replace_swapped_aligned_store (swap_web_
*** 1652,1658 ****
        if (!rtx_equal_p (DF_REF_REG (use), swap_reg))
  	continue;
  
!       /* If there is no def or the def is artifical or there are
  	 multiple defs, we should not be here.  */
        gcc_assert (def_link && def_link->ref && !def_link->next
  		  && !DF_REF_IS_ARTIFICIAL (def_link->ref));
--- 1652,1658 ----
        if (!rtx_equal_p (DF_REF_REG (use), swap_reg))
  	continue;
  
!       /* If there is no def or the def is artificial or there are
  	 multiple defs, we should not be here.  */
        gcc_assert (def_link && def_link->ref && !def_link->next
  		  && !DF_REF_IS_ARTIFICIAL (def_link->ref));
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000-passes.def gcc-17-20260607/gcc/config/rs6000/rs6000-passes.def
*** gcc-17-20260531/gcc/config/rs6000/rs6000-passes.def	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000-passes.def	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 25,31 ****
   */
  
    /* Pass to add the appropriate vector swaps on power8 little endian systems.
!      The power8 does not have instructions that automaticaly do the byte swaps
       for loads and stores.  */
    INSERT_PASS_BEFORE (pass_cse, 1, pass_analyze_swaps);
  
--- 25,31 ----
   */
  
    /* Pass to add the appropriate vector swaps on power8 little endian systems.
!      The power8 does not have instructions that automatically do the byte swaps
       for loads and stores.  */
    INSERT_PASS_BEFORE (pass_cse, 1, pass_analyze_swaps);
  
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000-string.cc gcc-17-20260607/gcc/config/rs6000/rs6000-string.cc
*** gcc-17-20260531/gcc/config/rs6000/rs6000-string.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000-string.cc	Sun Jun  7 22:32:06 2026
*************** expand_cmp_vec_sequence (unsigned HOST_W
*** 758,764 ****
  	{
  	  /* Branch to cleanup code, otherwise fall through to do more
  	     compares.  P8 and P9 use different CR bits because on P8
! 	     we are looking at the result of a comparsion vs a
  	     register of zeroes so the all-true condition means no
  	     difference or zero was found.  On P9, vcmpnezb sets a byte
  	     to 0xff if there is a mismatch or zero, so the all-false
--- 758,764 ----
  	{
  	  /* Branch to cleanup code, otherwise fall through to do more
  	     compares.  P8 and P9 use different CR bits because on P8
! 	     we are looking at the result of a comparison vs a
  	     register of zeroes so the all-true condition means no
  	     difference or zero was found.  On P9, vcmpnezb sets a byte
  	     to 0xff if there is a mismatch or zero, so the all-false
*************** expand_compare_loop (rtx operands[])
*** 1405,1411 ****
  	  /* Alignment is larger than word_mode so we do not need to be
  	     concerned with extra page crossings.  But, we do not know
  	     that the length is larger than load_mode_size so we might
! 	     end up compareing against data before the block if we try
  	     an overlapping compare.  Also we use this on P7 for fixed length
  	     remainder because P7 doesn't like overlapping unaligned.
  	     Strategy: load 8B, shift off bytes past length, and compare.  */
--- 1405,1411 ----
  	  /* Alignment is larger than word_mode so we do not need to be
  	     concerned with extra page crossings.  But, we do not know
  	     that the length is larger than load_mode_size so we might
! 	     end up comparing against data before the block if we try
  	     an overlapping compare.  Also we use this on P7 for fixed length
  	     remainder because P7 doesn't like overlapping unaligned.
  	     Strategy: load 8B, shift off bytes past length, and compare.  */
*************** expand_compare_loop (rtx operands[])
*** 1430,1436 ****
  	  rtx nonconst_overlap = gen_label_rtx ();
  	  emit_label (nonconst_overlap);
  
! 	  /* Here we have to handle the case where whe have runtime
  	     length which may be too short for overlap compare, and
  	     alignment is not at least load_mode_size so we have to
  	     tread carefully to avoid stepping across 4k boundaries.  */
--- 1430,1436 ----
  	  rtx nonconst_overlap = gen_label_rtx ();
  	  emit_label (nonconst_overlap);
  
! 	  /* Here we have to handle the case where we have runtime
  	     length which may be too short for overlap compare, and
  	     alignment is not at least load_mode_size so we have to
  	     tread carefully to avoid stepping across 4k boundaries.  */
*************** expand_compare_loop (rtx operands[])
*** 1438,1444 ****
  	  /* If the length after the loop was larger than word_mode
  	     size, we can just do an overlapping compare and we're
  	     done.  We fall through to this code from the word_mode
! 	     compare that preceeds this.  */
  	  do_overlap_load_compare (load_mode, false, 0, diff,
  				   cmp_rem, dcond, src1_addr, src2_addr,
  				   orig_src1, orig_src2);
--- 1438,1444 ----
  	  /* If the length after the loop was larger than word_mode
  	     size, we can just do an overlapping compare and we're
  	     done.  We fall through to this code from the word_mode
! 	     compare that precedes this.  */
  	  do_overlap_load_compare (load_mode, false, 0, diff,
  				   cmp_rem, dcond, src1_addr, src2_addr,
  				   orig_src1, orig_src2);
*************** expand_compare_loop (rtx operands[])
*** 1632,1638 ****
     produce the final result from memcmp.
  
     TARGET is the rtx for the register to receive the memcmp result.
!    SUB_RESULT is the rtx for the register contining the subtract result.  */
  
  void
  generate_6432_conversion(rtx target, rtx sub_result)
--- 1632,1638 ----
     produce the final result from memcmp.
  
     TARGET is the rtx for the register to receive the memcmp result.
!    SUB_RESULT is the rtx for the register containing the subtract result.  */
  
  void
  generate_6432_conversion(rtx target, rtx sub_result)
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000.cc gcc-17-20260607/gcc/config/rs6000/rs6000.cc
*** gcc-17-20260531/gcc/config/rs6000/rs6000.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000.cc	Sun Jun  7 22:32:06 2026
*************** int rs6000_vector_align[NUM_MACHINE_MODE
*** 191,197 ****
     reciprocal sqrt (frsqrte) for.  */
  unsigned char rs6000_recip_bits[MAX_MACHINE_MODE];
  
! /* Masks to determine which reciprocal esitmate instructions to generate
     automatically.  */
  enum rs6000_recip_mask {
    RECIP_SF_DIV		= 0x001,	/* Use divide estimate */
--- 191,197 ----
     reciprocal sqrt (frsqrte) for.  */
  unsigned char rs6000_recip_bits[MAX_MACHINE_MODE];
  
! /* Masks to determine which reciprocal estimate instructions to generate
     automatically.  */
  enum rs6000_recip_mask {
    RECIP_SF_DIV		= 0x001,	/* Use divide estimate */
*************** bool cpu_builtin_p = false;
*** 279,285 ****
     don't link in rs6000-c.cc, so we can't call it directly.  */
  void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT);
  
! /* Simplfy register classes into simpler classifications.  We assume
     GPR_REG_TYPE - FPR_REG_TYPE are ordered so that we can use a simple range
     check for standard register classes (gpr/floating/altivec/vsx) and
     floating/vector classes (float/altivec/vsx).  */
--- 279,285 ----
     don't link in rs6000-c.cc, so we can't call it directly.  */
  void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT);
  
! /* Simplify register classes into simpler classifications.  We assume
     GPR_REG_TYPE - FPR_REG_TYPE are ordered so that we can use a simple range
     check for standard register classes (gpr/floating/altivec/vsx) and
     floating/vector classes (float/altivec/vsx).  */
*************** static const struct reload_reg_map_type
*** 338,344 ****
  
  /* Mask bits for each register class, indexed per mode.  Historically the
     compiler has been more restrictive which types can do PRE_MODIFY instead of
!    PRE_INC and PRE_DEC, so keep track of sepaate bits for these two.  */
  typedef unsigned char addr_mask_type;
  
  #define RELOAD_REG_VALID	0x01	/* Mode valid in register..  */
--- 338,344 ----
  
  /* Mask bits for each register class, indexed per mode.  Historically the
     compiler has been more restrictive which types can do PRE_MODIFY instead of
!    PRE_INC and PRE_DEC, so keep track of separate bits for these two.  */
  typedef unsigned char addr_mask_type;
  
  #define RELOAD_REG_VALID	0x01	/* Mode valid in register..  */
*************** rs6000_debug_addr_mask (addr_mask_type m
*** 2173,2179 ****
    return ret;
  }
  
! /* Print the address masks in a human readble fashion.  */
  DEBUG_FUNCTION void
  rs6000_debug_print_mode (ssize_t m)
  {
--- 2173,2179 ----
    return ret;
  }
  
! /* Print the address masks in a human readable fashion.  */
  DEBUG_FUNCTION void
  rs6000_debug_print_mode (ssize_t m)
  {
*************** rs6000_setup_reg_addr_masks (void)
*** 2711,2717 ****
  			  || (rc == RELOAD_REG_VMX && TARGET_P9_VECTOR)))))
  	    addr_mask |= RELOAD_REG_OFFSET;
  
! 	  /* VSX registers can do REG+OFFSET addresssing if ISA 3.0
  	     instructions are enabled.  The offset for 128-bit VSX registers is
  	     only 12-bits.  While GPRs can handle the full offset range, VSX
  	     registers can only handle the restricted range.  */
--- 2711,2717 ----
  			  || (rc == RELOAD_REG_VMX && TARGET_P9_VECTOR)))))
  	    addr_mask |= RELOAD_REG_OFFSET;
  
! 	  /* VSX registers can do REG+OFFSET addressing if ISA 3.0
  	     instructions are enabled.  The offset for 128-bit VSX registers is
  	     only 12-bits.  While GPRs can handle the full offset range, VSX
  	     registers can only handle the restricted range.  */
*************** darwin_rs6000_override_options (void)
*** 3343,3349 ****
  
    /* The linkers [ld64] that support 64Bit do not need the JBSR longcall
       optimisation, and will not work with the most generic case (where the
!      symbol is undefined external, but there is no symbl stub).  */
    if (TARGET_64BIT)
      rs6000_default_long_calls = 0;
  
--- 3343,3349 ----
  
    /* The linkers [ld64] that support 64Bit do not need the JBSR longcall
       optimisation, and will not work with the most generic case (where the
!      symbol is undefined external, but there is no symbol stub).  */
    if (TARGET_64BIT)
      rs6000_default_long_calls = 0;
  
*************** rs6000_option_override_internal (bool gl
*** 3997,4003 ****
      }
  
    /* Assume if the user asked for normal quad memory instructions, they want
!      the atomic versions as well, unless they explicity told us not to use quad
       word atomic instructions.  */
    if (TARGET_QUAD_MEMORY
        && !TARGET_QUAD_MEMORY_ATOMIC
--- 3997,4003 ----
      }
  
    /* Assume if the user asked for normal quad memory instructions, they want
!      the atomic versions as well, unless they explicitly told us not to use quad
       word atomic instructions.  */
    if (TARGET_QUAD_MEMORY
        && !TARGET_QUAD_MEMORY_ATOMIC
*************** rs6000_option_override_internal (bool gl
*** 4152,4158 ****
      }
  
    /* Enable the default support for IEEE 128-bit floating point on Linux VSX
!      sytems.  In GCC 7, we would enable the IEEE 128-bit floating point
       infrastructure (-mfloat128-type) but not enable the actual __float128 type
       unless the user used the explicit -mfloat128.  In GCC 8, we enable both
       the keyword as well as the type.  */
--- 4152,4158 ----
      }
  
    /* Enable the default support for IEEE 128-bit floating point on Linux VSX
!      systems.  In GCC 7, we would enable the IEEE 128-bit floating point
       infrastructure (-mfloat128-type) but not enable the actual __float128 type
       unless the user used the explicit -mfloat128.  In GCC 8, we enable both
       the keyword as well as the type.  */
*************** rs6000_cost_data::determine_suggested_un
*** 5528,5534 ****
      {
        unsigned int epil_niter_unr = est_niter % unrolled_vf;
        unsigned int epil_niter = est_niter % vf;
!       /* Even if we have partial vector support, it can be still inefficent
  	 to calculate the length when the iteration count is unknown, so
  	 only expect it's good to unroll when the epilogue iteration count
  	 is not bigger than VF (only one time length calculation).  */
--- 5528,5534 ----
      {
        unsigned int epil_niter_unr = est_niter % unrolled_vf;
        unsigned int epil_niter = est_niter % vf;
!       /* Even if we have partial vector support, it can be still inefficient
  	 to calculate the length when the iteration count is unknown, so
  	 only expect it's good to unroll when the epilogue iteration count
  	 is not bigger than VF (only one time length calculation).  */
*************** rs6000_init_stack_protect_guard (void)
*** 9828,9834 ****
  static bool
  rs6000_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
  {
!   /* If GET_CODE (x) is HIGH, the 'X' represets the high part of a symbol_ref.
       It can not be put into a constant pool.  e.g.
       (high:DI (unspec:DI [(symbol_ref/u:DI ("*.LC0")..)
       (high:DI (symbol_ref:DI ("var")..)).  */
--- 9828,9834 ----
  static bool
  rs6000_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
  {
!   /* If GET_CODE (x) is HIGH, the 'X' represents the high part of a symbol_ref.
       It can not be put into a constant pool.  e.g.
       (high:DI (unspec:DI [(symbol_ref/u:DI ("*.LC0")..)
       (high:DI (symbol_ref:DI ("var")..)).  */
*************** rs6000_emit_le_vsx_move (rtx dest, rtx s
*** 10872,10878 ****
  }
  
  /* Return whether a SFmode or SImode move can be done without converting one
!    mode to another.  This arrises when we have:
  
  	(SUBREG:SF (REG:SI ...))
  	(SUBREG:SI (REG:SF ...))
--- 10872,10878 ----
  }
  
  /* Return whether a SFmode or SImode move can be done without converting one
!    mode to another.  This arises when we have:
  
  	(SUBREG:SF (REG:SI ...))
  	(SUBREG:SI (REG:SF ...))
*************** rs6000_secondary_reload_memory (rtx addr
*** 12627,12633 ****
  }
  
  /* Helper function for rs6000_secondary_reload to return true if a move to a
!    different register classe is really a simple move.  */
  
  static bool
  rs6000_secondary_reload_simple_move (enum rs6000_reg_type to_type,
--- 12627,12633 ----
  }
  
  /* Helper function for rs6000_secondary_reload to return true if a move to a
!    different register class is really a simple move.  */
  
  static bool
  rs6000_secondary_reload_simple_move (enum rs6000_reg_type to_type,
*************** rs6000_reverse_condition (machine_mode m
*** 15293,15299 ****
      return reverse_condition (code);
  }
  
! /* Check if C (as 64bit integer) can be rotated to a constant which constains
     nonzero bits at the LOWBITS low bits only.
  
     Return true if C can be rotated to such constant.  If so, *ROT is written
--- 15293,15299 ----
      return reverse_condition (code);
  }
  
! /* Check if C (as 64bit integer) can be rotated to a constant which contains
     nonzero bits at the LOWBITS low bits only.
  
     Return true if C can be rotated to such constant.  If so, *ROT is written
*************** rs6000_expand_float128_convert (rtx dest
*** 15629,15635 ****
      rtx_2func_t to_di_sign;
      rtx_2func_t to_di_uns;
    } hw_conversions[2] = {
!     /* convertions to/from KFmode */
      {
        gen_extenddfkf2_hw,		/* KFmode <- DFmode.  */
        gen_extendsfkf2_hw,		/* KFmode <- SFmode.  */
--- 15629,15635 ----
      rtx_2func_t to_di_sign;
      rtx_2func_t to_di_uns;
    } hw_conversions[2] = {
!     /* conversions to/from KFmode */
      {
        gen_extenddfkf2_hw,		/* KFmode <- DFmode.  */
        gen_extendsfkf2_hw,		/* KFmode <- SFmode.  */
*************** rs6000_expand_float128_convert (rtx dest
*** 15645,15651 ****
        gen_fixuns_kfdi2_hw,		/* DImode <- KFmode (unsigned).  */
      },
  
!     /* convertions to/from TFmode */
      {
        gen_extenddftf2_hw,		/* TFmode <- DFmode.  */
        gen_extendsftf2_hw,		/* TFmode <- SFmode.  */
--- 15645,15651 ----
        gen_fixuns_kfdi2_hw,		/* DImode <- KFmode (unsigned).  */
      },
  
!     /* conversions to/from TFmode */
      {
        gen_extenddftf2_hw,		/* TFmode <- DFmode.  */
        gen_extendsftf2_hw,		/* TFmode <- SFmode.  */
*************** rs6000_adjust_atomic_subword (rtx orig_m
*** 16919,16925 ****
  }
  
  /* A subroutine of the various atomic expanders.  For sub-word operands,
!    combine OLDVAL and NEWVAL via MASK.  Returns a new pseduo.  */
  
  static rtx
  rs6000_mask_atomic_subword (rtx oldval, rtx newval, rtx mask)
--- 16919,16925 ----
  }
  
  /* A subroutine of the various atomic expanders.  For sub-word operands,
!    combine OLDVAL and NEWVAL via MASK.  Returns a new pseudo.  */
  
  static rtx
  rs6000_mask_atomic_subword (rtx oldval, rtx newval, rtx mask)
*************** rs6000_expand_atomic_op (enum rtx_code c
*** 17251,17257 ****
    if (shift)
      {
        /* QImode/HImode on machines without lbarx/lharx where we do a lwarx and
! 	 then do the calcuations in a SImode register.  */
        if (orig_before)
  	rs6000_finish_atomic_subword (orig_before, before, shift);
        if (orig_after)
--- 17251,17257 ----
    if (shift)
      {
        /* QImode/HImode on machines without lbarx/lharx where we do a lwarx and
! 	 then do the calculations in a SImode register.  */
        if (orig_before)
  	rs6000_finish_atomic_subword (orig_before, before, shift);
        if (orig_after)
*************** rs6000_expand_atomic_op (enum rtx_code c
*** 17260,17266 ****
    else if (store_mode != mode)
      {
        /* QImode/HImode on machines with lbarx/lharx where we do the native
! 	 operation and then do the calcuations in a SImode register.  */
        if (orig_before)
  	convert_move (orig_before, before, 1);
        if (orig_after)
--- 17260,17266 ----
    else if (store_mode != mode)
      {
        /* QImode/HImode on machines with lbarx/lharx where we do the native
! 	 operation and then do the calculations in a SImode register.  */
        if (orig_before)
  	convert_move (orig_before, before, 1);
        if (orig_after)
*************** rs6000_xcoff_declare_object_name (FILE *
*** 22085,22091 ****
  							       &data, true);
  }
  
! /* Overide the default 'SYMBOL-.' syntax with AIX compatible 'SYMBOL-$'. */
  
  void
  rs6000_asm_output_dwarf_pcrel (FILE *file, int size, const char *label)
--- 22085,22091 ----
  							       &data, true);
  }
  
! /* Override the default 'SYMBOL-.' syntax with AIX compatible 'SYMBOL-$'. */
  
  void
  rs6000_asm_output_dwarf_pcrel (FILE *file, int size, const char *label)
*************** output_pcrel_opt_reloc (rtx label_num)
*** 27000,27009 ****
     In the PowerPC, we use this to adjust the length of an instruction if one or
     more prefixed instructions are generated, using the attribute
     num_prefixed_insns.  A prefixed instruction is 8 bytes instead of 4, but the
!    hardware requires that a prefied instruciton does not cross a 64-byte
     boundary.  This means the compiler has to assume the length of the first
     prefixed instruction is 12 bytes instead of 8 bytes.  Since the length is
!    already set for the non-prefixed instruction, we just need to udpate for the
     difference.  */
  
  int
--- 27000,27009 ----
     In the PowerPC, we use this to adjust the length of an instruction if one or
     more prefixed instructions are generated, using the attribute
     num_prefixed_insns.  A prefixed instruction is 8 bytes instead of 4, but the
!    hardware requires that a prefied instruction does not cross a 64-byte
     boundary.  This means the compiler has to assume the length of the first
     prefixed instruction is 12 bytes instead of 8 bytes.  Since the length is
!    already set for the non-prefixed instruction, we just need to update for the
     difference.  */
  
  int
*************** rs6000_set_up_by_prologue (struct hard_r
*** 27123,27129 ****
  
  
  /* Helper function for rs6000_split_logical to emit a logical instruction after
!    spliting the operation to single GPR registers.
  
     DEST is the destination register.
     OP1 and OP2 are the input source registers.
--- 27123,27129 ----
  
  
  /* Helper function for rs6000_split_logical to emit a logical instruction after
!    splitting the operation to single GPR registers.
  
     DEST is the destination register.
     OP1 and OP2 are the input source registers.
*************** rs6000_split_logical_inner (rtx dest,
*** 27171,27177 ****
  	}
  
        /* Optimize IOR/XOR of 0 to be a simple move.  Split large operations
! 	 into separate ORI/ORIS or XORI/XORIS instrucitons.  */
        else if (code == IOR || code == XOR)
  	{
  	  if (value == 0)
--- 27171,27177 ----
  	}
  
        /* Optimize IOR/XOR of 0 to be a simple move.  Split large operations
! 	 into separate ORI/ORIS or XORI/XORIS instructions.  */
        else if (code == IOR || code == XOR)
  	{
  	  if (value == 0)
*************** rs6000_split_multireg_move (rtx dst, rtx
*** 27430,27436 ****
    /* TDmode residing in FP registers is special, since the ISA requires that
       the lower-numbered word of a register pair is always the most significant
       word, even in little-endian mode.  This does not match the usual subreg
!      semantics, so we cannnot use simplify_gen_subreg in those cases.  Access
       the appropriate constituent registers "by hand" in little-endian mode.
  
       Note we do not need to check for destructive overlap here since TDmode
--- 27430,27436 ----
    /* TDmode residing in FP registers is special, since the ISA requires that
       the lower-numbered word of a register pair is always the most significant
       word, even in little-endian mode.  This does not match the usual subreg
!      semantics, so we cannot use simplify_gen_subreg in those cases.  Access
       the appropriate constituent registers "by hand" in little-endian mode.
  
       Note we do not need to check for destructive overlap here since TDmode
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000.h gcc-17-20260607/gcc/config/rs6000/rs6000.h
*** gcc-17-20260531/gcc/config/rs6000/rs6000.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000.h	Sun Jun  7 22:32:06 2026
*************** extern scalar_int_mode rs6000_pmode;
*** 1778,1787 ****
     In the PowerPC, we use this to adjust the length of an instruction if one or
     more prefixed instructions are generated, using the attribute
     num_prefixed_insns.  A prefixed instruction is 8 bytes instead of 4, but the
!    hardware requires that a prefied instruciton does not cross a 64-byte
     boundary.  This means the compiler has to assume the length of the first
     prefixed instruction is 12 bytes instead of 8 bytes.  Since the length is
!    already set for the non-prefixed instruction, we just need to udpate for the
     difference.  */
  
  #define ADJUST_INSN_LENGTH(INSN,LENGTH)					\
--- 1778,1787 ----
     In the PowerPC, we use this to adjust the length of an instruction if one or
     more prefixed instructions are generated, using the attribute
     num_prefixed_insns.  A prefixed instruction is 8 bytes instead of 4, but the
!    hardware requires that a prefied instruction does not cross a 64-byte
     boundary.  This means the compiler has to assume the length of the first
     prefixed instruction is 12 bytes instead of 8 bytes.  Since the length is
!    already set for the non-prefixed instruction, we just need to update for the
     difference.  */
  
  #define ADJUST_INSN_LENGTH(INSN,LENGTH)					\
*************** enum rs6000_builtin_type_index
*** 2290,2295 ****
--- 2290,2297 ----
    RS6000_BTI_ptr_vector_quad,
    RS6000_BTI_ptr_long_long,
    RS6000_BTI_ptr_long_long_unsigned,
+   RS6000_BTI_INTPTI,
+   RS6000_BTI_UINTPTI,
    RS6000_BTI_MAX
  };
  
*************** enum rs6000_builtin_type_index
*** 2334,2339 ****
--- 2336,2343 ----
  #define uintDI_type_internal_node	 (rs6000_builtin_types[RS6000_BTI_UINTDI])
  #define intTI_type_internal_node	 (rs6000_builtin_types[RS6000_BTI_INTTI])
  #define uintTI_type_internal_node	 (rs6000_builtin_types[RS6000_BTI_UINTTI])
+ #define intPTI_type_internal_node	 (rs6000_builtin_types[RS6000_BTI_INTPTI])
+ #define uintPTI_type_internal_node	 (rs6000_builtin_types[RS6000_BTI_UINTPTI])
  #define float_type_internal_node	 (rs6000_builtin_types[RS6000_BTI_float])
  #define double_type_internal_node	 (rs6000_builtin_types[RS6000_BTI_double])
  #define long_double_type_internal_node	 (rs6000_builtin_types[RS6000_BTI_long_double])
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/rs6000.md gcc-17-20260607/gcc/config/rs6000/rs6000.md
*** gcc-17-20260531/gcc/config/rs6000/rs6000.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/rs6000.md	Sun Jun  7 22:32:06 2026
***************
*** 334,340 ****
  
  	(const_string "no")))
  
! ;; Whether an insn loads an external address for the PCREL_OPT optimizaton.
  (define_attr "loads_external_address" "no,yes"
    (const_string "no"))
  
--- 334,340 ----
  
  	(const_string "no")))
  
! ;; Whether an insn loads an external address for the PCREL_OPT optimization.
  (define_attr "loads_external_address" "no,yes"
    (const_string "no"))
  
***************
*** 6696,6702 ****
     xsrdpiz %x0,%x1"
    [(set_attr "type" "fp")])
  
! ;; Opitmize converting SF/DFmode to signed SImode and back to SF/DFmode.  This
  ;; optimization prevents on ISA 2.06 systems and earlier having to store the
  ;; value from the FPR/vector unit to the stack, load the value into a GPR, sign
  ;; extend it, store it back on the stack from the GPR, load it back into the
--- 6696,6702 ----
     xsrdpiz %x0,%x1"
    [(set_attr "type" "fp")])
  
! ;; Optimize converting SF/DFmode to signed SImode and back to SF/DFmode.  This
  ;; optimization prevents on ISA 2.06 systems and earlier having to store the
  ;; value from the FPR/vector unit to the stack, load the value into a GPR, sign
  ;; extend it, store it back on the stack from the GPR, load it back into the
***************
*** 9544,9550 ****
  ;; individual 32-bit parts across.  Subreg doesn't work too well on the TF
  ;; value, since it is allocated in reload and not all of the flow information
  ;; is setup for it.  We have two patterns to do the two moves between gprs and
! ;; fprs.  There isn't a dependancy between the two, but we could potentially
  ;; schedule other instructions between the two instructions.
  
  (define_insn "p8_fmrgow_<mode>"
--- 9544,9550 ----
  ;; individual 32-bit parts across.  Subreg doesn't work too well on the TF
  ;; value, since it is allocated in reload and not all of the flow information
  ;; is setup for it.  We have two patterns to do the two moves between gprs and
! ;; fprs.  There isn't a dependency between the two, but we could potentially
  ;; schedule other instructions between the two instructions.
  
  (define_insn "p8_fmrgow_<mode>"
***************
*** 11714,11720 ****
  	    (const_int 8)))])
  
  ;; Call to indirect functions with the AIX abi using a 3 word descriptor.
! ;; Operand0 is the addresss of the function to call
  ;; Operand3 is the location in the function descriptor to load r2 from
  ;; Operand4 is the offset of the stack location holding the current TOC pointer
  
--- 11714,11720 ----
  	    (const_int 8)))])
  
  ;; Call to indirect functions with the AIX abi using a 3 word descriptor.
! ;; Operand0 is the address of the function to call
  ;; Operand3 is the location in the function descriptor to load r2 from
  ;; Operand4 is the offset of the stack location holding the current TOC pointer
  
***************
*** 11758,11764 ****
  	    (const_string "12")))])
  
  ;; Call to indirect functions with the ELFv2 ABI.
! ;; Operand0 is the addresss of the function to call
  ;; Operand3 is the offset of the stack location holding the current TOC pointer
  
  (define_insn "*call_indirect_elfv2<mode>"
--- 11758,11764 ----
  	    (const_string "12")))])
  
  ;; Call to indirect functions with the ELFv2 ABI.
! ;; Operand0 is the address of the function to call
  ;; Operand3 is the offset of the stack location holding the current TOC pointer
  
  (define_insn "*call_indirect_elfv2<mode>"
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/sync.md gcc-17-20260607/gcc/config/rs6000/sync.md
*** gcc-17-20260531/gcc/config/rs6000/sync.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/sync.md	Sun Jun  7 22:32:06 2026
***************
*** 198,203 ****
--- 198,254 ----
    DONE;
  })
  
+ ;; PTI and TI are both 128-bit modes; the following conversions are
+ ;; register-class changes only, no actual truncation, sign or zero
+ ;; extension occurs.
+ (define_insn_and_split "trunctipti2"
+   [(set (match_operand:PTI 0 "register_operand" "=r,r")
+         (truncate:PTI (match_operand:TI 1 "register_operand" "0,r")))]
+   "TARGET_POWERPC64"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 2) (match_dup 4))
+    (set (match_dup 3) (match_dup 5))]
+ {
+   operands[2] = gen_lowpart (DImode, operands[0]);
+   operands[3] = gen_highpart (DImode, operands[0]);
+   operands[4] = gen_lowpart (DImode, operands[1]);
+   operands[5] = gen_highpart (DImode, operands[1]);
+ }
+ [(set_attr "length" "0,8")])
+ 
+ (define_insn_and_split "extendptiti2"
+   [(set (match_operand:TI 0 "register_operand" "=r,r")
+         (sign_extend:TI (match_operand:PTI 1 "register_operand" "0,r")))]
+   "TARGET_POWERPC64"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 2) (match_dup 4))
+    (set (match_dup 3) (match_dup 5))]
+ {
+   operands[2] = gen_lowpart (DImode, operands[0]);
+   operands[3] = gen_highpart (DImode, operands[0]);
+   operands[4] = gen_lowpart (DImode, operands[1]);
+   operands[5] = gen_highpart (DImode, operands[1]);
+ }
+ [(set_attr "length" "0,8")])
+ 
+ (define_insn_and_split "zero_extendptiti2"
+   [(set (match_operand:TI 0 "register_operand" "=r,r")
+         (zero_extend:TI (match_operand:PTI 1 "register_operand" "0,r")))]
+   "TARGET_POWERPC64"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 2) (match_dup 4))
+    (set (match_dup 3) (match_dup 5))]
+ {
+   operands[2] = gen_lowpart (DImode, operands[0]);
+   operands[3] = gen_highpart (DImode, operands[0]);
+   operands[4] = gen_lowpart (DImode, operands[1]);
+   operands[5] = gen_highpart (DImode, operands[1]);
+ }
+ [(set_attr "length" "0,8")])
+ 
  ;; If TARGET_PREFIXED, always use pstq rather than stq.
  (define_insn "store_quadpti"
    [(set (match_operand:PTI 0 "quad_memory_operand" "=wQ")
***************
*** 265,271 ****
    DONE;
  })
  
! ;; Any supported integer mode that has atomic l<x>arx/st<x>cx. instrucitons
  ;; other than the quad memory operations, which have special restrictions.
  ;; Byte/halfword atomic instructions were added in ISA 2.06B, but were phased
  ;; in and did not show up until power8.  TImode atomic lqarx/stqcx. require
--- 316,322 ----
    DONE;
  })
  
! ;; Any supported integer mode that has atomic l<x>arx/st<x>cx. instructions
  ;; other than the quad memory operations, which have special restrictions.
  ;; Byte/halfword atomic instructions were added in ISA 2.06B, but were phased
  ;; in and did not show up until power8.  TImode atomic lqarx/stqcx. require
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/vector.md gcc-17-20260607/gcc/config/rs6000/vector.md
*** gcc-17-20260531/gcc/config/rs6000/vector.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/vector.md	Sun Jun  7 22:32:06 2026
***************
*** 46,52 ****
  ;; Vector arithmetic modes
  (define_mode_iterator VEC_A [V16QI V8HI V4SI V2DI V4SF V2DF])
  
! ;; Vector modes that need alginment via permutes
  (define_mode_iterator VEC_K [V16QI V8HI V4SI V4SF])
  
  ;; Vector logical modes
--- 46,52 ----
  ;; Vector arithmetic modes
  (define_mode_iterator VEC_A [V16QI V8HI V4SI V2DI V4SF V2DF])
  
! ;; Vector modes that need alignment via permutes
  (define_mode_iterator VEC_K [V16QI V8HI V4SI V4SF])
  
  ;; Vector logical modes
***************
*** 1300,1306 ****
    DONE;
  })
  
! ;; Vector shift right in bits. Currently supported ony for shift
  ;; amounts that can be expressed as byte shifts (divisible by 8).
  ;; General shift amounts can be supported using vsro + vsr. We're
  ;; not expecting to see these yet (the vectorizer currently
--- 1300,1306 ----
    DONE;
  })
  
! ;; Vector shift right in bits. Currently supported only for shift
  ;; amounts that can be expressed as byte shifts (divisible by 8).
  ;; General shift amounts can be supported using vsro + vsr. We're
  ;; not expecting to see these yet (the vectorizer currently
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/vsx.md gcc-17-20260607/gcc/config/rs6000/vsx.md
*** gcc-17-20260531/gcc/config/rs6000/vsx.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/vsx.md	Sun Jun  7 22:32:06 2026
***************
*** 5595,5601 ****
    emit_insn (gen_vcmpne<VSX_EXTRACT_WIDTH> (cmpz2_result, operands[2], vzero));
    emit_insn (gen_and<mode>3 (and_result, cmpz1_result, cmpz2_result));
  
!   /* Vector with ones in elments that do not match.  */
    emit_insn (gen_vcmpnez<VSX_EXTRACT_WIDTH> (cmpz_result, operands[1],
                                               operands[2]));
  
--- 5595,5601 ----
    emit_insn (gen_vcmpne<VSX_EXTRACT_WIDTH> (cmpz2_result, operands[2], vzero));
    emit_insn (gen_and<mode>3 (and_result, cmpz1_result, cmpz2_result));
  
!   /* Vector with ones in elements that do not match.  */
    emit_insn (gen_vcmpnez<VSX_EXTRACT_WIDTH> (cmpz_result, operands[1],
                                               operands[2]));
  
***************
*** 5683,5689 ****
    emit_insn (gen_vcmpne<VSX_EXTRACT_WIDTH> (cmpz2_result, operands[2], vzero));
    emit_insn (gen_and<mode>3 (and_result, cmpz1_result, cmpz2_result));
  
!   /* Vector with ones in elments that match.  */
    emit_insn (gen_vcmpnez<VSX_EXTRACT_WIDTH> (cmpz_result, operands[1],
                                               operands[2]));
    emit_insn (gen_one_cmpl<mode>2 (not_cmpz_result, cmpz_result));
--- 5683,5689 ----
    emit_insn (gen_vcmpne<VSX_EXTRACT_WIDTH> (cmpz2_result, operands[2], vzero));
    emit_insn (gen_and<mode>3 (and_result, cmpz1_result, cmpz2_result));
  
!   /* Vector with ones in elements that match.  */
    emit_insn (gen_vcmpnez<VSX_EXTRACT_WIDTH> (cmpz_result, operands[1],
                                               operands[2]));
    emit_insn (gen_one_cmpl<mode>2 (not_cmpz_result, cmpz_result));
***************
*** 6714,6721 ****
    else
      {
        /* Reverse value of byte element indexes by XORing with 0xFF.
! 	 Reverse the 32-byte section identifier match by subracting bits [0:2]
! 	 of elemet from 7.  */
        int value = INTVAL (operands[4]);
        rtx vreg = gen_reg_rtx (V16QImode);
  
--- 6714,6721 ----
    else
      {
        /* Reverse value of byte element indexes by XORing with 0xFF.
! 	 Reverse the 32-byte section identifier match by subtracting bits [0:2]
! 	 of element from 7.  */
        int value = INTVAL (operands[4]);
        rtx vreg = gen_reg_rtx (V16QImode);
  
diff -Nrcpad gcc-17-20260531/gcc/config/rs6000/vxworks.h gcc-17-20260607/gcc/config/rs6000/vxworks.h
*** gcc-17-20260531/gcc/config/rs6000/vxworks.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rs6000/vxworks.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 187,193 ****
  
  /* Leverage linker relaxation for RTPs.  This helps 32bit programs
     referring to kernel services too far away for short calls, is more
!    precise than -mlongcall and can be overriden with -Wl,--no-relax.  */
  #define VXWORKS_RELAX_LINK_SPEC "%{mrtp:--relax}"
  
  /*-------------------------------------------------------------*/
--- 187,193 ----
  
  /* Leverage linker relaxation for RTPs.  This helps 32bit programs
     referring to kernel services too far away for short calls, is more
!    precise than -mlongcall and can be overridden with -Wl,--no-relax.  */
  #define VXWORKS_RELAX_LINK_SPEC "%{mrtp:--relax}"
  
  /*-------------------------------------------------------------*/
*************** along with GCC; see the file COPYING3.
*** 298,304 ****
     This is essentially the linux64.h version with an extra guard on
     TARGET_VXWORKS_RTP to avoid DW_EH_PE_indirect in 64bit DKMs as they
     could result in references from one DKM to resolve to symbols exposed
!    by a previsouly loaded DKM even if the symbol is also provided by the
     DKM where the reference takes place.  */
  #undef ASM_PREFERRED_EH_DATA_FORMAT
  #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
--- 298,304 ----
     This is essentially the linux64.h version with an extra guard on
     TARGET_VXWORKS_RTP to avoid DW_EH_PE_indirect in 64bit DKMs as they
     could result in references from one DKM to resolve to symbols exposed
!    by a previously loaded DKM even if the symbol is also provided by the
     DKM where the reference takes place.  */
  #undef ASM_PREFERRED_EH_DATA_FORMAT
  #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
diff -Nrcpad gcc-17-20260531/gcc/config/rx/rx.cc gcc-17-20260607/gcc/config/rx/rx.cc
*** gcc-17-20260531/gcc/config/rx/rx.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rx/rx.cc	Sun Jun  7 22:32:06 2026
*************** rx_print_operand (FILE * file, rtx op, i
*** 867,873 ****
  	    rtx base = XEXP (op, 0);
  	    rtx index = XEXP (op, 1);
  
! 	    /* Check for a swaped index register and scaling factor.
  	       Not sure if this can happen, but be prepared to handle it.  */
  	    if (CONST_INT_P (base) && REG_P (index))
  	      {
--- 867,873 ----
  	    rtx base = XEXP (op, 0);
  	    rtx index = XEXP (op, 1);
  
! 	    /* Check for a swapped index register and scaling factor.
  	       Not sure if this can happen, but be prepared to handle it.  */
  	    if (CONST_INT_P (base) && REG_P (index))
  	      {
*************** rx_expand_epilogue (bool is_sibcall)
*** 2081,2087 ****
    unsigned int reg;
    unsigned HOST_WIDE_INT total_size;
  
!   /* FIXME: We do not support indirect sibcalls at the moment becaause we
       cannot guarantee that the register holding the function address is a
       call-used register.  If it is a call-saved register then the stack
       pop instructions generated in the epilogue will corrupt the address
--- 2081,2087 ----
    unsigned int reg;
    unsigned HOST_WIDE_INT total_size;
  
!   /* FIXME: We do not support indirect sibcalls at the moment because we
       cannot guarantee that the register holding the function address is a
       call-used register.  If it is a call-saved register then the stack
       pop instructions generated in the epilogue will corrupt the address
diff -Nrcpad gcc-17-20260531/gcc/config/rx/rx.md gcc-17-20260607/gcc/config/rx/rx.md
*** gcc-17-20260531/gcc/config/rx/rx.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/rx/rx.md	Sun Jun  7 22:32:06 2026
***************
*** 2064,2070 ****
  ;; combiner bridge patterns.  Especially when the memory operands have a
  ;; displacement, the resulting patterns look too complex.
  ;; Instead we manually look around the matched insn to see if there is a
! ;; preceeding memory load and a following memory store of the modified register
  ;; which can be fused into the single *_in_memory insn.
  ;; Do that before register allocation, as it can eliminate one temporary
  ;; register that needs to be allocated.
--- 2064,2070 ----
  ;; combiner bridge patterns.  Especially when the memory operands have a
  ;; displacement, the resulting patterns look too complex.
  ;; Instead we manually look around the matched insn to see if there is a
! ;; preceding memory load and a following memory store of the modified register
  ;; which can be fused into the single *_in_memory insn.
  ;; Do that before register allocation, as it can eliminate one temporary
  ;; register that needs to be allocated.
diff -Nrcpad gcc-17-20260531/gcc/config/s390/2817.md gcc-17-20260607/gcc/config/s390/2817.md
*** gcc-17-20260531/gcc/config/s390/2817.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/s390/2817.md	Sun Jun  7 22:32:06 2026
***************
*** 47,53 ****
  
  ;; Most simple instruction a fast enough to be handled by OOO even with
  ;; latency == 0.  This reduces life ranges and spilling. We want to increase
! ;; life range for longer running ops, though, thats why we do not use
  ;; -fno-schedule-insns.
  (define_insn_reservation "z196_simple_LSU" 0
    (and (eq_attr "cpu" "z196")
--- 47,53 ----
  
  ;; Most simple instruction a fast enough to be handled by OOO even with
  ;; latency == 0.  This reduces life ranges and spilling. We want to increase
! ;; life range for longer running ops, though, that's why we do not use
  ;; -fno-schedule-insns.
  (define_insn_reservation "z196_simple_LSU" 0
    (and (eq_attr "cpu" "z196")
diff -Nrcpad gcc-17-20260531/gcc/config/s390/s390.cc gcc-17-20260607/gcc/config/s390/s390.cc
*** gcc-17-20260531/gcc/config/s390/s390.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/s390/s390.cc	Sun Jun  7 22:32:06 2026
*************** s390_contiguous_bitmask_nowrap_p (unsign
*** 2578,2584 ****
        }
      else
        {
! 	/* Look for the firt zero bit after the range of ones.  */
  	if (! (bitmask & in))
  	  /* Found it.  */
  	  break;
--- 2578,2584 ----
        }
      else
        {
! 	/* Look for the first zero bit after the range of ones.  */
  	if (! (bitmask & in))
  	  /* Found it.  */
  	  break;
*************** s390_contiguous_bitmask_p (unsigned HOST
*** 2656,2662 ****
  /* Return true if OP is a constant which fits into a vector register and if it
     is a 16-byte constant, then the high and low half must equal.  Otherwise
     return false.  The out parameter *VEC2 equals the high/low half for 16-byte
!    constants and for smaller constants it equals the concatination of constant
     OP until an 8-byte constant is constructed.  */
  
  static bool
--- 2656,2662 ----
  /* Return true if OP is a constant which fits into a vector register and if it
     is a 16-byte constant, then the high and low half must equal.  Otherwise
     return false.  The out parameter *VEC2 equals the high/low half for 16-byte
!    constants and for smaller constants it equals the concatenation of constant
     OP until an 8-byte constant is constructed.  */
  
  static bool
*************** s390_short_displacement (rtx disp)
*** 3156,3162 ****
      return true;
  
    /* Without the long displacement facility we don't need to
!      distingiush between long and short displacement.  */
    if (!TARGET_LONG_DISPLACEMENT)
      return true;
  
--- 3156,3162 ----
      return true;
  
    /* Without the long displacement facility we don't need to
!      distinguish between long and short displacement.  */
    if (!TARGET_LONG_DISPLACEMENT)
      return true;
  
*************** s390_expand_cmpmem (rtx target, rtx op0,
*** 6641,6647 ****
  }
  
  /* Emit a conditional jump to LABEL for condition code mask MASK using
!    comparsion operator COMPARISON.  Return the emitted jump insn.  */
  
  static rtx_insn *
  s390_emit_ccraw_jump (HOST_WIDE_INT mask, enum rtx_code comparison, rtx label)
--- 6641,6647 ----
  }
  
  /* Emit a conditional jump to LABEL for condition code mask MASK using
!    comparison operator COMPARISON.  Return the emitted jump insn.  */
  
  static rtx_insn *
  s390_emit_ccraw_jump (HOST_WIDE_INT mask, enum rtx_code comparison, rtx label)
*************** s390_expand_vec_movstr (rtx result, rtx
*** 6826,6832 ****
    force_expand_binop (Pmode, sub_optab, offset, temp, offset,
  		      1, OPTAB_DIRECT);
  
!   /* Store `offset' bytes in the dstination string.  The quick check
       has loaded at least `offset' bytes into vsrc.  */
  
    emit_insn (gen_vstlv16qi (vsrc, gen_lowpart (SImode, offset), dst));
--- 6826,6832 ----
    force_expand_binop (Pmode, sub_optab, offset, temp, offset,
  		      1, OPTAB_DIRECT);
  
!   /* Store `offset' bytes in the destination string.  The quick check
       has loaded at least `offset' bytes into vsrc.  */
  
    emit_insn (gen_vstlv16qi (vsrc, gen_lowpart (SImode, offset), dst));
*************** s390_expand_cstoreti4 (rtx dst, rtx cmp,
*** 7292,7299 ****
    /* Prior VXE3 emulate the comparison.  For an (in)equality test exploit
       VECTOR COMPARE EQUAL.  For a relational test, first compare the high part
       via VECTOR ELEMENT COMPARE (LOGICAL).  If the high part does not equal,
!      then consume the CC immediatelly by a subsequent LOAD ON CONDITION.
!      Otherweise, if the high part equals, then perform a subsequent VECTOR
       COMPARE HIGH LOGICAL followed by a LOAD ON CONDITION.  */
  
    op1 = force_reg (V2DImode, simplify_gen_subreg (V2DImode, op1, TImode, 0));
--- 7292,7299 ----
    /* Prior VXE3 emulate the comparison.  For an (in)equality test exploit
       VECTOR COMPARE EQUAL.  For a relational test, first compare the high part
       via VECTOR ELEMENT COMPARE (LOGICAL).  If the high part does not equal,
!      then consume the CC immediately by a subsequent LOAD ON CONDITION.
!      Otherwise, if the high part equals, then perform a subsequent VECTOR
       COMPARE HIGH LOGICAL followed by a LOAD ON CONDITION.  */
  
    op1 = force_reg (V2DImode, simplify_gen_subreg (V2DImode, op1, TImode, 0));
*************** s390_expand_int_spaceship (rtx op0, rtx
*** 8286,8293 ****
    machine_mode mode = GET_MODE (op1);
  
    /* Prior VXE3 emulate a 128-bit comparison by breaking it up into three
!      comparisons.  First test the high halfs.  In case they equal, then test
!      the low halfs.  Finally, test for equality.  Depending on the results
       make use of LOCs.  */
    if (mode == TImode && !TARGET_VXE3)
      {
--- 8286,8293 ----
    machine_mode mode = GET_MODE (op1);
  
    /* Prior VXE3 emulate a 128-bit comparison by breaking it up into three
!      comparisons.  First test the high halves.  In case they equal, then test
!      the low halves.  Finally, test for equality.  Depending on the results
       make use of LOCs.  */
    if (mode == TImode && !TARGET_VXE3)
      {
*************** s390_expand_int_spaceship (rtx op0, rtx
*** 8298,8304 ****
  	= force_reg (V2DImode, simplify_gen_subreg (V2DImode, op2, TImode, 0));
        rtx lab = gen_label_rtx ();
        rtx ccz = gen_rtx_REG (CCZmode, CC_REGNUM);
!       /* Compare high halfs for equality.
  	 VEC[L]G op1, op2 sets
  	   CC1 if high(op1) < high(op2)
  	 and
--- 8298,8304 ----
  	= force_reg (V2DImode, simplify_gen_subreg (V2DImode, op2, TImode, 0));
        rtx lab = gen_label_rtx ();
        rtx ccz = gen_rtx_REG (CCZmode, CC_REGNUM);
!       /* Compare high halves for equality.
  	 VEC[L]G op1, op2 sets
  	   CC1 if high(op1) < high(op2)
  	 and
*************** s390_expand_int_spaceship (rtx op0, rtx
*** 8311,8317 ****
  			 gen_rtx_VEC_SELECT (DImode, op1, lane0),
  			 gen_rtx_VEC_SELECT (DImode, op2, lane0))));
        s390_emit_jump (lab, gen_rtx_NE (CCZmode, ccz, const0_rtx));
!       /* At this point we know that the high halfs equal.
  	 VCHLGS op2, op1 sets CC1 if low(op1) < low(op2)  */
        emit_insn (gen_rtx_PARALLEL (
  	VOIDmode,
--- 8311,8317 ----
  			 gen_rtx_VEC_SELECT (DImode, op1, lane0),
  			 gen_rtx_VEC_SELECT (DImode, op2, lane0))));
        s390_emit_jump (lab, gen_rtx_NE (CCZmode, ccz, const0_rtx));
!       /* At this point we know that the high halves equal.
  	 VCHLGS op2, op1 sets CC1 if low(op1) < low(op2)  */
        emit_insn (gen_rtx_PARALLEL (
  	VOIDmode,
*************** s390_expand_int_spaceship (rtx op0, rtx
*** 8326,8332 ****
  		     gen_rtx_LTU (CCUmode, gen_rtx_REG (CCUmode, CC_REGNUM),
  				  const0_rtx),
  		     constm1_rtx, op0));
!       /* Deal with the case where both halfs equal.  */
        emit_insn (gen_rtx_PARALLEL (
  	VOIDmode,
  	gen_rtvec (2,
--- 8326,8332 ----
  		     gen_rtx_LTU (CCUmode, gen_rtx_REG (CCUmode, CC_REGNUM),
  				  const0_rtx),
  		     constm1_rtx, op0));
!       /* Deal with the case where both halves equal.  */
        emit_insn (gen_rtx_PARALLEL (
  	VOIDmode,
  	gen_rtvec (2,
*************** s390_z10_optimize_cmp (rtx_insn *insn)
*** 15497,15503 ****
       COMPARE arguments and its mask.  If we already swapped
       the operands, or if swapping them would cause a conflict
       with the previous insn, issue a NOP after the COMPARE in
!      order to separate the two instuctions.  */
    next_insn = next_active_insn (insn);
    if (next_insn != NULL_RTX && INSN_P (next_insn)
        && s390_non_addr_reg_read_p (*op1, next_insn))
--- 15497,15503 ----
       COMPARE arguments and its mask.  If we already swapped
       the operands, or if swapping them would cause a conflict
       with the previous insn, issue a NOP after the COMPARE in
!      order to separate the two instructions.  */
    next_insn = next_active_insn (insn);
    if (next_insn != NULL_RTX && INSN_P (next_insn)
        && s390_non_addr_reg_read_p (*op1, next_insn))
*************** s390_support_vector_misalignment (machin
*** 17576,17582 ****
  
  /* The vector ABI requires vector types to be aligned on an 8 byte
     boundary (our stack alignment).  However, we allow this to be
!    overriden by the user, while this definitely breaks the ABI.  */
  static HOST_WIDE_INT
  s390_vector_alignment (const_tree type)
  {
--- 17576,17582 ----
  
  /* The vector ABI requires vector types to be aligned on an 8 byte
     boundary (our stack alignment).  However, we allow this to be
!    overridden by the user, while this definitely breaks the ABI.  */
  static HOST_WIDE_INT
  s390_vector_alignment (const_tree type)
  {
diff -Nrcpad gcc-17-20260531/gcc/config/s390/s390.h gcc-17-20260607/gcc/config/s390/s390.h
*** gcc-17-20260531/gcc/config/s390/s390.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/s390/s390.h	Sun Jun  7 22:32:06 2026
*************** CUMULATIVE_ARGS;
*** 850,856 ****
  /* Don't perform CSE on function addresses.  */
  #define NO_FUNCTION_CSE 1
  
! /* This value is used in tree-sra to decide whether it might benefical
     to split a struct move into several word-size moves.  For S/390
     only small values make sense here since struct moves are relatively
     cheap thanks to mvc so the small default value chosen for archs
--- 850,856 ----
  /* Don't perform CSE on function addresses.  */
  #define NO_FUNCTION_CSE 1
  
! /* This value is used in tree-sra to decide whether it might beneficial
     to split a struct move into several word-size moves.  For S/390
     only small values make sense here since struct moves are relatively
     cheap thanks to mvc so the small default value chosen for archs
diff -Nrcpad gcc-17-20260531/gcc/config/s390/s390.md gcc-17-20260607/gcc/config/s390/s390.md
*** gcc-17-20260531/gcc/config/s390/s390.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/s390/s390.md	Sun Jun  7 22:32:06 2026
***************
*** 11532,11539 ****
    [(match_operand:SI 0 "register_operand")	;; bool success output
     (match_operand:DINT 1 "nonimmediate_operand");; oldval output
     (match_operand:DINT 2 "s_operand")		;; memory
!    (match_operand:DINT 3 "general_operand")	;; expected intput
!    (match_operand:DINT 4 "general_operand")	;; newval intput
     (match_operand:SI 5 "const_int_operand")	;; is_weak
     (match_operand:SI 6 "const_int_operand")	;; success model
     (match_operand:SI 7 "const_int_operand")]	;; failure model
--- 11532,11539 ----
    [(match_operand:SI 0 "register_operand")	;; bool success output
     (match_operand:DINT 1 "nonimmediate_operand");; oldval output
     (match_operand:DINT 2 "s_operand")		;; memory
!    (match_operand:DINT 3 "general_operand")	;; expected input
!    (match_operand:DINT 4 "general_operand")	;; newval input
     (match_operand:SI 5 "const_int_operand")	;; is_weak
     (match_operand:SI 6 "const_int_operand")	;; success model
     (match_operand:SI 7 "const_int_operand")]	;; failure model
diff -Nrcpad gcc-17-20260531/gcc/config/s390/subst.md gcc-17-20260607/gcc/config/s390/subst.md
*** gcc-17-20260531/gcc/config/s390/subst.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/s390/subst.md	Sun Jun  7 22:32:06 2026
***************
*** 50,56 ****
  (define_subst_attr "cconly" "cconly_subst" "" "_cconly")
  
  
! ; Does transformations to switch between patterns unsing risbg +
  ; clobber CC (z10) and risbgn without clobber (zEC12).
  (define_subst "clobbercc_or_nocc_subst"
    [(set (match_operand 0 "" "") (match_operand 1 "" ""))]
--- 50,56 ----
  (define_subst_attr "cconly" "cconly_subst" "" "_cconly")
  
  
! ; Does transformations to switch between patterns using risbg +
  ; clobber CC (z10) and risbgn without clobber (zEC12).
  (define_subst "clobbercc_or_nocc_subst"
    [(set (match_operand 0 "" "") (match_operand 1 "" ""))]
diff -Nrcpad gcc-17-20260531/gcc/config/s390/vx-builtins.md gcc-17-20260607/gcc/config/s390/vx-builtins.md
*** gcc-17-20260531/gcc/config/s390/vx-builtins.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/s390/vx-builtins.md	Sun Jun  7 22:32:06 2026
***************
*** 2097,2103 ****
  	(unspec:SI [(reg:CCVFHE CC_REGNUM)] UNSPEC_CC_TO_INT))]
    "TARGET_VX")
  
! ; These 3 cannot be merged as the insn defintion above since it also
  ; requires to rewrite the RTL equality operator that the same time as
  ; the CC mode.
  
--- 2097,2103 ----
  	(unspec:SI [(reg:CCVFHE CC_REGNUM)] UNSPEC_CC_TO_INT))]
    "TARGET_VX")
  
! ; These 3 cannot be merged as the insn definition above since it also
  ; requires to rewrite the RTL equality operator that the same time as
  ; the CC mode.
  
diff -Nrcpad gcc-17-20260531/gcc/config/sh/sh-mem.cc gcc-17-20260607/gcc/config/sh/sh-mem.cc
*** gcc-17-20260531/gcc/config/sh/sh-mem.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sh/sh-mem.cc	Sun Jun  7 22:32:06 2026
*************** sh_expand_cmpstr (rtx *operands)
*** 273,279 ****
    add_int_reg_note (jump, REG_BR_PROB, prob_likely);
    /* end loop.  */
  
!   /* Fallthu, substract words.  */
    if (TARGET_LITTLE_ENDIAN)
      {
        rtx low_1 = gen_lowpart (HImode, tmp1);
--- 273,279 ----
    add_int_reg_note (jump, REG_BR_PROB, prob_likely);
    /* end loop.  */
  
!   /* Fallthu, subtract words.  */
    if (TARGET_LITTLE_ENDIAN)
      {
        rtx low_1 = gen_lowpart (HImode, tmp1);
diff -Nrcpad gcc-17-20260531/gcc/config/sh/sh.cc gcc-17-20260607/gcc/config/sh/sh.cc
*** gcc-17-20260531/gcc/config/sh/sh.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sh/sh.cc	Sun Jun  7 22:32:06 2026
*************** sh_option_override (void)
*** 847,853 ****
        sh_cpu = PROCESSOR_SH4A;
      }
  
!   /* User/priviledged mode is supported only on SH3* and SH4*.
       Disable it for everything else.  */
    if (!TARGET_SH3 && TARGET_USERMODE)
      TARGET_USERMODE = false;
--- 847,853 ----
        sh_cpu = PROCESSOR_SH4A;
      }
  
!   /* User/privileged mode is supported only on SH3* and SH4*.
       Disable it for everything else.  */
    if (!TARGET_SH3 && TARGET_USERMODE)
      TARGET_USERMODE = false;
*************** sh_rtx_costs (rtx x, machine_mode mode A
*** 3291,3297 ****
  	  && XEXP (x, 1) == const1_rtx
  	  && CONST_INT_P (XEXP (x, 2))
  	  && CONST_INT_P (XEXP (XEXP (x, 0), 1))
! 	  /* Check that the xor constaint overlaps with the extracted bit.  */
  	  && (INTVAL (XEXP (XEXP (x, 0), 1)) & (1LL << INTVAL (XEXP (x, 2)))))
  	{
  	  *total = 1; //COSTS_N_INSNS (1);
--- 3291,3297 ----
  	  && XEXP (x, 1) == const1_rtx
  	  && CONST_INT_P (XEXP (x, 2))
  	  && CONST_INT_P (XEXP (XEXP (x, 0), 1))
! 	  /* Check that the xor constraint overlaps with the extracted bit.  */
  	  && (INTVAL (XEXP (XEXP (x, 0), 1)) & (1LL << INTVAL (XEXP (x, 2)))))
  	{
  	  *total = 1; //COSTS_N_INSNS (1);
*************** fixup_addr_diff_vecs (rtx_insn *first)
*** 5728,5734 ****
  	    break;
  	}
        /* FIXME: This is a bug in the optimizer, but it seems harmless
! 	 to just avoid panicing.  */
        if (!prev)
  	continue;
  
--- 5728,5734 ----
  	    break;
  	}
        /* FIXME: This is a bug in the optimizer, but it seems harmless
! 	 to just avoid panicking.  */
        if (!prev)
  	continue;
  
*************** sh_expand_epilogue (bool sibcall_p)
*** 7298,7304 ****
  		else
  		  break;
  
! 	      /* Use movml when all banked register are poped.  */
  	      if (count == LAST_BANKED_REG - FIRST_BANKED_REG + 1)
  		use_movml = true;
  	    }
--- 7298,7304 ----
  		else
  		  break;
  
! 	      /* Use movml when all banked register are popped.  */
  	      if (count == LAST_BANKED_REG - FIRST_BANKED_REG + 1)
  		use_movml = true;
  	    }
*************** sh_legitimize_address_displacement (rtx
*** 11451,11457 ****
    return false;
  }
  
! /* Return true if movsf insn should be splited with an additional
     register.  */
  bool
  sh_movsf_ie_ra_split_p (rtx op0, rtx op1, rtx op2)
--- 11451,11457 ----
    return false;
  }
  
! /* Return true if movsf insn should be split with an additional
     register.  */
  bool
  sh_movsf_ie_ra_split_p (rtx op0, rtx op1, rtx op2)
*************** sh_can_use_simple_return_p (void)
*** 11552,11558 ****
    if (! reload_completed || frame_pointer_needed)
      return false;
  
!   /* Moving prologue around does't reduce the size.  */
    if (optimize_function_for_size_p (cfun))
      return false;
  
--- 11552,11558 ----
    if (! reload_completed || frame_pointer_needed)
      return false;
  
!   /* Moving prologue around doesn't reduce the size.  */
    if (optimize_function_for_size_p (cfun))
      return false;
  
*************** sh_find_equiv_gbr_addr (rtx_insn* insn,
*** 11719,11725 ****
      {
        /* If GBR is marked as call clobbered we bail out if we see a call.
  	 FIXME: Actually should check if this mem refers to the gbr value
! 	 before or after the call.  If there is a store_gbr preceeding this
  	 mem, it's safe to use GBR for this mem.
  
  	 If GBR is not marked as call clobbered, but there is some other
--- 11719,11725 ----
      {
        /* If GBR is marked as call clobbered we bail out if we see a call.
  	 FIXME: Actually should check if this mem refers to the gbr value
! 	 before or after the call.  If there is a store_gbr preceding this
  	 mem, it's safe to use GBR for this mem.
  
  	 If GBR is not marked as call clobbered, but there is some other
*************** sh_check_add_incdec_notes (rtx_insn* i)
*** 11884,11890 ****
    return i;
  }
  
! /* Given a move insn destiation and a source, make sure that the move source
     operand is not a post-inc mem load with the same address reg as the
     destination.  Returns the modified source operand with the post-inc removed
     if necessary.  */
--- 11884,11890 ----
    return i;
  }
  
! /* Given a move insn destination and a source, make sure that the move source
     operand is not a post-inc mem load with the same address reg as the
     destination.  Returns the modified source operand with the post-inc removed
     if necessary.  */
*************** private:
*** 12251,12257 ****
  };
  
  /* Given an rtx x, determine whether the expression can be used to create
!    an insn that calulates x and stores the result in the T bit.
     This is used by the 'treg_set_expr' predicate to construct insns sequences
     where T bit results are fed into other insns, such as addc, subc, negc
     insns.
--- 12251,12257 ----
  };
  
  /* Given an rtx x, determine whether the expression can be used to create
!    an insn that calculates x and stores the result in the T bit.
     This is used by the 'treg_set_expr' predicate to construct insns sequences
     where T bit results are fed into other insns, such as addc, subc, negc
     insns.
*************** private:
*** 12260,12266 ****
     distinguish between 'positive' and 'negative' forms.  For now this has to
     be done in the preparation code.  We could also introduce
     'pos_treg_set_expr' and 'neg_treg_set_expr' predicates for that and write
!    two different patterns for the 'postive' and 'negative' forms.  However,
     the total amount of lines of code seems to be about the same and the
     '{pos|neg}_treg_set_expr' predicates would be more expensive, because the
     recog function would need to look inside the expression by temporarily
--- 12260,12266 ----
     distinguish between 'positive' and 'negative' forms.  For now this has to
     be done in the preparation code.  We could also introduce
     'pos_treg_set_expr' and 'neg_treg_set_expr' predicates for that and write
!    two different patterns for the 'positive' and 'negative' forms.  However,
     the total amount of lines of code seems to be about the same and the
     '{pos|neg}_treg_set_expr' predicates would be more expensive, because the
     recog function would need to look inside the expression by temporarily
diff -Nrcpad gcc-17-20260531/gcc/config/sh/sh.md gcc-17-20260607/gcc/config/sh/sh.md
*** gcc-17-20260531/gcc/config/sh/sh.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sh/sh.md	Sun Jun  7 22:32:06 2026
***************
*** 823,829 ****
  
  ;; Sometimes combine fails to form the (eq (and (op) (op)) 0) tst insn.
  ;; Try to fix that in the split1 pass by looking for the previous set
! ;; of the tested op.  Also see if there is a preceeding sign/zero
  ;; extension that can be avoided.
  (define_split
    [(set (reg:SI T_REG)
--- 823,829 ----
  
  ;; Sometimes combine fails to form the (eq (and (op) (op)) 0) tst insn.
  ;; Try to fix that in the split1 pass by looking for the previous set
! ;; of the tested op.  Also see if there is a preceding sign/zero
  ;; extension that can be avoided.
  (define_split
    [(set (reg:SI T_REG)
***************
*** 854,860 ****
        && !sh_insn_operands_modified_between_p (op.insn, op.insn, curr_insn))
      {
        if (dump_file)
! 	fprintf (dump_file, "cmpeqsi_t: found preceeding and in insn %d\n",
  		 INSN_UID (op.insn));
  
        if (!(arith_reg_operand (XEXP (op.set_src, 0), SImode)
--- 854,860 ----
        && !sh_insn_operands_modified_between_p (op.insn, op.insn, curr_insn))
      {
        if (dump_file)
! 	fprintf (dump_file, "cmpeqsi_t: found preceding and in insn %d\n",
  		 INSN_UID (op.insn));
  
        if (!(arith_reg_operand (XEXP (op.set_src, 0), SImode)
***************
*** 1653,1659 ****
     (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1)))])
  
  
! ;; The tree optimiziers canonicalize 
  ;;    reg + (reg & 1)
  ;; into
  ;;    (reg + 1) & -2
--- 1653,1659 ----
     (set (match_dup 0) (plus:SI (match_dup 0) (const_int 1)))])
  
  
! ;; The tree optimizers canonicalize 
  ;;    reg + (reg & 1)
  ;; into
  ;;    (reg + 1) & -2
***************
*** 4597,4616 ****
  (define_expand "bswapsi2"
    [(set (match_operand:SI 0 "arith_reg_dest" "")
  	(bswap:SI (match_operand:SI 1 "arith_reg_operand" "")))]
!   "TARGET_SH1"
  {
!   if (! can_create_pseudo_p ())
!     FAIL;
!   else
!     {
!       rtx tmp0 = gen_reg_rtx (SImode);
!       rtx tmp1 = gen_reg_rtx (SImode);
  
!       emit_insn (gen_swapbsi2 (tmp0, operands[1]));
!       emit_insn (gen_rotlsi3_16 (tmp1, tmp0));
!       emit_insn (gen_swapbsi2 (operands[0], tmp1));
!       DONE;
!     }
  })
  
  (define_insn "swapbsi2"
--- 4597,4611 ----
  (define_expand "bswapsi2"
    [(set (match_operand:SI 0 "arith_reg_dest" "")
  	(bswap:SI (match_operand:SI 1 "arith_reg_operand" "")))]
!   "TARGET_SH1 && can_create_pseudo_p ()"
  {
!   rtx tmp0 = gen_reg_rtx (SImode);
!   rtx tmp1 = gen_reg_rtx (SImode);
  
!   emit_insn (gen_swapbsi2 (tmp0, operands[1]));
!   emit_insn (gen_rotlsi3_16 (tmp1, tmp0));
!   emit_insn (gen_swapbsi2 (operands[0], tmp1));
!   DONE;
  })
  
  (define_insn "swapbsi2"
***************
*** 5318,5324 ****
  })
  
  ;; The address %0 is assumed to be 4-aligned at least.  Thus, by ORing
! ;; 0xf0000008, we get the low-oder bits *1*00 (binary), which fits
  ;; the requirement *1*00 for associative address writes.  The alignment of
  ;; %0 implies that its least significant bit is cleared,
  ;; thus we clear the V bit of a matching entry if there is one.
--- 5313,5319 ----
  })
  
  ;; The address %0 is assumed to be 4-aligned at least.  Thus, by ORing
! ;; 0xf0000008, we get the low-order bits *1*00 (binary), which fits
  ;; the requirement *1*00 for associative address writes.  The alignment of
  ;; %0 implies that its least significant bit is cleared,
  ;; thus we clear the V bit of a matching entry if there is one.
***************
*** 5438,5448 ****
  ;; placed into delay slots.  Since there is no QImode PC relative load, the
  ;; Q constraint and general_movsrc_operand will reject it for QImode.
  ;; The Sid/Ssd alternatives should come before Sdd in order to avoid
! ;; a preference of using r0 als the register operand for addressing modes
  ;; other than displacement addressing.
  ;; The Sdd alternatives allow only r0 as register operand, even though on
  ;; SH2A any register could be allowed by switching to a 32 bit insn.
! ;; Generally sticking to the r0 is preferrable, since it generates smaller
  ;; code.  Obvious r0 reloads can then be eliminated with a peephole on SH2A.
  (define_insn "*mov<mode>"
    [(set (match_operand:QIHI 0 "general_movdst_operand"
--- 5433,5443 ----
  ;; placed into delay slots.  Since there is no QImode PC relative load, the
  ;; Q constraint and general_movsrc_operand will reject it for QImode.
  ;; The Sid/Ssd alternatives should come before Sdd in order to avoid
! ;; a preference of using r0 as the register operand for addressing modes
  ;; other than displacement addressing.
  ;; The Sdd alternatives allow only r0 as register operand, even though on
  ;; SH2A any register could be allowed by switching to a 32 bit insn.
! ;; Generally sticking to the r0 is preferable, since it generates smaller
  ;; code.  Obvious r0 reloads can then be eliminated with a peephole on SH2A.
  (define_insn "*mov<mode>"
    [(set (match_operand:QIHI 0 "general_movdst_operand"
***************
*** 10892,10898 ****
  ;; to be one.  It tries to convert a sequence such as
  ;;	movt	r2	->	movt	r2
  ;;	movt	r13		mov	r2,r13
! ;; This gives the schduler a bit more freedom to hoist a following
  ;; comparison insn.  Moreover, it the reg-reg mov insn is MT group which has
  ;; better chances for parallel execution.
  ;; We can do this with a peephole2 pattern, but then the cprop_hardreg
--- 10887,10893 ----
  ;; to be one.  It tries to convert a sequence such as
  ;;	movt	r2	->	movt	r2
  ;;	movt	r13		mov	r2,r13
! ;; This gives the scheduler a bit more freedom to hoist a following
  ;; comparison insn.  Moreover, it the reg-reg mov insn is MT group which has
  ;; better chances for parallel execution.
  ;; We can do this with a peephole2 pattern, but then the cprop_hardreg
diff -Nrcpad gcc-17-20260531/gcc/config/sh/sh4-300.md gcc-17-20260607/gcc/config/sh/sh4-300.md
*** gcc-17-20260531/gcc/config/sh/sh4-300.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sh/sh4-300.md	Sun Jun  7 22:32:06 2026
***************
*** 269,275 ****
         (eq_attr "type" "arith3"))
    "sh4_300_issue,all*4")
  
! ;; arith3b insns without brach redirection make use of the 0-offset 0-latency
  ;; branch feature, and thus schedule the same no matter if the branch is taken
  ;; or not.  If the branch is redirected, the taken branch might take longer,
  ;; but then, we don't have to take the next branch.
--- 269,275 ----
         (eq_attr "type" "arith3"))
    "sh4_300_issue,all*4")
  
! ;; arith3b insns without branch redirection make use of the 0-offset 0-latency
  ;; branch feature, and thus schedule the same no matter if the branch is taken
  ;; or not.  If the branch is redirected, the taken branch might take longer,
  ;; but then, we don't have to take the next branch.
diff -Nrcpad gcc-17-20260531/gcc/config/sh/sh_treg_combine.cc gcc-17-20260607/gcc/config/sh/sh_treg_combine.cc
*** gcc-17-20260531/gcc/config/sh/sh_treg_combine.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sh/sh_treg_combine.cc	Sun Jun  7 22:32:06 2026
*************** checking whether the ccreg is set before
*** 57,63 ****
  by testing another register for != 0, which was set by a ccreg store.
  This can be optimized by eliminating the redundant comparison and
  inverting the branch condition.  There can be multiple comparisons in
! different basic blocks that all end up in the redunant test insn before the
  conditional branch.  Some example RTL ...
  
  Example 1)
--- 57,63 ----
  by testing another register for != 0, which was set by a ccreg store.
  This can be optimized by eliminating the redundant comparison and
  inverting the branch condition.  There can be multiple comparisons in
! different basic blocks that all end up in the redundant test insn before the
  conditional branch.  Some example RTL ...
  
  Example 1)
*************** sh_treg_combine::try_combine_comparisons
*** 1085,1091 ****
      {
        int i_empty_count = i->setcc.empty () + i->cstore.empty ();
  
!       // A completly empty entry is OK (could be the BB of the cbranch).
        if (i_empty_count == 2)
  	continue;
  
--- 1085,1091 ----
      {
        int i_empty_count = i->setcc.empty () + i->cstore.empty ();
  
!       // A completely empty entry is OK (could be the BB of the cbranch).
        if (i_empty_count == 2)
  	continue;
  
*************** sh_treg_combine::try_eliminate_cstores (
*** 1261,1267 ****
    for (std::list<bb_entry>::const_iterator i = trace.bb_entries.begin ();
         i != trace.bb_entries.end (); ++i)
      {
!       // A completly empty entry is OK (could be the BB of the cbranch).
        if (i->setcc.empty () && i->cstore.empty ())
  	continue;
  
--- 1261,1267 ----
    for (std::list<bb_entry>::const_iterator i = trace.bb_entries.begin ();
         i != trace.bb_entries.end (); ++i)
      {
!       // A completely empty entry is OK (could be the BB of the cbranch).
        if (i->setcc.empty () && i->cstore.empty ())
  	continue;
  
diff -Nrcpad gcc-17-20260531/gcc/config/sh/sync.md gcc-17-20260607/gcc/config/sh/sync.md
*** gcc-17-20260531/gcc/config/sh/sync.md	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sh/sync.md	Sun Jun  7 22:32:06 2026
***************
*** 42,48 ****
  ;; Hardware Atomics (-matomic-model=hard-llcs; SH4A only)
  ;;
  ;; Hardware atomics implement all atomic operations using the 'movli.l' and
! ;; 'movco.l' instructions that are availble on SH4A.  On multi-core hardware
  ;; configurations hardware atomics is the only safe mode.
  ;; However, it can also be safely used on single-core configurations.
  ;; Since these instructions operate on SImode memory only, QImode and HImode
--- 42,48 ----
  ;; Hardware Atomics (-matomic-model=hard-llcs; SH4A only)
  ;;
  ;; Hardware atomics implement all atomic operations using the 'movli.l' and
! ;; 'movco.l' instructions that are available on SH4A.  On multi-core hardware
  ;; configurations hardware atomics is the only safe mode.
  ;; However, it can also be safely used on single-core configurations.
  ;; Since these instructions operate on SImode memory only, QImode and HImode
***************
*** 196,202 ****
    [(plus "add") (minus "sub") (ior "or") (xor "xor") (and "and")])
  
  ;;------------------------------------------------------------------------------
! ;; comapre and swap
  
  ;; Only the hard_llcs SImode patterns can use an I08 for the comparison
  ;; or for the new swapped in value.
--- 196,202 ----
    [(plus "add") (minus "sub") (ior "or") (xor "xor") (and "and")])
  
  ;;------------------------------------------------------------------------------
! ;; compare and swap
  
  ;; Only the hard_llcs SImode patterns can use an I08 for the comparison
  ;; or for the new swapped in value.
diff -Nrcpad gcc-17-20260531/gcc/config/sol2-stubs.cc gcc-17-20260607/gcc/config/sol2-stubs.cc
*** gcc-17-20260531/gcc/config/sol2-stubs.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sol2-stubs.cc	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 23,29 ****
  #include "tm.h"
  #include "tree.h"
  
! /* Stub implemenation of TARGET_CXX_DECL_MANGLING_CONTEXT for non-C++
     frontends.  */
  tree
  solaris_cxx_decl_mangling_context (const_tree decl ATTRIBUTE_UNUSED)
--- 23,29 ----
  #include "tm.h"
  #include "tree.h"
  
! /* Stub implementation of TARGET_CXX_DECL_MANGLING_CONTEXT for non-C++
     frontends.  */
  tree
  solaris_cxx_decl_mangling_context (const_tree decl ATTRIBUTE_UNUSED)
diff -Nrcpad gcc-17-20260531/gcc/config/sol2.cc gcc-17-20260607/gcc/config/sol2.cc
*** gcc-17-20260531/gcc/config/sol2.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sol2.cc	Sun Jun  7 22:32:06 2026
*************** solaris_elf_asm_comdat_section (const ch
*** 234,240 ****
  
    /* Unlike GNU as, group signature symbols need to be defined explicitly
       for Sun as.  With a few exceptions, this is already the case.  To
!      identify the missing ones without changing the affected frontents,
       remember the signature symbols and emit those not marked
       TREE_SYMBOL_REFERENCED in solaris_file_end.  */
    if (!solaris_comdat_htab)
--- 234,240 ----
  
    /* Unlike GNU as, group signature symbols need to be defined explicitly
       for Sun as.  With a few exceptions, this is already the case.  To
!      identify the missing ones without changing the affected frontends,
       remember the signature symbols and emit those not marked
       TREE_SYMBOL_REFERENCED in solaris_file_end.  */
    if (!solaris_comdat_htab)
diff -Nrcpad gcc-17-20260531/gcc/config/sol2.h gcc-17-20260607/gcc/config/sol2.h
*** gcc-17-20260531/gcc/config/sol2.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sol2.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 114,120 ****
  	    builtin_define ("__STDC_VERSION__=201112L");\
  	    break;					\
  	  }						\
- 	builtin_define ("_XOPEN_SOURCE=600");		\
  	builtin_define ("_LARGEFILE_SOURCE=1");		\
  	builtin_define ("_LARGEFILE64_SOURCE=1");	\
  	builtin_define ("_FILE_OFFSET_BITS=64");	\
--- 114,119 ----
*************** along with GCC; see the file COPYING3.
*** 178,184 ****
     compilers use values-Xc.o with either -Xc or (since Studio 12.6)
     -pedantic to select strictly conformant ISO C behaviour, otherwise
     values-Xa.o.  Since -pedantic is a diagnostic option only in GCC, we
!    need to specifiy the -std=c* options and -std=iso9899:199409.  We
     traditionally include -ansi, which affects C and C++, and also -std=c++*
     for consistency.
  
--- 177,183 ----
     compilers use values-Xc.o with either -Xc or (since Studio 12.6)
     -pedantic to select strictly conformant ISO C behaviour, otherwise
     values-Xa.o.  Since -pedantic is a diagnostic option only in GCC, we
!    need to specify the -std=c* options and -std=iso9899:199409.  We
     traditionally include -ansi, which affects C and C++, and also -std=c++*
     for consistency.
  
*************** along with GCC; see the file COPYING3.
*** 189,195 ****
     values-xpg6.o to get C99 semantics.  Besides, most of the runtime
     libraries always require C99 semantics.
  
!    Since only one instance of _lib_version and __xpg[46] takes effekt (the
     first in ld.so.1's search path), we only link the values-*.o files into
     executable programs.  */
  #undef STARTFILE_ARCH_SPEC
--- 188,194 ----
     values-xpg6.o to get C99 semantics.  Besides, most of the runtime
     libraries always require C99 semantics.
  
!    Since only one instance of _lib_version and __xpg[46] takes effect (the
     first in ld.so.1's search path), we only link the values-*.o files into
     executable programs.  */
  #undef STARTFILE_ARCH_SPEC
diff -Nrcpad gcc-17-20260531/gcc/config/sparc/freebsd.h gcc-17-20260607/gcc/config/sparc/freebsd.h
*** gcc-17-20260531/gcc/config/sparc/freebsd.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sparc/freebsd.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 112,118 ****
  /* DWARF bits.  */
  
  /* Follow Irix 6 and not the Dwarf2 draft in using 64-bit offsets.
!    Obviously the Dwarf2 folks havn't tried to actually build systems
     with their spec.  On a 64-bit system, only 64-bit relocs become
     RELATIVE relocations.  */
  
--- 112,118 ----
  /* DWARF bits.  */
  
  /* Follow Irix 6 and not the Dwarf2 draft in using 64-bit offsets.
!    Obviously the Dwarf2 folks haven't tried to actually build systems
     with their spec.  On a 64-bit system, only 64-bit relocs become
     RELATIVE relocations.  */
  
diff -Nrcpad gcc-17-20260531/gcc/config/sparc/sparc.cc gcc-17-20260607/gcc/config/sparc/sparc.cc
*** gcc-17-20260531/gcc/config/sparc/sparc.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/sparc/sparc.cc	Sun Jun  7 22:32:06 2026
*************** emit_scc_insn (rtx operands[])
*** 3578,3584 ****
        return true;
      }
  
!   /* All the posibilities to use addx/subx based sequences has been
       exhausted, try for a 3 instruction sequence using v9 conditional
       moves.  */
    if (TARGET_V9 && gen_v9_scc (operands[0], code, x, y))
--- 3578,3584 ----
        return true;
      }
  
!   /* All the possibilities to use addx/subx based sequences has been
       exhausted, try for a 3 instruction sequence using v9 conditional
       moves.  */
    if (TARGET_V9 && gen_v9_scc (operands[0], code, x, y))
*************** sparc_emit_membar_for_model (enum memmod
*** 12763,12769 ****
  	 are followed by an implied StoreStore.  */
        implied |= StoreStore;
  
!       /* If we're not looking for a raw barrer (before+after), then atomic
  	 operations get the benefit of being both load and store.  */
        if (load_store == 3 && before_after == 1)
  	implied |= StoreLoad;
--- 12763,12769 ----
  	 are followed by an implied StoreStore.  */
        implied |= StoreStore;
  
!       /* If we're not looking for a raw barrier (before+after), then atomic
  	 operations get the benefit of being both load and store.  */
        if (load_store == 3 && before_after == 1)
  	implied |= StoreLoad;
*************** sparc_emit_membar_for_model (enum memmod
*** 12774,12780 ****
  	 are followed by an implied LoadLoad | LoadStore.  */
        implied |= LoadLoad | LoadStore;
  
!       /* If we're not looking for a raw barrer (before+after), then atomic
  	 operations get the benefit of being both load and store.  */
        if (load_store == 3 && before_after == 2)
  	implied |= StoreLoad | StoreStore;
--- 12774,12780 ----
  	 are followed by an implied LoadLoad | LoadStore.  */
        implied |= LoadLoad | LoadStore;
  
!       /* If we're not looking for a raw barrier (before+after), then atomic
  	 operations get the benefit of being both load and store.  */
        if (load_store == 3 && before_after == 2)
  	implied |= StoreLoad | StoreStore;
diff -Nrcpad gcc-17-20260531/gcc/config/vax/vax.cc gcc-17-20260607/gcc/config/vax/vax.cc
*** gcc-17-20260531/gcc/config/vax/vax.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/vax/vax.cc	Sun Jun  7 22:32:06 2026
*************** vax_expand_addsub_di_operands (rtx * ope
*** 2017,2023 ****
      gcc_unreachable ();
  
    /* If this is addition (thus operands are commutative) and if there is one
!      addend that duplicates the desination, we want that addend to be the
       first addend.  */
    if (code == PLUS
        && rtx_equal_p (operands[0], operands[2])
--- 2017,2023 ----
      gcc_unreachable ();
  
    /* If this is addition (thus operands are commutative) and if there is one
!      addend that duplicates the destination, we want that addend to be the
       first addend.  */
    if (code == PLUS
        && rtx_equal_p (operands[0], operands[2])
diff -Nrcpad gcc-17-20260531/gcc/config/vax/vax.h gcc-17-20260607/gcc/config/vax/vax.h
*** gcc-17-20260531/gcc/config/vax/vax.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/vax/vax.h	Sun Jun  7 22:32:06 2026
*************** VAX operand formatting codes:
*** 646,652 ****
  #define PRINT_OPERAND_ADDRESS(FILE, ADDR)  \
    print_operand_address (FILE, ADDR)
  
! /* This is a blatent lie.  However, it's good enough, since we don't
     actually have any code whatsoever for which this isn't overridden
     by the proper FDE definition.  */
  #define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, PC_REGNUM)
--- 646,652 ----
  #define PRINT_OPERAND_ADDRESS(FILE, ADDR)  \
    print_operand_address (FILE, ADDR)
  
! /* This is a blatant lie.  However, it's good enough, since we don't
     actually have any code whatsoever for which this isn't overridden
     by the proper FDE definition.  */
  #define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, PC_REGNUM)
diff -Nrcpad gcc-17-20260531/gcc/config/visium/visium.h gcc-17-20260607/gcc/config/visium/visium.h
*** gcc-17-20260531/gcc/config/visium/visium.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/visium/visium.h	Sun Jun  7 22:32:06 2026
*************** do									\
*** 1411,1417 ****
     If this macro is not defined, nothing special is output at the end
     of a jump table.
  
!    Here we output a word of zero so that jump-tables can be seperated
     in reverse assembly. */
  #define ASM_OUTPUT_CASE_END(STREAM, NUM, TABLE) \
    asm_fprintf (STREAM, "\t.long   0\n")
--- 1411,1417 ----
     If this macro is not defined, nothing special is output at the end
     of a jump table.
  
!    Here we output a word of zero so that jump-tables can be separated
     in reverse assembly. */
  #define ASM_OUTPUT_CASE_END(STREAM, NUM, TABLE) \
    asm_fprintf (STREAM, "\t.long   0\n")
*************** do									\
*** 1501,1514 ****
  #undef CASE_VECTOR_PC_RELATIVE
  
  /* This says how to output assembler code to declare an
!    unitialised external linkage data object. */
  #define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED)      \
  ( fputs ("\n\t.comm  ", (STREAM)),                        \
    assemble_name ((STREAM), (NAME)),                         \
    fprintf ((STREAM), "," HOST_WIDE_INT_PRINT_UNSIGNED"\n", ROUNDED))
  
  /* This says how to output assembler code to declare an
!    unitialised internal linkage data object. */
  #define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED)     \
  ( fputs ("\n\t.lcomm ", (STREAM)),                      \
    assemble_name ((STREAM), (NAME)),                     \
--- 1501,1514 ----
  #undef CASE_VECTOR_PC_RELATIVE
  
  /* This says how to output assembler code to declare an
!    uninitialised external linkage data object. */
  #define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED)      \
  ( fputs ("\n\t.comm  ", (STREAM)),                        \
    assemble_name ((STREAM), (NAME)),                         \
    fprintf ((STREAM), "," HOST_WIDE_INT_PRINT_UNSIGNED"\n", ROUNDED))
  
  /* This says how to output assembler code to declare an
!    uninitialised internal linkage data object. */
  #define ASM_OUTPUT_LOCAL(STREAM, NAME, SIZE, ROUNDED)     \
  ( fputs ("\n\t.lcomm ", (STREAM)),                      \
    assemble_name ((STREAM), (NAME)),                     \
diff -Nrcpad gcc-17-20260531/gcc/config/vms/vms-c.cc gcc-17-20260607/gcc/config/vms/vms-c.cc
*** gcc-17-20260531/gcc/config/vms/vms-c.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/vms/vms-c.cc	Sun Jun  7 22:32:06 2026
*************** enum extern_model_kind
*** 170,176 ****
       Only one initialized definition (case 3) is allows, but multiple
       uninitialize definition (case 2) are allowed.
       For case 2, this creates both a section named NAME and a global symbol.
!      For case 3, this creates a conditional global symbol defenition and a
       conditional section definition.
       This is the traditional UNIX C behavior.  */
    extern_model_relaxed_refdef,
--- 170,176 ----
       Only one initialized definition (case 3) is allows, but multiple
       uninitialize definition (case 2) are allowed.
       For case 2, this creates both a section named NAME and a global symbol.
!      For case 3, this creates a conditional global symbol definition and a
       conditional section definition.
       This is the traditional UNIX C behavior.  */
    extern_model_relaxed_refdef,
*************** vms_pragma_extern_model (cpp_reader *pfi
*** 243,249 ****
  static void
  vms_pragma_message (cpp_reader *pfile ATTRIBUTE_UNUSED)
  {
!   /* Completly ignored.  */
  #if 0
    pedwarn (input_location, OPT_Wpragmas,
             "vms '#pragma __message' is ignored");
--- 243,249 ----
  static void
  vms_pragma_message (cpp_reader *pfile ATTRIBUTE_UNUSED)
  {
!   /* Completely ignored.  */
  #if 0
    pedwarn (input_location, OPT_Wpragmas,
             "vms '#pragma __message' is ignored");
*************** vms_c_register_includes (const char *sys
*** 417,423 ****
    static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
    struct cpp_dir *dir;
  
!   /* Add on standard include pathes.  */
    if (!stdinc)
      return;
  
--- 417,423 ----
    static const char dir_separator_str[] = { DIR_SEPARATOR, 0 };
    struct cpp_dir *dir;
  
!   /* Add on standard include paths.  */
    if (!stdinc)
      return;
  
diff -Nrcpad gcc-17-20260531/gcc/config/vms/vms.cc gcc-17-20260607/gcc/config/vms/vms.cc
*** gcc-17-20260531/gcc/config/vms/vms.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/vms/vms.cc	Sun Jun  7 22:32:06 2026
*************** static const struct vms_crtl_name vms_cr
*** 97,103 ****
  #include "vms-crtlmap.h"
    };
  
! /* Number of entires in the above array.  */
  
  #define NBR_CRTL_NAMES (ARRAY_SIZE (vms_crtl_names))
  
--- 97,103 ----
  #include "vms-crtlmap.h"
    };
  
! /* Number of entries in the above array.  */
  
  #define NBR_CRTL_NAMES (ARRAY_SIZE (vms_crtl_names))
  
*************** vms_function_section (tree decl ATTRIBUT
*** 290,296 ****
    return NULL;
  }
  
! /* Additionnal VMS specific code for start_function.  */
  
  /* Must be kept in sync with libgcc/config/vms/vms-ucrt0.c  */
  #define VMS_MAIN_FLAGS_SYMBOL "__gcc_main_flags"
--- 290,296 ----
    return NULL;
  }
  
! /* Additional VMS specific code for start_function.  */
  
  /* Must be kept in sync with libgcc/config/vms/vms-ucrt0.c  */
  #define VMS_MAIN_FLAGS_SYMBOL "__gcc_main_flags"
diff -Nrcpad gcc-17-20260531/gcc/config/vx-common.h gcc-17-20260607/gcc/config/vx-common.h
*** gcc-17-20260531/gcc/config/vx-common.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/vx-common.h	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 73,79 ****
  
  /* ---------------------- Debug and unwind info formats ------------------  */
  
! /* Dwarf2 unwind info is supported, unless overriden by a request for a target
     specific format.  Always #define DWARF2_UNWIND_INFO to prevent defaults.h
     from picking a possibly different value.
  
--- 73,79 ----
  
  /* ---------------------- Debug and unwind info formats ------------------  */
  
! /* Dwarf2 unwind info is supported, unless overridden by a request for a target
     specific format.  Always #define DWARF2_UNWIND_INFO to prevent defaults.h
     from picking a possibly different value.
  
diff -Nrcpad gcc-17-20260531/gcc/config/vxworks.h gcc-17-20260607/gcc/config/vxworks.h
*** gcc-17-20260531/gcc/config/vxworks.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/vxworks.h	Sun Jun  7 22:32:06 2026
*************** extern void vxworks_asm_out_destructor (
*** 377,383 ****
     the base VxWorks environment doesn't come with a GNU toolchain.
  
     From VxWorks 7 on, the actual personality might vary for different instances
!    for a given architecture.  The TOOL/TOOL_FAMILY definitions are infered at
     run-time from vxworks-predef.h, which allows accommodating such variations
     with a single toolchain.  */
  
--- 377,383 ----
     the base VxWorks environment doesn't come with a GNU toolchain.
  
     From VxWorks 7 on, the actual personality might vary for different instances
!    for a given architecture.  The TOOL/TOOL_FAMILY definitions are inferred at
     run-time from vxworks-predef.h, which allows accommodating such variations
     with a single toolchain.  */
  
diff -Nrcpad gcc-17-20260531/gcc/config/xtensa/xtensa.cc gcc-17-20260607/gcc/config/xtensa/xtensa.cc
*** gcc-17-20260531/gcc/config/xtensa/xtensa.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/config/xtensa/xtensa.cc	Sun Jun  7 22:32:06 2026
*************** xtensa_legitimize_address (rtx x,
*** 2374,2380 ****
  
    /* The upper limit of the ADDMI instruction's addition is allowed to be
       widened by the delta amount calculated above, and the excess is later
!      renormalized to the displacement of the load/store instrution.  */
    offset2 = offset & ~0xff, offset = 0;
    if (! IN_RANGE (offset2, -32768, 32512 + delta))
      {
--- 2374,2380 ----
  
    /* The upper limit of the ADDMI instruction's addition is allowed to be
       widened by the delta amount calculated above, and the excess is later
!      renormalized to the displacement of the load/store instruction.  */
    offset2 = offset & ~0xff, offset = 0;
    if (! IN_RANGE (offset2, -32768, 32512 + delta))
      {
diff -Nrcpad gcc-17-20260531/gcc/configure gcc-17-20260607/gcc/configure
*** gcc-17-20260531/gcc/configure	Sun May 31 22:32:17 2026
--- gcc-17-20260607/gcc/configure	Sun Jun  7 22:32:18 2026
*************** stk_clash_min=12
*** 7910,7916 ****
  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.
  
  # Check whether --with-stack-clash-protection-guard-size was given.
--- 7910,7916 ----
  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.
  
  # Check whether --with-stack-clash-protection-guard-size was given.
*************** elif test x$gcc_cv_ld != x; then
*** 28547,28553 ****
        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'
--- 28547,28553 ----
        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'
*************** if test -f liblto_plugin.la; then
*** 28623,28628 ****
--- 28623,28630 ----
        gcc_cv_lto_plugin=2
      elif test "$ld_is_mold" = yes; then
        gcc_cv_lto_plugin=2
+     elif test "$ld_is_wild" = yes; then
+       gcc_cv_lto_plugin=2
      # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
      elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
        gcc_cv_lto_plugin=1
diff -Nrcpad gcc-17-20260531/gcc/configure.ac gcc-17-20260607/gcc/configure.ac
*** gcc-17-20260531/gcc/configure.ac	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/configure.ac	Sun Jun  7 22:32:06 2026
*************** changequote([,])dnl
*** 4479,4484 ****
--- 4479,4486 ----
        gcc_cv_lto_plugin=2
      elif test "$ld_is_mold" = yes; then
        gcc_cv_lto_plugin=2
+     elif test "$ld_is_wild" = yes; then
+       gcc_cv_lto_plugin=2
      # Allow -fuse-linker-plugin to enable plugin support in GNU gold 2.20.
      elif test "$ld_is_gold" = yes -a "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -eq 20; then
        gcc_cv_lto_plugin=1
diff -Nrcpad gcc-17-20260531/gcc/cp/ChangeLog gcc-17-20260607/gcc/cp/ChangeLog
*** gcc-17-20260531/gcc/cp/ChangeLog	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/ChangeLog	Sun Jun  7 22:32:06 2026
***************
*** 1,3 ****
--- 1,83 ----
+ 2026-06-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/125378
+ 	* tree.cc (build_min_non_dep_op_overload): Handle comparison
+ 	operator expressions rewritten from a <=> that contain an
+ 	integer promotion.
+ 
+ 2026-06-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/125490
+ 	* parser.cc (cp_parser_constraint_expression): Pass
+ 	no_toplevel_fold_p=false instead of =true to
+ 	cp_parser_binary_expression.
+ 
+ 2026-06-03  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/107124
+ 	* cp-tree.h: Adjust comments to mention
+ 	maybe_build_nontype_implicit_conv instead of
+ 	maybe_convert_nontype_argument.
+ 	* pt.cc (maybe_convert_nontype_argument): Rename to...
+ 	(maybe_build_nontype_implicit_conv): ...this.
+ 	(convert_nontype_argument_maybe_dependent): New, factored
+ 	out of...
+ 	(convert_template_argument): ...here.
+ 	(unify) <case TEMPLATE_PARM_INDEX>: Call
+ 	convert_nontype_argument_maybe_dependent and return unify_invalid
+ 	if it failed.  Don't call strip_typedefs_expr.
+ 
+ 2026-06-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124794
+ 	* parser.cc (cp_parser_splice_specifier): Use TYPE_BINFO (scope)
+ 	for not-derived case.
+ 	* search.cc (build_baselink): Assert that binfos aren't null.
+ 
+ 2026-06-03  feedable  <feedabl3@gmail.com>
+ 
+ 	PR c++/124794
+ 	PR c++/125069
+ 	* parser.cc (cp_parser_splice_specifier): Do not strip BASELINKs.
+ 	(cp_parser_splice_expression): Add parsing for member function
+ 	template specializations without the "template" keyword.
+ 	* pt.cc (tsubst_splice_expr): Handle TEMPLATE_ID_EXPR where the
+ 	template part is a SPLICE_EXPR.
+ 	(tsubst_expr): Defer to tsubst_splice_expr when the template part of
+ 	TEMPLATE_ID_EXPR is a SPLICE_EXPR.
+ 	* reflect.cc (check_splice_expr): Add handling for BASELINKs.
+ 
+ 2026-06-02  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c/121911
+ 	* decl.cc (cxx_init_decl_processing ): Declare stack protection
+ 	guard after calling c_common_nodes_and_builtins.
+ 
+ 2026-06-02  Peter Damianov  <peter0x44@disroot.org>
+ 
+ 	* class.cc (dump_vtable_entry): New function.
+ 	(dump_array): Use it.
+ 	(dump_class_hierarchy_r): Drop redundant literal 0x from
+ 	HOST_WIDE_INT_PRINT_HEX formatting.
+ 	(dump_vtable): Likewise.
+ 
+ 2026-06-01  Joe Natter  <johannes.natter@outlook.at>
+ 
+ 	PR c++/125422
+ 	* init.cc (build_new_1): Avoid building a null-check
+ 	COND_EXPR when rval == data_addr.
+ 
+ 2026-06-01  yxj-github-437  <2457369732@qq.com>
+ 
+ 	* module.cc (module_state_config::get_dialect): Add reflection
+ 	dialect.
+ 
+ 2026-06-01  Eczbek  <eczbek.void@gmail.com>
+ 
+ 	PR c++/125317
+ 	* parser.cc (cp_parser_requirement_body): Set
+ 	parser->greater_than_is_operator_p.
+ 
  2026-05-30  Jakub Jelinek  <jakub@redhat.com>
  
  	PR c++/125123
diff -Nrcpad gcc-17-20260531/gcc/cp/class.cc gcc-17-20260607/gcc/cp/class.cc
*** gcc-17-20260531/gcc/cp/class.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/class.cc	Sun Jun  7 22:32:06 2026
*************** static int maybe_indent_hierarchy (FILE
*** 167,172 ****
--- 167,173 ----
  static tree dump_class_hierarchy_r (FILE *, dump_flags_t, tree, tree, int);
  static void dump_class_hierarchy (tree);
  static void dump_class_hierarchy_1 (FILE *, dump_flags_t, tree);
+ static void dump_vtable_entry (FILE *, tree);
  static void dump_array (FILE *, tree);
  static void dump_vtable (tree, tree, tree);
  static void dump_vtt (tree, tree);
*************** dump_class_hierarchy_r (FILE *stream,
*** 9762,9768 ****
    tree base_binfo;
    int i;
  
!   fprintf (stream, "%s (0x" HOST_WIDE_INT_PRINT_HEX ") ",
  	   type_as_string (BINFO_TYPE (binfo), TFF_PLAIN_IDENTIFIER),
  	   (HOST_WIDE_INT) (uintptr_t) binfo);
    if (binfo != igo)
--- 9763,9769 ----
    tree base_binfo;
    int i;
  
!   fprintf (stream, "%s (" HOST_WIDE_INT_PRINT_HEX ") ",
  	   type_as_string (BINFO_TYPE (binfo), TFF_PLAIN_IDENTIFIER),
  	   (HOST_WIDE_INT) (uintptr_t) binfo);
    if (binfo != igo)
*************** dump_class_hierarchy_r (FILE *stream,
*** 9785,9791 ****
    if (BINFO_PRIMARY_P (binfo))
      {
        indented = maybe_indent_hierarchy (stream, indent + 3, indented);
!       fprintf (stream, " primary-for %s (0x" HOST_WIDE_INT_PRINT_HEX ")",
  	       type_as_string (BINFO_TYPE (BINFO_INHERITANCE_CHAIN (binfo)),
  			       TFF_PLAIN_IDENTIFIER),
  	       (HOST_WIDE_INT) (uintptr_t) BINFO_INHERITANCE_CHAIN (binfo));
--- 9786,9792 ----
    if (BINFO_PRIMARY_P (binfo))
      {
        indented = maybe_indent_hierarchy (stream, indent + 3, indented);
!       fprintf (stream, " primary-for %s (" HOST_WIDE_INT_PRINT_HEX ")",
  	       type_as_string (BINFO_TYPE (BINFO_INHERITANCE_CHAIN (binfo)),
  			       TFF_PLAIN_IDENTIFIER),
  	       (HOST_WIDE_INT) (uintptr_t) BINFO_INHERITANCE_CHAIN (binfo));
*************** dump_class_hierarchy (tree t)
*** 9878,9883 ****
--- 9879,9901 ----
      }
  }
  
+ /* Dump VALUE, a vtable entry, to STREAM.  Print integer offsets as signed
+    values.  */
+ 
+ static void
+ dump_vtable_entry (FILE *stream, tree value)
+ {
+   /* Vtable offset entries are stored in the pointer-sized vtable entry
+      type, but should be displayed as signed ptrdiff_t values.  */
+   tree cst = value;
+   STRIP_NOPS (cst);
+ 
+   if (TREE_CODE (cst) == INTEGER_CST)
+     print_decs (wi::to_wide (cst), stream);
+   else
+     fprintf (stream, "%s", expr_as_string (value, TFF_PLAIN_IDENTIFIER));
+ }
+ 
  static void
  dump_array (FILE * stream, tree decl)
  {
*************** dump_array (FILE * stream, tree decl)
*** 9896,9903 ****
  
    FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (DECL_INITIAL (decl)),
  			      ix, value)
!     fprintf (stream, "%-4ld  %s\n", (long)(ix * elt),
! 	     expr_as_string (value, TFF_PLAIN_IDENTIFIER));
  }
  
  static void
--- 9914,9924 ----
  
    FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (DECL_INITIAL (decl)),
  			      ix, value)
!     {
!       fprintf (stream, "%-4ld  ", (long)(ix * elt));
!       dump_vtable_entry (stream, value);
!       fprintf (stream, "\n");
!     }
  }
  
  static void
*************** dump_vtable (tree t, tree binfo, tree vt
*** 9919,9925 ****
        if (ctor_vtbl_p)
  	{
  	  if (!BINFO_VIRTUAL_P (binfo))
! 	    fprintf (stream, " (0x" HOST_WIDE_INT_PRINT_HEX " instance)",
  		     (HOST_WIDE_INT) (uintptr_t) binfo);
  	  fprintf (stream, " in %s", type_as_string (t, TFF_PLAIN_IDENTIFIER));
  	}
--- 9940,9946 ----
        if (ctor_vtbl_p)
  	{
  	  if (!BINFO_VIRTUAL_P (binfo))
! 	    fprintf (stream, " (" HOST_WIDE_INT_PRINT_HEX " instance)",
  		     (HOST_WIDE_INT) (uintptr_t) binfo);
  	  fprintf (stream, " in %s", type_as_string (t, TFF_PLAIN_IDENTIFIER));
  	}
diff -Nrcpad gcc-17-20260531/gcc/cp/constexpr.cc gcc-17-20260607/gcc/cp/constexpr.cc
*** gcc-17-20260531/gcc/cp/constexpr.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/constexpr.cc	Sun Jun  7 22:32:06 2026
*************** cxx_eval_internal_function (const conste
*** 3245,3250 ****
--- 3245,3276 ----
      case IFN_DEFERRED_INIT:
        return build_clobber (TREE_TYPE (t), CLOBBER_OBJECT_BEGIN);
  
+     case IFN_BSWAP:
+     case IFN_BITREVERSE:
+       {
+ 	tree arg = cxx_eval_constant_expression (ctx, CALL_EXPR_ARG (t, 0),
+ 						 vc_prvalue, non_constant_p,
+ 						 overflow_p, jump_target);
+ 	if (*jump_target)
+ 	  return NULL_TREE;
+ 	if (*non_constant_p)
+ 	  return t;
+ 	location_t loc = cp_expr_loc_or_input_loc (t);
+ 	if (TREE_CODE (arg) != INTEGER_CST
+ 	    || !INTEGRAL_TYPE_P (TREE_TYPE (arg))
+ 	    || !TYPE_UNSIGNED (TREE_TYPE (arg))
+ 	    || (CALL_EXPR_IFN (t) == IFN_BSWAP
+ 		&& (TYPE_PRECISION (TREE_TYPE (arg)) % 8) != 0))
+ 	  {
+ 	    if (!ctx->quiet)
+ 	      error_at (loc, "call to internal function %qE", t);
+ 	    *non_constant_p = true;
+ 	    return t;
+ 	  }
+ 	return fold_build_builtin_bswapg_bitreverseg (loc, CALL_EXPR_IFN (t),
+ 						      arg);
+       }
+ 
      case IFN_VEC_CONVERT:
        {
  	tree arg = cxx_eval_constant_expression (ctx, CALL_EXPR_ARG (t, 0),
*************** potential_constant_expression_1 (tree t,
*** 12026,12031 ****
--- 12052,12059 ----
  		case IFN_MUL_OVERFLOW:
  		case IFN_LAUNDER:
  		case IFN_VEC_CONVERT:
+ 		case IFN_BSWAP:
+ 		case IFN_BITREVERSE:
  		  bail = false;
  		  break;
  
diff -Nrcpad gcc-17-20260531/gcc/cp/cp-gimplify.cc gcc-17-20260607/gcc/cp/cp-gimplify.cc
*** gcc-17-20260531/gcc/cp/cp-gimplify.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/cp-gimplify.cc	Sun Jun  7 22:32:06 2026
*************** along with GCC; see the file COPYING3.
*** 44,49 ****
--- 44,50 ----
  #include "opts.h"
  #include "gcc-urlifier.h"
  #include "contracts.h" // build_contract_check ()
+ #include "builtins.h"
  
  /* Keep track of forward references to immediate-escalating functions in
     case they become consteval.  This vector contains ADDR_EXPRs and
*************** cp_gimplify_expr (tree *expr_p, gimple_s
*** 880,886 ****
  	      = build1 (NOP_EXPR, fnptrtype, CALL_EXPR_FN (*expr_p));
  	}
        if (!CALL_EXPR_FN (*expr_p))
! 	/* Internal function call.  */;
        else if (CALL_EXPR_REVERSE_ARGS (*expr_p))
  	{
  	  /* This is a call to a (compound) assignment operator that used
--- 881,909 ----
  	      = build1 (NOP_EXPR, fnptrtype, CALL_EXPR_FN (*expr_p));
  	}
        if (!CALL_EXPR_FN (*expr_p))
! 	/* Internal function call.  */
! 	switch (CALL_EXPR_IFN (*expr_p))
! 	  {
! 	  case IFN_BSWAP:
! 	  case IFN_BITREVERSE:
! 	    if (ret == GS_OK)
! 	      {
! 		location_t loc = EXPR_LOCATION (*expr_p);
! 		internal_fn ifn = CALL_EXPR_IFN (*expr_p);
! 		tree arg = CALL_EXPR_ARG (*expr_p, 0);
! 		tree r = fold_build_builtin_bswapg_bitreverseg (loc, ifn,
! 								arg);
! 		if (TREE_CODE (r) == CALL_EXPR
! 		    && !CALL_EXPR_FN (r)
! 		    && CALL_EXPR_IFN (r) == ifn)
! 		  break;
! 		*expr_p = r;
! 		return ret;
! 	      }
! 	    break;
! 	  default:
! 	    break;
! 	  }
        else if (CALL_EXPR_REVERSE_ARGS (*expr_p))
  	{
  	  /* This is a call to a (compound) assignment operator that used
diff -Nrcpad gcc-17-20260531/gcc/cp/cp-tree.h gcc-17-20260607/gcc/cp/cp-tree.h
*** gcc-17-20260531/gcc/cp/cp-tree.h	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/cp-tree.h	Sun Jun  7 22:32:06 2026
*************** get_vec_init_expr (tree t)
*** 5138,5144 ****
    (TREE_LANG_FLAG_0 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
  
  /* True if NODE represents a dependent conversion of a non-type template
!    argument.  Set by maybe_convert_nontype_argument.  */
  #define IMPLICIT_CONV_EXPR_NONTYPE_ARG(NODE) \
    (TREE_LANG_FLAG_1 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
  
--- 5138,5144 ----
    (TREE_LANG_FLAG_0 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
  
  /* True if NODE represents a dependent conversion of a non-type template
!    argument.  Set by maybe_build_nontype_implicit_conv.  */
  #define IMPLICIT_CONV_EXPR_NONTYPE_ARG(NODE) \
    (TREE_LANG_FLAG_1 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
  
*************** get_vec_init_expr (tree t)
*** 5148,5154 ****
    (TREE_LANG_FLAG_2 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
  
  /* True if NODE represents a conversion forced to be represented in
!    maybe_convert_nontype_argument, i.e. for an alias template.  */
  #define IMPLICIT_CONV_EXPR_FORCED(NODE) \
    (TREE_LANG_FLAG_3 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
  
--- 5148,5154 ----
    (TREE_LANG_FLAG_2 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
  
  /* True if NODE represents a conversion forced to be represented in
!    maybe_build_nontype_implicit_conv, i.e. for an alias template.  */
  #define IMPLICIT_CONV_EXPR_FORCED(NODE) \
    (TREE_LANG_FLAG_3 (IMPLICIT_CONV_EXPR_CHECK (NODE)))
  
*************** extern tree build_x_vec_perm_expr
*** 9050,9055 ****
--- 9050,9058 ----
  extern tree build_x_shufflevector               (location_t,
  						 vec<tree, va_gc> *,
  						 tsubst_flags_t);
+ extern tree build_x_bswapg_bitreverseg		(location_t, internal_fn,
+ 						 vec<tree, va_gc> *,
+ 						 tsubst_flags_t);
  #define cxx_sizeof(T)  cxx_sizeof_or_alignof_type (input_location, T, SIZEOF_EXPR, false, true)
  extern tree build_simple_component_ref		(tree, tree);
  extern tree build_ptrmemfunc_access_expr	(tree, tree);
diff -Nrcpad gcc-17-20260531/gcc/cp/decl.cc gcc-17-20260607/gcc/cp/decl.cc
*** gcc-17-20260531/gcc/cp/decl.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/decl.cc	Sun Jun  7 22:32:06 2026
*************** cxx_init_decl_processing (void)
*** 5588,5593 ****
--- 5588,5598 ----
  
    c_common_nodes_and_builtins ();
  
+   /* Call the target stack_protect_guard hook if the stack protection
+      guard is declared as a global symbol.  */
+   if (targetm.stack_protect_guard_symbol_p ())
+     pushdecl (targetm.stack_protect_guard ());
+ 
    tree bool_ftype = build_function_type_list (boolean_type_node, NULL_TREE);
    tree decl
      = add_builtin_function ("__builtin_is_constant_evaluated",
diff -Nrcpad gcc-17-20260531/gcc/cp/init.cc gcc-17-20260607/gcc/cp/init.cc
*** gcc-17-20260531/gcc/cp/init.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/init.cc	Sun Jun  7 22:32:06 2026
*************** build_new_1 (vec<tree, va_gc> **placemen
*** 3970,3975 ****
--- 3970,3981 ----
      rval = TARGET_EXPR_INITIAL (alloc_expr);
    else
      {
+       /* Skip the null-check when rval == data_addr: the resulting conditional
+ 	 would be "alloc_node != nullptr ? alloc_node : alloc_node", triggering
+ 	 -Wduplicated-branches (PR125422).  */
+       if (rval == data_addr)
+ 	check_new = 0;
+ 
        if (check_new)
  	{
  	  tree ifexp = cp_build_binary_op (input_location,
diff -Nrcpad gcc-17-20260531/gcc/cp/module.cc gcc-17-20260607/gcc/cp/module.cc
*** gcc-17-20260531/gcc/cp/module.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/module.cc	Sun Jun  7 22:32:06 2026
*************** public:
*** 2645,2651 ****
        /* If not ERROR_MARK, a rewrite candidate for this operator.  */
        tree_code rewrite = ERROR_MARK;
        /* Argument list for the call.  */
!       vec<tree, va_gc>* args = make_tree_vector ();
      };
      vec<dep_adl_info> dep_adl_entity_list;
  
--- 2645,2651 ----
        /* If not ERROR_MARK, a rewrite candidate for this operator.  */
        tree_code rewrite = ERROR_MARK;
        /* Argument list for the call.  */
!       vec<tree, va_gc>* args = nullptr;
      };
      vec<dep_adl_info> dep_adl_entity_list;
  
*************** void
*** 15254,15267 ****
  depset::hash::add_dependent_adl_entities (tree expr)
  {
    gcc_checking_assert (!is_key_order ());
    if (TREE_CODE (current->get_entity ()) != TEMPLATE_DECL)
      return;
  
    dep_adl_info info;
    switch (TREE_CODE (expr))
      {
      case CALL_EXPR:
!       if (!KOENIG_LOOKUP_P (expr))
  	return;
        info.name = CALL_EXPR_FN (expr);
        if (!info.name)
--- 15254,15275 ----
  depset::hash::add_dependent_adl_entities (tree expr)
  {
    gcc_checking_assert (!is_key_order ());
+ 
+   /* This is not needed for header units where everything is
+      visible to name lookup, nothing is discarded.  */
+   if (header_module_p ())
+     return;
+ 
    if (TREE_CODE (current->get_entity ()) != TEMPLATE_DECL)
      return;
  
    dep_adl_info info;
+   auto_vec<tree, 3> args;
    switch (TREE_CODE (expr))
      {
      case CALL_EXPR:
!       if (!KOENIG_LOOKUP_P (expr)
! 	  || !type_dependent_expression_p_push (expr))
  	return;
        info.name = CALL_EXPR_FN (expr);
        if (!info.name)
*************** depset::hash::add_dependent_adl_entities
*** 15273,15279 ****
        if (!identifier_p (info.name))
  	info.name = OVL_NAME (info.name);
        for (int ix = 0; ix < call_expr_nargs (expr); ix++)
! 	vec_safe_push (info.args, CALL_EXPR_ARG (expr, ix));
        break;
  
      case LE_EXPR:
--- 15281,15287 ----
        if (!identifier_p (info.name))
  	info.name = OVL_NAME (info.name);
        for (int ix = 0; ix < call_expr_nargs (expr); ix++)
! 	args.safe_push (CALL_EXPR_ARG (expr, ix));
        break;
  
      case LE_EXPR:
*************** depset::hash::add_dependent_adl_entities
*** 15310,15319 ****
      case TRUTH_ANDIF_EXPR:
      case TRUTH_ORIF_EXPR:
      overloadable_expr:
        info.name = ovl_op_identifier (TREE_CODE (expr));
        gcc_checking_assert (tree_operand_length (expr) == 2);
!       vec_safe_push (info.args, TREE_OPERAND (expr, 0));
!       vec_safe_push (info.args, TREE_OPERAND (expr, 1));
        break;
  
      default:
--- 15318,15329 ----
      case TRUTH_ANDIF_EXPR:
      case TRUTH_ORIF_EXPR:
      overloadable_expr:
+       if (!type_dependent_expression_p_push (expr))
+ 	return;
        info.name = ovl_op_identifier (TREE_CODE (expr));
        gcc_checking_assert (tree_operand_length (expr) == 2);
!       args.safe_push (TREE_OPERAND (expr, 0));
!       args.safe_push (TREE_OPERAND (expr, 1));
        break;
  
      default:
*************** depset::hash::add_dependent_adl_entities
*** 15322,15332 ****
  
    /* If all arguments are type-dependent we don't need to do
       anything further, we won't find new entities.  */
!   processing_template_decl_sentinel ptds;
!   ++processing_template_decl;
!   if (!any_type_dependent_arguments_p (info.args))
      return;
  
    /* We need to defer name lookup until after walking, otherwise
       we get confused by stray TREE_VISITEDs.  */
    dep_adl_entity_list.safe_push (info);
--- 15332,15352 ----
  
    /* If all arguments are type-dependent we don't need to do
       anything further, we won't find new entities.  */
!   bool all_type_dependent = true;
!   for (tree arg : args)
!     if (!type_dependent_expression_p_push (arg))
!       {
! 	all_type_dependent = false;
! 	break;
!       }
!   if (all_type_dependent)
      return;
  
+   gcc_checking_assert (!info.args);
+   info.args = make_tree_vector ();
+   for (tree arg : args)
+     vec_safe_push (info.args, arg);
+ 
    /* We need to defer name lookup until after walking, otherwise
       we get confused by stray TREE_VISITEDs.  */
    dep_adl_entity_list.safe_push (info);
*************** module_state_config::get_dialect ()
*** 17247,17252 ****
--- 17267,17273 ----
  		       ? "/coroutines" : ""),
  		      flag_module_implicit_inline ? "/implicit-inline" : "",
  		      flag_contracts ? "/contracts" : "",
+ 		      flag_reflection ? "/reflection" : "",
  		      NULL);
  
    return dialect;
diff -Nrcpad gcc-17-20260531/gcc/cp/name-lookup.cc gcc-17-20260607/gcc/cp/name-lookup.cc
*** gcc-17-20260531/gcc/cp/name-lookup.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/name-lookup.cc	Sun Jun  7 22:32:06 2026
*************** name_lookup::preserve_state ()
*** 580,586 ****
  	    }
  	}
  
!       tentative = previous->tentative;
  
        /* Unmark the outer partial lookup.  */
        if (previous->deduping)
--- 580,587 ----
  	    }
  	}
  
!       /* We deliberately avoid instantiation during tentative ADL.  */
!       gcc_checking_assert (!previous->tentative);
  
        /* Unmark the outer partial lookup.  */
        if (previous->deduping)
diff -Nrcpad gcc-17-20260531/gcc/cp/parser.cc gcc-17-20260607/gcc/cp/parser.cc
*** gcc-17-20260531/gcc/cp/parser.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/parser.cc	Sun Jun  7 22:32:06 2026
*************** cp_parser_splice_specifier (cp_parser *p
*** 6179,6184 ****
--- 6179,6186 ----
    /* Get the reflected operand.  */
    expr = splice (expr);
  
+   tree expr_real = maybe_get_first_fn (expr);
+ 
    /* If the next token is a <, it could be a splice-specialization-specifier.
       But we need to handle "[:r:] < 42" where the < doesn't start a template
       argument list.  [temp.names]/3: A < is interpreted as the delimiter of
*************** cp_parser_splice_specifier (cp_parser *p
*** 6190,6219 ****
        /* As a courtesy to the user, if there is a < after a template
  	 name, parse the construct as an s-s-s and warn about the missing
  	 'template'; it can't be anything else.  */
!       && (template_p
! 	  || typename_p
! 	  || TREE_CODE (OVL_FIRST (expr)) == TEMPLATE_DECL))
      {
        /* For member access splice-specialization-specifier, try to wrap
  	 non-dependent splice for function template into a BASELINK so
  	 that cp_parser_template_id can handle it.  */
        if (object_type
! 	  && DECL_FUNCTION_TEMPLATE_P (OVL_FIRST (expr))
  	  && !dependent_type_p (object_type))
  	{
! 	  tree scope = DECL_CONTEXT (OVL_FIRST (expr));
  	  if (scope && CLASS_TYPE_P (scope))
  	    {
  	      tree access_path = lookup_base (object_type, scope, ba_unique,
  					      NULL, tf_warning_or_error);
  	      if (access_path == error_mark_node)
  		expr = error_mark_node;
  	      else
  		expr
! 		  = build_baselink (access_path, TYPE_BINFO (object_type),
  				    expr,
! 				    IDENTIFIER_CONV_OP_P (OVL_NAME (expr))
! 				    ? TREE_TYPE (OVL_NAME (expr)) : NULL_TREE);
  	    }
  	}
        /* Let cp_parser_template_id parse the template arguments.  */
--- 6192,6229 ----
        /* As a courtesy to the user, if there is a < after a template
  	 name, parse the construct as an s-s-s and warn about the missing
  	 'template'; it can't be anything else.  */
!       && (template_p || typename_p || TREE_CODE (expr_real) == TEMPLATE_DECL))
      {
        /* For member access splice-specialization-specifier, try to wrap
  	 non-dependent splice for function template into a BASELINK so
  	 that cp_parser_template_id can handle it.  */
        if (object_type
! 	  && reflection_function_template_p (expr_real)
  	  && !dependent_type_p (object_type))
  	{
! 	  tree scope = DECL_CONTEXT (expr_real);
  	  if (scope && CLASS_TYPE_P (scope))
  	    {
+ 	      /* Use the same BASELINK_BINFO and BASELINK_ACCESS_BINFO since
+ 		 we don't do access checking for a splice.  */
  	      tree access_path = lookup_base (object_type, scope, ba_unique,
  					      NULL, tf_warning_or_error);
+ 	      if (!access_path)
+ 		/* Not a base, access directly for the error.  */
+ 		access_path = TYPE_BINFO (scope);
  	      if (access_path == error_mark_node)
  		expr = error_mark_node;
+ 	      else if (BASELINK_P (expr))
+ 		expr = build_baselink (access_path, access_path,
+ 				       BASELINK_FUNCTIONS (expr),
+ 				       BASELINK_OPTYPE (expr));
  	      else
  		expr
! 		  = build_baselink (access_path, access_path,
  				    expr,
! 				    IDENTIFIER_CONV_OP_P (OVL_NAME (expr_real))
! 				    ? TREE_TYPE (OVL_NAME (expr_real))
! 				    : NULL_TREE);
  	    }
  	}
        /* Let cp_parser_template_id parse the template arguments.  */
*************** cp_parser_splice_expression (cp_parser *
*** 6316,6322 ****
    tree t = expr.get_value ();
    STRIP_ANY_LOCATION_WRAPPER (t);
    tree unresolved = t;
-   t = MAYBE_BASELINK_FUNCTIONS (t);
    t = resolve_nondeduced_context (t, tf_warning_or_error);
  
    if (dependent_splice_p (t))
--- 6326,6331 ----
*************** cp_parser_postfix_expression (cp_parser
*** 8617,8622 ****
--- 8626,8633 ----
      case RID_BUILTIN_ASSOC_BARRIER:
      case RID_BUILTIN_OPERATOR_NEW:
      case RID_BUILTIN_OPERATOR_DELETE:
+     case RID_BUILTIN_BSWAPG:
+     case RID_BUILTIN_BITREVERSEG:
        {
  	vec<tree, va_gc> *vec;
  
*************** cp_parser_postfix_expression (cp_parser
*** 8736,8741 ****
--- 8747,8764 ----
  	      }
  	    break;
  
+ 	  case RID_BUILTIN_BSWAPG:
+ 	    postfix_expression
+ 	      = build_x_bswapg_bitreverseg (loc, IFN_BSWAP, vec,
+ 					    tf_warning_or_error);
+ 	    break;
+ 
+ 	  case RID_BUILTIN_BITREVERSEG:
+ 	    postfix_expression
+ 	      = build_x_bswapg_bitreverseg (loc, IFN_BITREVERSE, vec,
+ 					    tf_warning_or_error);
+ 	    break;
+ 
  	  default:
  	    gcc_unreachable ();
  	  }
*************** cp_parser_constraint_expression (cp_pars
*** 34763,34769 ****
  {
    processing_constraint_expression_sentinel parsing_constraint;
    ++processing_template_decl;
!   cp_expr expr = cp_parser_binary_expression (parser, false, true,
  					      PREC_NOT_OPERATOR, NULL);
    --processing_template_decl;
    if (check_for_bare_parameter_packs (expr))
--- 34786,34792 ----
  {
    processing_constraint_expression_sentinel parsing_constraint;
    ++processing_template_decl;
!   cp_expr expr = cp_parser_binary_expression (parser, false, false,
  					      PREC_NOT_OPERATOR, NULL);
    --processing_template_decl;
    if (check_for_bare_parameter_packs (expr))
*************** cp_parser_requirement_body (cp_parser *p
*** 34949,34954 ****
--- 34972,34981 ----
    if (!braces.require_open (parser))
      return error_mark_node;
  
+   /* Within the body of a requires expression, a '>' token is always the
+      greater-than operator. */
+   auto gto = make_temp_override (parser->greater_than_is_operator_p, true);
+ 
    tree reqs = cp_parser_requirement_seq (parser);
  
    if (!braces.require_close (parser))
diff -Nrcpad gcc-17-20260531/gcc/cp/pt.cc gcc-17-20260607/gcc/cp/pt.cc
*** gcc-17-20260531/gcc/cp/pt.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/pt.cc	Sun Jun  7 22:32:06 2026
*************** warn_spec_missing_attributes (tree tmpl,
*** 2851,2856 ****
--- 2851,2897 ----
      }
  }
  
+ /* Perform type checking in explicit instantiation of variable templates
+    as per CWG 1704.  That is, detect
+      template<typename T> T var = {};
+      template int *var<int>;
+    where there's a mismatch 'int' x 'int *'.  INST is the instantiation
+    of the variable template, DECL is the VAR_DECL from the template-id
+    used in the explicit instantiation.  */
+ 
+ static bool
+ check_explicit_inst_of_var_template (tree inst, tree decl)
+ {
+   if (!inst || inst == error_mark_node)
+     return true;
+ 
+   tree type1 = TREE_TYPE (inst);
+   tree type2 = TREE_TYPE (decl);
+ 
+   /* Redeclaration with type auto is OK.  */
+   if (is_auto (type1) || is_auto (type2))
+     return true;
+ 
+   /* Absence of major array bound is permitted.  */
+   if (TREE_CODE (type1) == ARRAY_TYPE
+       && TREE_CODE (type2) == ARRAY_TYPE
+       && (!TYPE_DOMAIN (type1) || !TYPE_DOMAIN (type2)))
+     {
+       type1 = TREE_TYPE (type1);
+       type2 = TREE_TYPE (type2);
+     }
+ 
+   if (same_type_p (type1, type2))
+     /* All good.  */
+     return true;
+ 
+   auto_diagnostic_group d;
+   error ("type %qT for explicit instantiation %qD does not match declared "
+ 	 "type %qT", type2, decl, type1);
+   inform (DECL_SOURCE_LOCATION (inst), "variable template declared here");
+   return false;
+ }
+ 
  /* Check to see if the function just declared, as indicated in
     DECLARATOR, and in DECL, is a specialization of a function
     template.  We may also discover that the declaration is an explicit
*************** check_explicit_specialization (tree decl
*** 3235,3241 ****
  		  targs = new_targs;
  		}
  
! 	      return instantiate_template (tmpl, targs, tf_error);
  	    }
  
  	  /* If we thought that the DECL was a member function, but it
--- 3276,3286 ----
  		  targs = new_targs;
  		}
  
! 	      tree inst = instantiate_template (tmpl, targs, tf_error);
! 	      if (variable_template_p (tmpl)
! 		  && !check_explicit_inst_of_var_template (inst, decl))
! 		return error_mark_node;
! 	      return inst;
  	    }
  
  	  /* If we thought that the DECL was a member function, but it
*************** is_compatible_template_arg (tree parm, t
*** 8740,8746 ****
     conversion for the benefit of cp_tree_equal.  */
  
  static tree
! maybe_convert_nontype_argument (tree type, tree arg, bool force)
  {
    /* Auto parms get no conversion.  */
    if (type_uses_auto (type))
--- 8785,8791 ----
     conversion for the benefit of cp_tree_equal.  */
  
  static tree
! maybe_build_nontype_implicit_conv (tree type, tree arg, bool force)
  {
    /* Auto parms get no conversion.  */
    if (type_uses_auto (type))
*************** dependent_implicit_conv_p (tree type, tr
*** 8780,8785 ****
--- 8825,8857 ----
  	      && value_dependent_expression_p (expr)));
  }
  
+ /* Convert the non-type template parameter ARG to the indicated TYPE.
+    If one of them is dependent, create an appropriate conversion.
+    FORCE_CONV is true in a forced context (i.e. alias or concept).  */
+ 
+ static tree
+ convert_nontype_argument_maybe_dependent (tree type, tree arg,
+ 					  bool force_conv,
+ 					  tsubst_flags_t complain)
+ {
+   if (dependent_implicit_conv_p (type, arg, force_conv))
+     {
+       tree val = canonicalize_expr_argument (arg, complain);
+       return maybe_build_nontype_implicit_conv (type, val, force_conv);
+     }
+ 
+   /* We used to call digest_init here.  However, digest_init will report
+      errors, which we don't want when complain is zero.  More importantly,
+      digest_init will try too hard to convert things: for example,
+      `0' should not be converted to pointer type at this point according to
+      the standard.  Accepting this is not merely an extension, since
+      deciding whether or not these conversions can occur is part of
+      determining which function template to call, or whether a given
+      explicit argument specification is valid.  */
+   return convert_nontype_argument (type, convert_from_reference (arg),
+ 				   complain);
+ }
+ 
  /* Convert the indicated template ARG as necessary to match the
     indicated template PARM.  Returns the converted ARG, or
     error_mark_node if the conversion was unsuccessful.  Error and
*************** convert_template_argument (tree parm,
*** 9060,9082 ****
  	  && same_type_p (TREE_TYPE (orig_arg), t))
  	orig_arg = TREE_OPERAND (orig_arg, 0);
  
!       if (!dependent_implicit_conv_p (t, orig_arg, force_conv))
! 	/* We used to call digest_init here.  However, digest_init
! 	   will report errors, which we don't want when complain
! 	   is zero.  More importantly, digest_init will try too
! 	   hard to convert things: for example, `0' should not be
! 	   converted to pointer type at this point according to
! 	   the standard.  Accepting this is not merely an
! 	   extension, since deciding whether or not these
! 	   conversions can occur is part of determining which
! 	   function template to call, or whether a given explicit
! 	   argument specification is valid.  */
! 	val = convert_nontype_argument (t, orig_arg, complain);
!       else
! 	{
! 	  val = canonicalize_expr_argument (orig_arg, complain);
! 	  val = maybe_convert_nontype_argument (t, val, force_conv);
! 	}
  
        if (val == NULL_TREE)
  	val = error_mark_node;
--- 9132,9139 ----
  	  && same_type_p (TREE_TYPE (orig_arg), t))
  	orig_arg = TREE_OPERAND (orig_arg, 0);
  
!       val = convert_nontype_argument_maybe_dependent (t, orig_arg, force_conv,
! 						      complain);
  
        if (val == NULL_TREE)
  	val = error_mark_node;
*************** tsubst_splice_scope (tree t, tree args,
*** 16942,16948 ****
  static tree
  tsubst_splice_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl)
  {
!   tree op = tsubst_expr (TREE_OPERAND (t, 0), args, complain, in_decl);
    if (op == error_mark_node)
      return error_mark_node;
    op = splice (op);
--- 16999,17032 ----
  static tree
  tsubst_splice_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl)
  {
!   tree template_id = NULL_TREE;
!   auto apply_template = [&](tree templ)
!     {
!       if (!template_id)
! 	return templ;
!       template_id = copy_node (template_id);
!       tree ret = template_id;
! 
!       /* follow the example of lookup_template_function, but for all
! 	 templates.  */
!       if (BASELINK_P (templ))
! 	{
! 	  ret = copy_node (templ);
! 	  BASELINK_FUNCTIONS (ret) = template_id;
! 	  templ = BASELINK_FUNCTIONS (templ);
! 	}
!       TREE_OPERAND (template_id, 0) = templ;
!       return ret;
!     };
! 
!   if (TREE_CODE (t) == TEMPLATE_ID_EXPR)
!     {
!       template_id = t;
!       t = TREE_OPERAND (t, 0);
!     }
! 
!   tree op = tsubst_expr (TREE_OPERAND (t, 0), args,
! 			 (complain & ~tf_no_name_lookup), in_decl);
    if (op == error_mark_node)
      return error_mark_node;
    op = splice (op);
*************** tsubst_splice_expr (tree t, tree args, t
*** 16960,16967 ****
  	SET_SPLICE_EXPR_TEMPLATE_P (op, true);
        if (SPLICE_EXPR_TARGS_P (t))
  	SET_SPLICE_EXPR_TARGS_P (op, true);
!       return op;
      }
    if (SPLICE_EXPR_EXPRESSION_P (t)
        && !check_splice_expr (input_location, UNKNOWN_LOCATION, op,
  			     SPLICE_EXPR_ADDRESS_P (t),
--- 17044,17055 ----
  	SET_SPLICE_EXPR_TEMPLATE_P (op, true);
        if (SPLICE_EXPR_TARGS_P (t))
  	SET_SPLICE_EXPR_TARGS_P (op, true);
!       return apply_template (op);
      }
+ 
+   /* We have to form a template-id for checking too.  */
+   op = apply_template (op);
+ 
    if (SPLICE_EXPR_EXPRESSION_P (t)
        && !check_splice_expr (input_location, UNKNOWN_LOCATION, op,
  			     SPLICE_EXPR_ADDRESS_P (t),
*************** tsubst_splice_expr (tree t, tree args, t
*** 16971,16976 ****
--- 17059,17069 ----
  			     (complain & tf_error)))
      return error_mark_node;
  
+   /* For the template-id case, we have to substitute only after checking, to
+      reject the case where the template part is a type.  */
+   if (template_id)
+     op = tsubst_expr (op, args, complain, in_decl);
+ 
    if (SPLICE_EXPR_ADDRESS_P (t))
      {
        push_deferring_access_checks (dk_no_check);
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 21472,21482 ****
  	tree object;
  	tree templ = TREE_OPERAND (t, 0);
  	tree targs = TREE_OPERAND (t, 1);
  
! 	if (no_name_lookup_flag)
! 	  templ = tsubst_name (templ, args, complain, in_decl);
! 	else
! 	  templ = tsubst_expr (templ, args, complain, in_decl);
  
  	if (targs)
  	  targs = tsubst_template_args (targs, args, complain, in_decl);
--- 21565,21576 ----
  	tree object;
  	tree templ = TREE_OPERAND (t, 0);
  	tree targs = TREE_OPERAND (t, 1);
+ 	tsubst_flags_t complain_lookup = complain | no_name_lookup_flag;
  
! 	if (TREE_CODE (templ) == SPLICE_EXPR)
! 	  return tsubst_splice_expr (t, args, complain_lookup, in_decl);
! 
! 	templ = tsubst_expr (templ, args, complain_lookup, in_decl);
  
  	if (targs)
  	  targs = tsubst_template_args (targs, args, complain, in_decl);
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 22468,22473 ****
--- 22562,22578 ----
  		break;
  	      }
  
+ 	    case IFN_BSWAP:
+ 	    case IFN_BITREVERSE:
+ 	      {
+ 		ret = build_x_bswapg_bitreverseg (input_location,
+ 						  CALL_EXPR_IFN (t), call_args,
+ 						  complain);
+ 		if (ret != error_mark_node)
+ 		  RETURN (ret);
+ 		break;
+ 	      }
+ 
  	    case IFN_ASSUME:
  	      gcc_assert (nargs == 1);
  	      if (vec_safe_length (call_args) != 1)
*************** unify (tree tparms, tree targs, tree par
*** 26530,26539 ****
  	  && !TEMPLATE_PARM_PARAMETER_PACK (parm))
  	return unify_parameter_pack_mismatch (explain_p, parm, arg);
  
!       {
! 	bool removed_attr = false;
! 	arg = strip_typedefs_expr (arg, &removed_attr);
!       }
        TREE_VEC_ELT (INNERMOST_TEMPLATE_ARGS (targs), idx) = arg;
        return unify_success (explain_p);
  
--- 26635,26646 ----
  	  && !TEMPLATE_PARM_PARAMETER_PACK (parm))
  	return unify_parameter_pack_mismatch (explain_p, parm, arg);
  
!       arg = convert_nontype_argument_maybe_dependent (tparm, arg,
! 						      /*forced=*/false,
! 						      complain);
!       if (!arg || arg == error_mark_node)
! 	return unify_invalid (explain_p);
! 
        TREE_VEC_ELT (INNERMOST_TEMPLATE_ARGS (targs), idx) = arg;
        return unify_success (explain_p);
  
diff -Nrcpad gcc-17-20260531/gcc/cp/reflect.cc gcc-17-20260607/gcc/cp/reflect.cc
*** gcc-17-20260531/gcc/cp/reflect.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/reflect.cc	Sun Jun  7 22:32:06 2026
*************** check_splice_expr (location_t loc, locat
*** 9060,9065 ****
--- 9060,9071 ----
  		   bool address_p, bool member_access_p, bool template_p,
  		   bool targs_p, bool complain_p)
  {
+   t = MAYBE_BASELINK_FUNCTIONS (t);
+   tree expr = t;
+   if (TREE_CODE (t) == TEMPLATE_ID_EXPR)
+     t = TREE_OPERAND (t, 0);
+   t = OVL_FIRST (t);
+ 
    /* We may not have gotten an expression.  */
    if (TREE_CODE (t) == TYPE_DECL
        || TREE_CODE (t) == NAMESPACE_DECL
*************** check_splice_expr (location_t loc, locat
*** 9095,9101 ****
    /* [expr.prim.splice]/2 For a splice-expression of the form
       splice-specifier, the expression is ill-formed if it is:  */
    /* -- a constructor or a destructor  */
!   if (TREE_CODE (t) == FUNCTION_DECL
        && (DECL_CONSTRUCTOR_P (t) || DECL_DESTRUCTOR_P (t)))
      {
        if (complain_p)
--- 9101,9107 ----
    /* [expr.prim.splice]/2 For a splice-expression of the form
       splice-specifier, the expression is ill-formed if it is:  */
    /* -- a constructor or a destructor  */
!   if (TREE_CODE (STRIP_TEMPLATE (t)) == FUNCTION_DECL
        && (DECL_CONSTRUCTOR_P (t) || DECL_DESTRUCTOR_P (t)))
      {
        if (complain_p)
*************** check_splice_expr (location_t loc, locat
*** 9134,9140 ****
      }
  
    if (member_access_p
!       && !valid_splice_for_member_access_p (t, /*decls_only_p=*/false))
      {
        if (complain_p)
  	error_at (loc, "cannot use %qE to access a class member", t);
--- 9140,9146 ----
      }
  
    if (member_access_p
!       && !valid_splice_for_member_access_p (expr, /*decls_only_p=*/false))
      {
        if (complain_p)
  	error_at (loc, "cannot use %qE to access a class member", t);
*************** check_splice_expr (location_t loc, locat
*** 9232,9239 ****
  	  return false;
  	}
        gcc_checking_assert (reflection_function_template_p (t)
! 			   || get_template_info (t)
! 			   || TREE_CODE (t) == TEMPLATE_ID_EXPR
  			   || variable_template_p (t)
  			   || dependent_splice_p (t));
      }
--- 9238,9245 ----
  	  return false;
  	}
        gcc_checking_assert (reflection_function_template_p (t)
! 			   || get_template_info (expr)
! 			   || TREE_CODE (expr) == TEMPLATE_ID_EXPR
  			   || variable_template_p (t)
  			   || dependent_splice_p (t));
      }
diff -Nrcpad gcc-17-20260531/gcc/cp/search.cc gcc-17-20260607/gcc/cp/search.cc
*** gcc-17-20260531/gcc/cp/search.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/search.cc	Sun Jun  7 22:32:06 2026
*************** build_baselink (tree binfo, tree access_
*** 1144,1149 ****
--- 1144,1150 ----
  {
    tree baselink;
  
+   gcc_checking_assert (binfo && access_binfo);
    gcc_assert (OVL_P (functions) || TREE_CODE (functions) == TEMPLATE_ID_EXPR);
    gcc_assert (!optype || TYPE_P (optype));
    gcc_assert (TREE_TYPE (functions));
diff -Nrcpad gcc-17-20260531/gcc/cp/semantics.cc gcc-17-20260607/gcc/cp/semantics.cc
*** gcc-17-20260531/gcc/cp/semantics.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/semantics.cc	Sun Jun  7 22:32:06 2026
*************** cxx_omp_map_array_section (location_t lo
*** 6950,6958 ****
        if (TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE)
  	t = convert_from_reference (t);
  
!       if (TYPE_PTR_P (TREE_TYPE (t)))
  	t = build_array_ref (loc, t, low);
        else
  	t = error_mark_node;
      }
  
--- 6950,6960 ----
        if (TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE)
  	t = convert_from_reference (t);
  
!       if (TYPE_PTR_P (TREE_TYPE (t))
! 	  || TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
  	t = build_array_ref (loc, t, low);
        else
+ 	/* handle_omp_array_sections_1 has already diagnosed the error.  */
  	t = error_mark_node;
      }
  
diff -Nrcpad gcc-17-20260531/gcc/cp/tree.cc gcc-17-20260607/gcc/cp/tree.cc
*** gcc-17-20260531/gcc/cp/tree.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/tree.cc	Sun Jun  7 22:32:06 2026
*************** build_min_non_dep_op_overload (enum tree
*** 3855,3860 ****
--- 3855,3869 ----
  	  tree spaceship_non_dep = (TREE_CODE (non_dep) == CALL_EXPR
  				    ? CALL_EXPR_ARG (non_dep, reversed ? 1 : 0)
  				    : TREE_OPERAND (non_dep, reversed ? 1 : 0));
+ 
+ 	  tree int_promotion = NULL_TREE;
+ 	  if (TREE_CODE (spaceship_non_dep) == NOP_EXPR)
+ 	    {
+ 	      gcc_checking_assert (TREE_CODE (non_dep) != CALL_EXPR);
+ 	      int_promotion = TREE_TYPE (spaceship_non_dep);
+ 	      spaceship_non_dep = TREE_OPERAND (spaceship_non_dep, 0);
+ 	    }
+ 
  	  gcc_checking_assert (TREE_CODE (spaceship_non_dep) == CALL_EXPR);
  	  tree spaceship_op0 = va_arg (p, tree);
  	  tree spaceship_op1 = va_arg (p, tree);
*************** build_min_non_dep_op_overload (enum tree
*** 3877,3882 ****
--- 3886,3893 ----
  	    {
  	      gcc_checking_assert (COMPARISON_CLASS_P (non_dep)
  				   || TREE_CODE (non_dep) == SPACESHIP_EXPR);
+ 	      if (int_promotion)
+ 		op0 = build_nop (int_promotion, op0);
  	      if (reversed)
  		std::swap (op0, op1);
  	      return build_min_non_dep (TREE_CODE (non_dep), non_dep, op0, op1);
diff -Nrcpad gcc-17-20260531/gcc/cp/typeck.cc gcc-17-20260607/gcc/cp/typeck.cc
*** gcc-17-20260531/gcc/cp/typeck.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/cp/typeck.cc	Sun Jun  7 22:32:06 2026
*************** build_x_shufflevector (location_t loc, v
*** 7111,7116 ****
--- 7111,7181 ----
      }
    return exp;
  }
+ 
+ /* Build __builtin_bswapg (ARG) or __builtin_bitreverseg (ARG).  */
+ tree
+ build_x_bswapg_bitreverseg (location_t loc, internal_fn ifn,
+ 			    vec<tree, va_gc> *args, tsubst_flags_t complain)
+ {
+   const char *name
+     = ifn == IFN_BSWAP ? "__builtin_bswapg" : "__builtin_bitreverseg";
+   if (args->length () != 1)
+     {
+       if (complain & tf_error)
+ 	error_at (loc, "wrong number of arguments to %qs", name);
+       return error_mark_node;
+     }
+   tree arg = (*args)[0];
+   if (type_dependent_expression_p (arg))
+     {
+       tree exp = build_min_nt_call_vec (NULL, args);
+       CALL_EXPR_IFN (exp) = ifn;
+       return exp;
+     }
+   tree type = TYPE_MAIN_VARIANT (TREE_TYPE (arg));
+   if (!INTEGRAL_TYPE_P (type))
+     {
+       if (complain & tf_error)
+ 	error_at (loc, "%qs operand not an integral type", name);
+       return error_mark_node;
+     }
+   if (TREE_CODE (type) == ENUMERAL_TYPE)
+     {
+       if (complain & tf_error)
+ 	error_at (loc, "argument %u in call to function "
+ 		       "%qs has enumerated type", 1, name);
+       return error_mark_node;
+     }
+   if (TREE_CODE (type) == BOOLEAN_TYPE)
+     {
+       if (complain & tf_error)
+ 	error_at (loc, "argument %u in call to function "
+ 		       "%qs has boolean type", 1, name);
+       return error_mark_node;
+     }
+   if (!TYPE_UNSIGNED (type))
+     {
+       if (complain & tf_error)
+ 	error_at (loc, "argument 1 in call to function "
+ 		       "%qs has signed type", name);
+       return error_mark_node;
+     }
+   if (ifn == IFN_BSWAP && (TYPE_PRECISION (type) % 8) != 0)
+     {
+       if (complain & tf_error)
+ 	error_at (loc, "precision %d of argument 1 to function "
+ 		       "%qs is not a multiple of 8",
+ 		  TYPE_PRECISION (type), name);
+       return error_mark_node;
+     }
+   tree exp = build_call_expr_internal_loc (loc, ifn, type, 1, arg);
+   if (processing_template_decl)
+     {
+       exp = build_min_non_dep_call_vec (exp, NULL, args);
+       CALL_EXPR_IFN (exp) = ifn;
+     }
+   return exp;
+ }
  
  /* Return a tree for the sum or difference (RESULTCODE says which)
     of pointer PTROP and integer INTOP.  */
diff -Nrcpad gcc-17-20260531/gcc/d/ChangeLog gcc-17-20260607/gcc/d/ChangeLog
*** gcc-17-20260531/gcc/d/ChangeLog	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/d/ChangeLog	Sun Jun  7 22:32:06 2026
***************
*** 1,3 ****
--- 1,13 ----
+ 2026-06-02  Christopher Bazley  <chris.bazley@arm.com>
+ 
+ 	* d-attribs.cc (d_handle_optimize_attribute):
+ 	Save the global target options before modifying
+ 	them. If the function with the optimize attribute
+ 	already has a target option node then restore those
+ 	target options as the global options, so that they
+ 	are used as the basis for any new optimization and
+ 	target options attached to the function.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* d-attribs.cc (d_handle_alloc_size_attribute): Fix typos.
diff -Nrcpad gcc-17-20260531/gcc/d/d-attribs.cc gcc-17-20260607/gcc/d/d-attribs.cc
*** gcc-17-20260531/gcc/d/d-attribs.cc	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/d/d-attribs.cc	Sun Jun  7 22:32:07 2026
*************** d_handle_optimize_attribute (tree *node,
*** 923,934 ****
    else
      {
        struct cl_optimization cur_opts;
        tree old_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node);
  
        /* Save current options.  */
        cl_optimization_save (&cur_opts, &global_options, &global_options_set);
!       tree prev_target_node = build_target_option_node (&global_options,
! 							&global_options_set);
  
        /* If we previously had some optimization options, use them as the
  	 default.  */
--- 923,940 ----
    else
      {
        struct cl_optimization cur_opts;
+       struct cl_target_option cur_target;
        tree old_opts = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node);
+       tree old_target = DECL_FUNCTION_SPECIFIC_TARGET (*node);
  
        /* Save current options.  */
        cl_optimization_save (&cur_opts, &global_options, &global_options_set);
!       cl_target_option_save (&cur_target, &global_options, &global_options_set);
! 
!       tree prev_target_node
! 	= old_target
! 	    ? old_target
! 	    : build_target_option_node (&global_options, &global_options_set);
  
        /* If we previously had some optimization options, use them as the
  	 default.  */
*************** d_handle_optimize_attribute (tree *node,
*** 943,948 ****
--- 949,958 ----
  	cl_optimization_restore (&global_options, &global_options_set,
  				 TREE_OPTIMIZATION (old_opts));
  
+       if (old_target)
+ 	cl_target_option_restore (&global_options, &global_options_set,
+ 				  TREE_TARGET_OPTION (old_target));
+ 
        /* Parse options, and update the vector.  */
        parse_optimize_options (args);
        DECL_FUNCTION_SPECIFIC_OPTIMIZATION (*node)
*************** d_handle_optimize_attribute (tree *node,
*** 956,962 ****
        cl_optimization_restore (&global_options, &global_options_set,
  			       &cur_opts);
        cl_target_option_restore (&global_options, &global_options_set,
! 				TREE_TARGET_OPTION (prev_target_node));
        if (saved_global_options != NULL)
  	{
  	  cl_optimization_compare (saved_global_options, &global_options);
--- 966,972 ----
        cl_optimization_restore (&global_options, &global_options_set,
  			       &cur_opts);
        cl_target_option_restore (&global_options, &global_options_set,
! 				&cur_target);
        if (saved_global_options != NULL)
  	{
  	  cl_optimization_compare (saved_global_options, &global_options);
diff -Nrcpad gcc-17-20260531/gcc/doc/extend.texi gcc-17-20260607/gcc/doc/extend.texi
*** gcc-17-20260531/gcc/doc/extend.texi	Sun May 31 22:32:05 2026
--- gcc-17-20260607/gcc/doc/extend.texi	Sun Jun  7 22:32:07 2026
*************** Similar to @code{__builtin_bswap64}, exc
*** 16095,16100 ****
--- 16095,16106 ----
  are 128-bit.  Only supported on targets when 128-bit types are supported.
  @enddefbuiltin
  
+ @defbuiltin{@var{type} __builtin_bswapg (@var{type} @var{x})}
+ Similar to @code{__builtin_bswap64}, except the argument is type-generic
+ unsigned integer (standard, extended or bit-precise) with width which is
+ multiple of 8.  No integral argument promotions are performed on the argument.
+ @enddefbuiltin
+ 
  @defbuiltin{uint8_t __builtin_bitreverse8 (uint8_t @var{x})}
  Returns @var{x} with all bits reversed.
  @enddefbuiltin
*************** Similar to @code{__builtin_bitreverse64}
*** 16119,16124 ****
--- 16125,16136 ----
  are 128-bit.  Only supported on targets when 128-bit types are supported.
  @enddefbuiltin
  
+ @defbuiltin{@var{type} __builtin_bitreverseg (@var{type} @var{x})}
+ Similar to @code{__builtin_bitreverse64}, except the argument is type-generic
+ unsigned integer (standard, extended or bit-precise).
+ No integral argument promotions are performed on the argument.
+ @enddefbuiltin
+ 
  @node CRC Builtins
  @subsection CRC Builtins
  @cindex CRC builtins
diff -Nrcpad gcc-17-20260531/gcc/doc/ifn.texi gcc-17-20260607/gcc/doc/ifn.texi
*** gcc-17-20260531/gcc/doc/ifn.texi	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/doc/ifn.texi	Sun Jun  7 22:32:07 2026
*************** instruction pattern.
*** 63,70 ****
  
  @cindex @code{IFN_MASK_LOAD} internal function
  @item @samp{IFN_MASK_LOAD}
! The @code{IFN_MASK_LOAD} internal function directly maps to the @code{maskload}
! instruction pattern.
  
  @cindex @code{IFN_LOAD_LANES} internal function
  @item @samp{IFN_LOAD_LANES}
--- 63,81 ----
  
  @cindex @code{IFN_MASK_LOAD} internal function
  @item @samp{IFN_MASK_LOAD}
! The @code{IFN_MASK_LOAD} internal function maps directly to the
! @code{maskload} instruction pattern (@pxref{maskload@var{m}@var{n}}).
! For a vector type @code{v} (with @code{TYPE_MODE} @var{m}), a mask type
! @code{p} (with @code{TYPE_MODE} @var{n}), and pointer type
! @code{aliasptr}, the signature of the internal function is:
! @smallexample
! v IFN_MASK_LOAD (v *addr, aliasptr cookie, p mask, v elseval)
! @end smallexample
! a call to this internal function with lhs @var{r} maps to
! @code{maskload@var{m}@var{n}} with the following operands array:
! @code{[@var{r}, addr, mask, elseval]}.  @code{cookie}'s type
! (@code{aliasptr}) is a pointer type used for type-based alias analysis,
! and its value gives the alignment of the load in bits.
  
  @cindex @code{IFN_LOAD_LANES} internal function
  @item @samp{IFN_LOAD_LANES}
diff -Nrcpad gcc-17-20260531/gcc/doc/install.texi gcc-17-20260607/gcc/doc/install.texi
*** gcc-17-20260531/gcc/doc/install.texi	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/doc/install.texi	Sun Jun  7 22:32:07 2026
*************** values, possibly consisting of a single
*** 1558,1565 ****
  for riscv*-*-elf*.  The accepted values and meanings are given below.
  
  
! Every config is constructed with four components: architecture string, ABI,
! reuse rule with architecture string and reuse rule with sub-extension.
  
  Example 1: Add multi-lib support for rv32i with ilp32.
  @smallexample
--- 1558,1566 ----
  for riscv*-*-elf*.  The accepted values and meanings are given below.
  
  
! Every config is constructed with four mandatory components and one optional
! component: architecture string, ABI, reuse rule with architecture string,
! reuse rule with sub-extension and an optional list of extra options.
  
  Example 1: Add multi-lib support for rv32i with ilp32.
  @smallexample
*************** medlow code model; rv64ima with lp64 and
*** 1600,1605 ****
--- 1601,1636 ----
  rv64ima-lp64--;--cmodel=medlow,medany
  @end smallexample
  
+ A config may carry an optional fifth component, a list of extra options, which
+ is appended after the sub-extension reuse rule:
+ @smallexample
+ <arch>-<abi>-<extra-arch>-<sub-ext>[-<extra-options>]
+ @end smallexample
+ 
+ The extra options are a comma separated list, and each entry pairs an option
+ name with the multilib directory it should map to, separated by a slash:
+ @smallexample
+ <extra-options> := <extra-option> ',' <extra-options>
+                  | <extra-option>
+ 
+ <extra-option>  := <option> '/' <multilib-folder>
+ @end smallexample
+ 
+ Because the dash (@samp{-}) is used as the component separator, any dash in an
+ option name must be rewritten as an underscore (@samp{_}), and the leading dash
+ of the option must be dropped.  For example, @option{-fcf-protection=full} is
+ written as @code{fcf_protection=full}.
+ 
+ Example 7: Add multi-lib support for rv64imafdc with lp64d, plus a variant
+ built with @option{-fcf-protection=full} placed in the @file{cfi} directory.
+ @smallexample
+ rv64imafdc_zicfiss_zicfilp-lp64d---fcf_protection=full/cfi
+ @end smallexample
+ 
+ This builds a multilib with
+ @option{-march=rv64imafdc_zicfiss_zicfilp -mabi=lp64d -fcf-protection=full}
+ and uses @file{rv64imafdc_zicfiss_zicfilp/lp64d/cfi} as the multilib folder.
+ 
  @item --with-multi-buildlist=@var{file}
  Specify a file containing a list of multilib directories to build.
  
diff -Nrcpad gcc-17-20260531/gcc/doc/md.texi gcc-17-20260607/gcc/doc/md.texi
*** gcc-17-20260531/gcc/doc/md.texi	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/doc/md.texi	Sun Jun  7 22:32:07 2026
*************** the meanings of that architecture's cons
*** 1950,1955 ****
--- 1950,1963 ----
  @item k
  The stack pointer register (@code{SP})
  
+ @item Uci
+ Like @code{r}, but restricted to registers 8 through 11 inclusive.  Can be used
+ to index ZA.
+ 
+ @item Ucj
+ Like @code{r}, but restricted to registers 12 through 15 inclusive.  Can be
+ used to index ZA.
+ 
  @item w
  Floating point register, Advanced SIMD vector register or SVE vector register
  
*************** Operands 0, 2 and 3 have mode @var{m}.
*** 7617,7622 ****
--- 7625,7631 ----
  Operands 4 and 5 have a target-dependent scalar integer mode.
  
  @mdindex maskload@var{m}@var{n}
+ @anchor{maskload@var{m}@var{n}}
  @item @samp{maskload@var{m}@var{n}}
  Perform a masked load of vector from memory operand 1 of mode @var{m}
  into register operand 0.  The mask is provided in register operand 2 of
diff -Nrcpad gcc-17-20260531/gcc/doc/riscv-ext.texi gcc-17-20260607/gcc/doc/riscv-ext.texi
*** gcc-17-20260531/gcc/doc/riscv-ext.texi	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/doc/riscv-ext.texi	Sun Jun  7 22:32:07 2026
***************
*** 338,343 ****
--- 338,347 ----
  @tab 1.0
  @tab Vector BF16 converts extension
  
+ @item @samp{zvfofp8min}
+ @tab 0.2
+ @tab Vector FP8 minimum extension
+ 
  @item @samp{zvfbfwma}
  @tab 1.0
  @tab Vector BF16 widening multiply/add extension
diff -Nrcpad gcc-17-20260531/gcc/doc/riscv-mcpu.texi gcc-17-20260607/gcc/doc/riscv-mcpu.texi
*** gcc-17-20260531/gcc/doc/riscv-mcpu.texi	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/doc/riscv-mcpu.texi	Sun Jun  7 22:32:07 2026
***************
*** 13,19 ****
  @opindex mcpu
  @item -mcpu=@var{processor-string}
  Use architecture of and optimize the output for the given processor, specified
! by particular CPU name. Permissible values for this option are:
  
  
  @samp{sifive-e20},
--- 13,19 ----
  @opindex mcpu
  @item -mcpu=@var{processor-string}
  Use architecture of and optimize the output for the given processor, specified
! by particular CPU name.  Permissible values for this option are:
  
  
  @samp{sifive-e20},
diff -Nrcpad gcc-17-20260531/gcc/doc/rtl.texi gcc-17-20260607/gcc/doc/rtl.texi
*** gcc-17-20260531/gcc/doc/rtl.texi	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/doc/rtl.texi	Sun Jun  7 22:32:07 2026
*************** function calls.  It is important to dist
*** 3800,3812 ****
  they imply that certain registers and memory locations may be altered
  unpredictably.
  
- @findex CALL_INSN_FUNCTION_USAGE
  @code{call_insn} insns have the same extra fields as @code{insn} insns,
! accessed in the same way and in addition contain a field
! @code{CALL_INSN_FUNCTION_USAGE}, which contains a list (chain of
! @code{expr_list} expressions) containing @code{use}, @code{clobber} and
! sometimes @code{set} expressions that denote hard registers and
! @code{mem}s used or clobbered by the called function.
  
  A @code{mem} generally points to a stack slot in which arguments passed
  to the libcall by reference (@pxref{Register Arguments,
--- 3800,3815 ----
  they imply that certain registers and memory locations may be altered
  unpredictably.
  
  @code{call_insn} insns have the same extra fields as @code{insn} insns,
! accessed in the same way.  They have two further fields:
! 
! @table @code
! @findex CALL_INSN_FUNCTION_USAGE
! @item CALL_INSN_FUNCTION_USAGE
! This field contains a list (chain of @code{expr_list} expressions)
! containing @code{use}, @code{clobber} and sometimes @code{set}
! expressions that denote hard registers and @code{mem}s used or
! clobbered by the called function.
  
  A @code{mem} generally points to a stack slot in which arguments passed
  to the libcall by reference (@pxref{Register Arguments,
*************** that the function returns one of its arg
*** 3825,3830 ****
--- 3828,3840 ----
  look like a no-op if the same register holds the argument and the return
  value.
  
+ @findex CALL_INSN_ABI_ID
+ @item CALL_INSN_ABI_ID
+ This field identifies the callee's calling convention, as an index in
+ the range [0, @code{NUM_ABI_IDS} - 1].  See @file{function-abi.h} for
+ more details about the representation of these calling conventions.
+ @end table
+ 
  @findex code_label
  @findex CODE_LABEL_NUMBER
  @item code_label
diff -Nrcpad gcc-17-20260531/gcc/doc/sourcebuild.texi gcc-17-20260607/gcc/doc/sourcebuild.texi
*** gcc-17-20260531/gcc/doc/sourcebuild.texi	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/doc/sourcebuild.texi	Sun Jun  7 22:32:07 2026
*************** locally when using pic/PIC passes in the
*** 3389,3394 ****
--- 3389,3400 ----
  Add the target-specific flags needed to use
  @code{check-function-bodies} from @code{dg-final}.
  
+ These options are also added automatically by:
+ 
+ @smallexample
+ /* @{ dg-final @{ check-function-bodies @dots{} @} @dots{} @} */
+ @end smallexample
+ 
  @item float@var{n}
  Add the target-specific flags needed to use the @code{_Float@var{n}} type.
  
*************** A line containing just:
*** 3730,3735 ****
--- 3736,3750 ----
  stands for zero or more unmatched lines; the whitespace after
  @var{prefix} is again not significant.
  
+ @code{check-function-bodies} automatically adds the same options as:
+ 
+ @smallexample
+ /* @{ dg-add-options check_function_bodies @} */
+ @end smallexample
+ 
+ For this reason, @code{check-function-bodies} must come after the final
+ @code{dg-options} directive.
+ 
  @end table
  
  @subsubsection Scan object metadata with readelf
diff -Nrcpad gcc-17-20260531/gcc/doc/tm.texi gcc-17-20260607/gcc/doc/tm.texi
*** gcc-17-20260531/gcc/doc/tm.texi	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/doc/tm.texi	Sun Jun  7 22:32:07 2026
*************** descriptor.  Targets only need to define
*** 2020,2036 ****
  interoperability between several ABIs in the same translation unit.
  @end deftypefn
  
- @deftypefn {Target Hook} {const predefined_function_abi &} TARGET_INSN_CALLEE_ABI (const rtx_insn *@var{insn})
- This hook returns a description of the ABI used by the target of
- call instruction @var{insn}; see the definition of
- @code{predefined_function_abi} for details of the ABI descriptor.
- Only the global function @code{insn_callee_abi} should call this hook
- directly.
- 
- Targets only need to define this hook if they support
- interoperability between several ABIs in the same translation unit.
- @end deftypefn
- 
  @cindex call-used register
  @cindex call-clobbered register
  @cindex call-saved register
--- 2020,2025 ----
*************** definition that is usually appropriate,
*** 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
--- 4289,4294 ----
diff -Nrcpad gcc-17-20260531/gcc/doc/tm.texi.in gcc-17-20260607/gcc/doc/tm.texi.in
*** gcc-17-20260531/gcc/doc/tm.texi.in	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/doc/tm.texi.in	Sun Jun  7 22:32:07 2026
*************** must be defined.  Modern ports should de
*** 1743,1750 ****
  @cindex call-saved register
  @hook TARGET_FNTYPE_ABI
  
- @hook TARGET_INSN_CALLEE_ABI
- 
  @cindex call-used register
  @cindex call-clobbered register
  @cindex call-saved register
--- 1743,1748 ----
*************** the stack.
*** 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
--- 3356,3361 ----
diff -Nrcpad gcc-17-20260531/gcc/emit-rtl.cc gcc-17-20260607/gcc/emit-rtl.cc
*** gcc-17-20260531/gcc/emit-rtl.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/emit-rtl.cc	Sun Jun  7 22:32:07 2026
*************** try_split (rtx pat, rtx_insn *trial, int
*** 4036,4041 ****
--- 4036,4044 ----
  	      p = &XEXP (*p, 1);
  	    *p = CALL_INSN_FUNCTION_USAGE (trial);
  
+ 	    /* Preserve the ABI information from the original call.  */
+ 	    CALL_INSN_ABI_ID (insn) = CALL_INSN_ABI_ID (trial);
+ 
  	    /* If the old call was a sibling call, the new one must
  	       be too.  */
  	    SIBLING_CALL_P (insn) = SIBLING_CALL_P (trial);
*************** make_call_insn_raw (rtx pattern)
*** 4225,4230 ****
--- 4228,4234 ----
    INSN_CODE (insn) = -1;
    REG_NOTES (insn) = NULL;
    CALL_INSN_FUNCTION_USAGE (insn) = NULL;
+   CALL_INSN_ABI_ID (insn) = 0;
    INSN_LOCATION (insn) = curr_insn_location ();
    BLOCK_FOR_INSN (insn) = NULL;
  
*************** emit_copy_of_insn_after (rtx_insn *insn,
*** 6626,6631 ****
--- 6630,6636 ----
        if (CALL_INSN_FUNCTION_USAGE (insn))
  	CALL_INSN_FUNCTION_USAGE (new_rtx)
  	  = copy_insn (CALL_INSN_FUNCTION_USAGE (insn));
+       CALL_INSN_ABI_ID (new_rtx) = CALL_INSN_ABI_ID (insn);
        SIBLING_CALL_P (new_rtx) = SIBLING_CALL_P (insn);
        RTL_CONST_CALL_P (new_rtx) = RTL_CONST_CALL_P (insn);
        RTL_PURE_CALL_P (new_rtx) = RTL_PURE_CALL_P (insn);
diff -Nrcpad gcc-17-20260531/gcc/fold-const-call.cc gcc-17-20260607/gcc/fold-const-call.cc
*** gcc-17-20260531/gcc/fold-const-call.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fold-const-call.cc	Sun Jun  7 22:32:07 2026
*************** fold_const_call_ss (wide_int *result, co
*** 1094,1112 ****
        *result = wi::shwi (wi::parity (arg), precision);
        return true;
  
!     case CFN_BUILT_IN_BSWAP16:
!     case CFN_BUILT_IN_BSWAP32:
!     case CFN_BUILT_IN_BSWAP64:
!     case CFN_BUILT_IN_BSWAP128:
        *result = wi::bswap (wide_int::from (arg, precision,
  					   TYPE_SIGN (arg_type)));
        return true;
  
!     case CFN_BUILT_IN_BITREVERSE8:
!     case CFN_BUILT_IN_BITREVERSE16:
!     case CFN_BUILT_IN_BITREVERSE32:
!     case CFN_BUILT_IN_BITREVERSE64:
!     case CFN_BUILT_IN_BITREVERSE128:
        *result = wi::bitreverse (wide_int::from (arg, precision,
  						TYPE_SIGN (arg_type)));
        return true;
--- 1094,1105 ----
        *result = wi::shwi (wi::parity (arg), precision);
        return true;
  
!     CASE_CFN_BSWAP:
        *result = wi::bswap (wide_int::from (arg, precision,
  					   TYPE_SIGN (arg_type)));
        return true;
  
!     CASE_CFN_BITREVERSE:
        *result = wi::bitreverse (wide_int::from (arg, precision,
  						TYPE_SIGN (arg_type)));
        return true;
diff -Nrcpad gcc-17-20260531/gcc/fold-const.cc gcc-17-20260607/gcc/fold-const.cc
*** gcc-17-20260531/gcc/fold-const.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fold-const.cc	Sun Jun  7 22:32:07 2026
*************** tree_call_nonnegative_p (tree type, comb
*** 14627,14641 ****
      CASE_CFN_PARITY:
      CASE_CFN_POPCOUNT:
      CASE_CFN_CLRSB:
!     case CFN_BUILT_IN_BSWAP16:
!     case CFN_BUILT_IN_BSWAP32:
!     case CFN_BUILT_IN_BSWAP64:
!     case CFN_BUILT_IN_BSWAP128:
!     case CFN_BUILT_IN_BITREVERSE8:
!     case CFN_BUILT_IN_BITREVERSE16:
!     case CFN_BUILT_IN_BITREVERSE32:
!     case CFN_BUILT_IN_BITREVERSE64:
!     case CFN_BUILT_IN_BITREVERSE128:
        /* Always true.  */
        return true;
  
--- 14627,14634 ----
      CASE_CFN_PARITY:
      CASE_CFN_POPCOUNT:
      CASE_CFN_CLRSB:
!     CASE_CFN_BSWAP:
!     CASE_CFN_BITREVERSE:
        /* Always true.  */
        return true;
  
diff -Nrcpad gcc-17-20260531/gcc/fortran/ChangeLog gcc-17-20260607/gcc/fortran/ChangeLog
*** gcc-17-20260531/gcc/fortran/ChangeLog	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/ChangeLog	Sun Jun  7 22:32:07 2026
***************
*** 1,3 ****
--- 1,69 ----
+ 2026-06-03  Henri Menke  <henri@henrimenke.de>
+ 
+ 	* gfortran.h (enum ext_attr_id_t): Add EXT_ATTR_INLINE and
+ 	EXT_ATTR_ALWAYS_INLINE at the end.  Document that new attributes
+ 	must be appended to preserve module compatibility.
+ 	* decl.cc (ext_attr_list): Add "inline" and "always_inline".
+ 	(gfc_match_gcc_attributes): Warn about and drop INLINE or
+ 	ALWAYS_INLINE when combined with NOINLINE on the same symbol.
+ 	* trans-decl.cc (build_function_decl): Handle EXT_ATTR_INLINE and
+ 	EXT_ATTR_ALWAYS_INLINE by setting DECL_DECLARED_INLINE_P, and
+ 	DECL_DISREGARD_INLINE_LIMITS for ALWAYS_INLINE.
+ 	* gfortran.texi (ATTRIBUTES directive): Document INLINE and
+ 	ALWAYS_INLINE.
+ 
+ 2026-06-03  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/105594
+ 	* module.cc (gfc_use_module): Suppress bogus warning for a missing
+ 	ONLY clause on a submodule.
+ 
+ 2026-06-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-06-02  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125324
+ 	* gfortranspec.cc (lang_specific_driver): Also append -lpthread
+ 	when need_caf_shmem is set.
+ 
+ 2026-06-02  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/88632
+ 	PR fortran/104630
+ 	* module.cc (write_symtree): Do not filter out private symbols
+ 	when writing a submodule interface file (.smod).  Submodules are
+ 	descendants of their ancestor module and access private symbols
+ 	in the module's contains section via host association per
+ 	Fortran 2018 section 14.2.2.
+ 
+ 2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125527
+ 	* class.cc (gfc_find_derived_vtab): Stop the top-level namespace
+ 	walk at module/submodule boundaries to avoid escaping a submodule
+ 	into its ancestor module namespace.
+ 	* openmp.cc (gfc_omp_requires_add_clause): Likewise; treat the
+ 	submodule as its own program unit for OMP REQUIRES.
+ 	(gfc_match_omp_requires): Likewise; allow OMP REQUIRES in a submodule
+ 	spec part even when gfc_current_ns->parent is now non-NULL.
+ 	(gfc_match_omp_atomic): Likewise.
+ 	* parse.cc (parse_module): After processing USE statements and
+ 	host-association traversal, link the submodule namespace to its
+ 	ancestor module namespace so internal subprograms are visible via
+ 	host association (Fortran 2018, 14.6.1.3).
+ 	(clean_up_modules): Reset gfc_current_ns->parent before gfc_done_2
+ 	to prevent double-free of the ancestor module namespace.
+ 
+ 2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125481
+ 	* interface.cc (gfc_compare_actual_formal): Add missing check that
+ 	rejects a procedure-pointer actual argument corresponding to a
+ 	data-object dummy argument (F23:15.5.2.5, para 2).  Restrict to
+ 	EXPR_VARIABLE to avoid false positives on calls through procedure
+ 	pointer components.
+ 
  2026-05-30  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
  
  	PR fortran/105582
diff -Nrcpad gcc-17-20260531/gcc/fortran/class.cc gcc-17-20260607/gcc/fortran/class.cc
*** gcc-17-20260531/gcc/fortran/class.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/class.cc	Sun Jun  7 22:32:07 2026
*************** gfc_find_derived_vtab (gfc_symbol *deriv
*** 2461,2469 ****
    if (derived->attr.pdt_template)
      return NULL;
  
!   /* Find the top-level namespace.  */
    for (ns = gfc_current_ns; ns; ns = ns->parent)
!     if (!ns->parent)
        break;
  
    /* If the type is a class container, use the underlying derived type.  */
--- 2461,2474 ----
    if (derived->attr.pdt_template)
      return NULL;
  
!   /* Find the top-level namespace, stopping at module/submodule boundaries.
!      A submodule's namespace may have its parent pointer set to the ancestor
!      module namespace for host-association purposes; we must not escape that
!      boundary, because vtables for types defined in a submodule belong in
!      the submodule namespace, not in its parent module.  */
    for (ns = gfc_current_ns; ns; ns = ns->parent)
!     if (!ns->parent
! 	|| (ns->proc_name && ns->proc_name->attr.flavor == FL_MODULE))
        break;
  
    /* If the type is a class container, use the underlying derived type.  */
*************** gfc_find_derived_vtab (gfc_symbol *deriv
*** 2486,2491 ****
--- 2491,2497 ----
    /* Work in the gsymbol namespace if the top-level namespace is a module.
       This ensures that the vtable is unique, which is required since we use
       its address in SELECT TYPE.  */
+   gfc_namespace *module_ns = ns;
    if (gsym && gsym->ns && ns && ns->proc_name
        && ns->proc_name->attr.flavor == FL_MODULE)
      ns = gsym->ns;
*************** gfc_find_derived_vtab (gfc_symbol *deriv
*** 2511,2516 ****
--- 2517,2527 ----
  	gfc_find_symbol (name, ns, 0, &vtab);
        if (vtab == NULL)
  	gfc_find_symbol (name, derived->ns, 0, &vtab);
+       /* If all else fails, look in the module/submodule namespace so that
+ 	 the module variable and procedure body translations find the same
+ 	 frontend symbol and backend decl.  */
+       if (vtab == NULL && module_ns != ns)
+ 	gfc_find_symbol (name, module_ns, 0, &vtab);
  
        if (vtab == NULL)
  	{
diff -Nrcpad gcc-17-20260531/gcc/fortran/decl.cc gcc-17-20260607/gcc/fortran/decl.cc
*** gcc-17-20260531/gcc/fortran/decl.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/decl.cc	Sun Jun  7 22:32:07 2026
*************** get_proc_name (const char *name, gfc_sym
*** 1463,1469 ****
  	}
      }
  
!   /* C1246 (R1225) MODULE shall appear only in the function-stmt or
       subroutine-stmt of a module subprogram or of a nonabstract interface
       body that is declared in the scoping unit of a module or submodule.  */
    if (sym->attr.external
--- 1463,1469 ----
  	}
      }
  
!   /* F2023: C1247 (R1526) MODULE shall appear only in the function-stmt or
       subroutine-stmt of a module subprogram or of a nonabstract interface
       body that is declared in the scoping unit of a module or submodule.  */
    if (sym->attr.external
*************** get_proc_name (const char *name, gfc_sym
*** 1472,1483 ****
        && !current_attr.module_procedure
        && sym->attr.proc == PROC_MODULE
        && gfc_state_stack->state == COMP_CONTAINS)
!     {
!       gfc_error_now ("Procedure %qs defined in interface body at %L "
! 		     "clashes with internal procedure defined at %C",
! 		     name, &sym->declared_at);
!       return true;
!     }
  
    if (sym && !sym->gfc_new
        && sym->attr.flavor != FL_UNKNOWN
--- 1472,1495 ----
        && !current_attr.module_procedure
        && sym->attr.proc == PROC_MODULE
        && gfc_state_stack->state == COMP_CONTAINS)
!     gfc_error_now ("Procedure %qs defined in interface body at %L "
! 		   "clashes with internal procedure defined at %C",
! 		   name, &sym->declared_at);
! 
!   /* This is the converse requirement: The separate-module-subprogram for a
!      module procedure shall have the MODULE prefix or be declared a MODULE
!      PROCEDURE, otherwise it would be ambiguous.  */
!   if (sym->attr.module_procedure
!       && (sym->attr.subroutine || sym->attr.function)
!       && sym->attr.if_source == IFSRC_IFBODY
!       && !current_attr.module_procedure
!       && sym->attr.proc == PROC_MODULE
!       && gfc_state_stack->state == COMP_CONTAINS
!       && gfc_state_stack->previous
!       && gfc_state_stack->previous->state == COMP_SUBMODULE)
!     gfc_error_now ("Procedure %qs at %C requires the MODULE prefix because "
! 		   "it is a module procedure declared in module %qs",
! 		   name, sym->module ? sym->module : "");
  
    if (sym && !sym->gfc_new
        && sym->attr.flavor != FL_UNKNOWN
*************** variable_decl (int elem)
*** 3087,3092 ****
--- 3099,3123 ----
  	  gfc_free_array_spec (cp_as);
  	}
      }
+   else
+     {
+       /* Check to see if this is the declaration of the type and/or attributes
+ 	 of an implicit function result, emanating from a module function
+ 	 interface declared within the parent module or submodule of a
+ 	 containing submodule.  */
+       gfc_find_symbol (name, gfc_current_ns, 0, &sym);
+       if (gfc_current_state () == COMP_FUNCTION
+ 	  && sym == gfc_current_block ()
+ 	  && sym->attr.if_source == IFSRC_DECL
+ 	  && sym->attr.used_in_submodule
+ 	  && sym == sym->result
+ 	  && sym->ts.type != BT_UNKNOWN)
+ 	{
+ 	  m = MATCH_YES;
+ 	  goto cleanup;
+ 	}
+       sym = NULL;
+     }
  
    /* Procedure pointer as function result.  */
    if (gfc_current_state () == COMP_FUNCTION
*************** const ext_attr_t ext_attr_list[] = {
*** 12844,12854 ****
    { "cdecl",        EXT_ATTR_CDECL,        "cdecl"     },
    { "stdcall",      EXT_ATTR_STDCALL,      "stdcall"   },
    { "fastcall",     EXT_ATTR_FASTCALL,     "fastcall"  },
!   { "no_arg_check", EXT_ATTR_NO_ARG_CHECK, NULL        },
    { "deprecated",   EXT_ATTR_DEPRECATED,   NULL	       },
    { "noinline",     EXT_ATTR_NOINLINE,     NULL	       },
    { "noreturn",     EXT_ATTR_NORETURN,     NULL	       },
    { "weak",	    EXT_ATTR_WEAK,	   NULL	       },
    { NULL,           EXT_ATTR_LAST,         NULL        }
  };
  
--- 12875,12887 ----
    { "cdecl",        EXT_ATTR_CDECL,        "cdecl"     },
    { "stdcall",      EXT_ATTR_STDCALL,      "stdcall"   },
    { "fastcall",     EXT_ATTR_FASTCALL,     "fastcall"  },
!   { "no_arg_check", EXT_ATTR_NO_ARG_CHECK, NULL	       },
    { "deprecated",   EXT_ATTR_DEPRECATED,   NULL	       },
    { "noinline",     EXT_ATTR_NOINLINE,     NULL	       },
    { "noreturn",     EXT_ATTR_NORETURN,     NULL	       },
    { "weak",	    EXT_ATTR_WEAK,	   NULL	       },
+   { "inline",       EXT_ATTR_INLINE,       NULL	       },
+   { "always_inline",EXT_ATTR_ALWAYS_INLINE,NULL	       },
    { NULL,           EXT_ATTR_LAST,         NULL        }
  };
  
*************** gfc_match_gcc_attributes (void)
*** 12925,12930 ****
--- 12958,12984 ----
  
        sym->attr.ext_attr |= attr.ext_attr;
  
+       /* INLINE and ALWAYS_INLINE are incompatible with NOINLINE.  In the
+ 	 middle-end the DECL_UNINLINABLE flag set by NOINLINE always wins, so
+ 	 the inline request would be silently ignored.  Warn and drop it.  */
+       if (sym->attr.ext_attr & (1 << EXT_ATTR_NOINLINE))
+ 	{
+ 	  if (sym->attr.ext_attr & (1 << EXT_ATTR_ALWAYS_INLINE))
+ 	    {
+ 	      gfc_warning (0, "Attribute %<ALWAYS_INLINE%> at %C is "
+ 			   "incompatible with %<NOINLINE%> for %qs and will "
+ 			   "be ignored", sym->name);
+ 	      sym->attr.ext_attr &= ~(1 << EXT_ATTR_ALWAYS_INLINE);
+ 	    }
+ 	  if (sym->attr.ext_attr & (1 << EXT_ATTR_INLINE))
+ 	    {
+ 	      gfc_warning (0, "Attribute %<INLINE%> at %C is incompatible "
+ 			   "with %<NOINLINE%> for %qs and will be ignored",
+ 			   sym->name);
+ 	      sym->attr.ext_attr &= ~(1 << EXT_ATTR_INLINE);
+ 	    }
+ 	}
+ 
        if (gfc_match_eos () == MATCH_YES)
  	break;
  
diff -Nrcpad gcc-17-20260531/gcc/fortran/dump-parse-tree.cc gcc-17-20260607/gcc/fortran/dump-parse-tree.cc
*** gcc-17-20260531/gcc/fortran/dump-parse-tree.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/dump-parse-tree.cc	Sun Jun  7 22:32:07 2026
*************** show_omp_namelist (int list_type, gfc_om
*** 1485,1491 ****
    for (; n; n = n->next)
      {
        gfc_current_ns = ns_curr;
!       if (list_type == OMP_LIST_AFFINITY || list_type == OMP_LIST_DEPEND)
  	{
  	  gfc_current_ns = n->u2.ns ? n->u2.ns : ns_curr;
  	  if (n->u2.ns != ns_iter)
--- 1485,1493 ----
    for (; n; n = n->next)
      {
        gfc_current_ns = ns_curr;
!       if (list_type == OMP_LIST_AFFINITY || list_type == OMP_LIST_DEPEND
! 	  || list_type == OMP_LIST_MAP
! 	  || list_type == OMP_LIST_TO || list_type == OMP_LIST_FROM)
  	{
  	  gfc_current_ns = n->u2.ns ? n->u2.ns : ns_curr;
  	  if (n->u2.ns != ns_iter)
*************** show_omp_namelist (int list_type, gfc_om
*** 1497,1504 ****
  		    fputs ("AFFINITY (", dumpfile);
  		  else if (n->u.depend_doacross_op == OMP_DOACROSS_SINK_FIRST)
  		    fputs ("DOACROSS (", dumpfile);
! 		  else
  		    fputs ("DEPEND (", dumpfile);
  		}
  	      if (n->u2.ns)
  		{
--- 1499,1514 ----
  		    fputs ("AFFINITY (", dumpfile);
  		  else if (n->u.depend_doacross_op == OMP_DOACROSS_SINK_FIRST)
  		    fputs ("DOACROSS (", dumpfile);
! 		  else if (list_type == OMP_LIST_DEPEND)
  		    fputs ("DEPEND (", dumpfile);
+ 		  else if (list_type == OMP_LIST_MAP)
+ 		    fputs ("MAP (", dumpfile);
+ 		  else if (list_type == OMP_LIST_TO)
+ 		    fputs ("TO (", dumpfile);
+ 		  else if (list_type == OMP_LIST_FROM)
+ 		    fputs ("FROM (", dumpfile);
+ 		  else
+ 		    gcc_unreachable ();
  		}
  	      if (n->u2.ns)
  		{
diff -Nrcpad gcc-17-20260531/gcc/fortran/gfortran.h gcc-17-20260607/gcc/fortran/gfortran.h
*** gcc-17-20260531/gcc/fortran/gfortran.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/gfortran.h	Sun Jun  7 22:32:07 2026
*************** enum gfc_omp_at_type
*** 877,883 ****
    OMP_AT_EXECUTION
  };
  
! /* Structure and list of supported extension attributes.  */
  typedef enum
  {
    EXT_ATTR_DLLIMPORT = 0,
--- 877,889 ----
    OMP_AT_EXECUTION
  };
  
! /* Structure and list of supported extension attributes.
! 
!    The bitmask formed from these values (symbol_attribute.ext_attr) is
!    written to and read from module files, see mio_symbol_attribute.  New
!    attributes must therefore be appended at the end (before EXT_ATTR_LAST)
!    so that the existing bit positions, and thus module compatibility, are
!    preserved.  */
  typedef enum
  {
    EXT_ATTR_DLLIMPORT = 0,
*************** typedef enum
*** 890,895 ****
--- 896,903 ----
    EXT_ATTR_NOINLINE,
    EXT_ATTR_NORETURN,
    EXT_ATTR_WEAK,
+   EXT_ATTR_INLINE,
+   EXT_ATTR_ALWAYS_INLINE,
    EXT_ATTR_LAST, EXT_ATTR_NUM = EXT_ATTR_LAST
  }
  ext_attr_id_t;
*************** typedef struct gfc_omp_namelist
*** 1469,1481 ****
    union
      {
        struct gfc_omp_namelist_udr *udr;
-       struct gfc_omp_namelist_udm udm;
        gfc_namespace *ns;
        gfc_expr *allocator;
        struct gfc_symbol *traits_sym;
        struct gfc_omp_namelist *duplicate_of;
        char *init_interop;
      } u2;
    struct gfc_omp_namelist *next;
    locus where;
  }
--- 1477,1492 ----
    union
      {
        struct gfc_omp_namelist_udr *udr;
        gfc_namespace *ns;
        gfc_expr *allocator;
        struct gfc_symbol *traits_sym;
        struct gfc_omp_namelist *duplicate_of;
        char *init_interop;
      } u2;
+   union
+     {
+       struct gfc_omp_namelist_udm udm;
+     } u3;
    struct gfc_omp_namelist *next;
    locus where;
  }
diff -Nrcpad gcc-17-20260531/gcc/fortran/gfortran.texi gcc-17-20260607/gcc/fortran/gfortran.texi
*** gcc-17-20260531/gcc/fortran/gfortran.texi	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/gfortran.texi	Sun Jun  7 22:32:07 2026
*************** requires an explicit interface.
*** 3404,3409 ****
--- 3404,3417 ----
  deprecated procedure, variable or parameter; the warning can be suppressed
  with @option{-Wno-deprecated-declarations}.
  @item @code{NOINLINE} -- prevent inlining given function.
+ @item @code{INLINE} -- hint that the given function should be inlined, while
+ still respecting the inlining size limits, corresponding to the C @code{inline}
+ keyword.
+ @item @code{ALWAYS_INLINE} -- force inlining of a given function, ignoring the
+ inlining size limits.  This is the counterpart of @code{NOINLINE} and
+ corresponds to the C @code{always_inline} attribute.  @code{INLINE} and
+ @code{ALWAYS_INLINE} are incompatible with @code{NOINLINE}.  Specifying both
+ for the same procedure makes the inline attribute ignored with a warning.
  @item @code{NORETURN} -- add a hint that a given function cannot return.
  @item @code{WEAK} -- emit the declaration of an external symbol as a weak
  symbol rather than a global.  This is primarily useful in defining library
diff -Nrcpad gcc-17-20260531/gcc/fortran/gfortranspec.cc gcc-17-20260607/gcc/fortran/gfortranspec.cc
*** gcc-17-20260531/gcc/fortran/gfortranspec.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/gfortranspec.cc	Sun Jun  7 22:32:07 2026
*************** warranty; not even for MERCHANTABILITY o
*** 428,434 ****
  	}
  
        if (need_caf_shmem)
! 	append_option (OPT_l, CAF_SHMEM_LIBRARY, 1);
      }
  
  #ifdef ENABLE_SHARED_LIBGCC
--- 428,437 ----
  	}
  
        if (need_caf_shmem)
! 	{
! 	  append_option (OPT_l, CAF_SHMEM_LIBRARY, 1);
! 	  append_option (OPT_l, "pthread", 1);
! 	}
      }
  
  #ifdef ENABLE_SHARED_LIBGCC
diff -Nrcpad gcc-17-20260531/gcc/fortran/interface.cc gcc-17-20260607/gcc/fortran/interface.cc
*** gcc-17-20260531/gcc/fortran/interface.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/interface.cc	Sun Jun  7 22:32:07 2026
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 3817,3822 ****
--- 3817,3840 ----
  	  goto match;
  	}
  
+       /* F23:15.5.2.5, para 2: A procedure pointer actual argument cannot correspond
+ 	 to a data-object dummy argument (reverse of the two checks above).
+ 	 Only flag EXPR_VARIABLE to avoid false positives on function calls
+ 	 through procedure pointer components (e.g. o%f(args)).  */
+       if (!f->sym->attr.proc_pointer
+ 	  && f->sym->attr.flavor != FL_PROCEDURE
+ 	  && a->expr->expr_type == EXPR_VARIABLE
+ 	  && (a->expr->symtree->n.sym->attr.proc_pointer
+ 	      || gfc_is_proc_ptr_comp (a->expr)))
+ 	{
+ 	  if (where)
+ 	    gfc_error ("Procedure pointer actual argument at %L cannot "
+ 		       "be passed to data-object dummy argument %qs",
+ 		       &a->expr->where, f->sym->name);
+ 	  ok = false;
+ 	  goto match;
+ 	}
+ 
        /* Class array variables and expressions store array info in a
  	 different place from non-class objects; consolidate the logic
  	 to access it here instead of repeating it below.  Note that
diff -Nrcpad gcc-17-20260531/gcc/fortran/match.cc gcc-17-20260607/gcc/fortran/match.cc
*** gcc-17-20260531/gcc/fortran/match.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/match.cc	Sun Jun  7 22:32:07 2026
*************** check_coarray_assoc (const char *name, g
*** 1980,1985 ****
--- 1980,2134 ----
    return true;
  }
  
+ /* Try to resolve an EXPR_FUNCTION operand so its return type is known.
+    Called during ASSOCIATE selector parsing, before type-bound operator
+    extension, when the operand is an unresolved generic constructor call
+    such as `scalar_1D_t(initializer, order=2, ...)`.  Errors are suppressed
+    since we are still in the parsing phase.  */
+ 
+ static void
+ resolve_assoc_operand (gfc_expr *e)
+ {
+   if (!e || e->ts.type != BT_UNKNOWN || e->expr_type != EXPR_FUNCTION)
+     return;
+ 
+   /* First, try full expression resolution (works when argument types are
+      already known at parse time).  */
+   gfc_push_suppress_errors ();
+   gfc_resolve_expr (e);
+   gfc_pop_suppress_errors ();
+ 
+   if (e->ts.type != BT_UNKNOWN)
+     return;
+ 
+   /* Fallback for generic constructor interfaces such as
+        scalar_1D_t(initializer, order=2, cells=16, x_min=0D0, x_max=5D0)
+      where full argument resolution is not possible at parse time.
+      If the function name resolves to a generic interface that wraps a
+      derived type (a constructor interface), infer the return type as
+      that derived type.  */
+   if (!e->symtree || !e->symtree->n.sym)
+     return;
+ 
+   gfc_symbol *dt_sym = gfc_find_dt_in_generic (e->symtree->n.sym);
+   if (dt_sym && gfc_fl_struct (dt_sym->attr.flavor))
+     {
+       e->ts.type = BT_DERIVED;
+       e->ts.u.derived = dt_sym;
+     }
+ }
+ 
+ /* Infer the return type of a type-bound user-defined operator without
+    converting the expression node or triggering gfc_resolve_symbol on the
+    return type.  This is used during ASSOCIATE selector parsing to propagate
+    type information bottom-up through nested UDO expressions such as
+    (.div. (.grad. x)), so that the outer gfc_extend_expr can locate the
+    type-bound .div. once the type of (.grad. x) is known.
+ 
+    Calling gfc_extend_expr for this purpose would partially resolve the
+    return type's derived-type symbol (setting resolve_symbol_called before
+    resolve_typebound_procedures has run), which prevents the subsequent
+    outer gfc_extend_expr from properly resolving the type-bound operator
+    on the return type.  We avoid that by reading the return type directly
+    from the procedure's result variable without triggering resolution.  */
+ 
+ static void
+ infer_typebound_uop_type (gfc_expr *e)
+ {
+   if (!e || e->expr_type != EXPR_OP || e->value.op.op != INTRINSIC_USER
+       || e->ts.type != BT_UNKNOWN)
+     return;
+ 
+   /* Find the operand and strip parentheses.  */
+   gfc_expr *operand = e->value.op.op1;
+   while (operand && operand->expr_type == EXPR_OP
+ 	 && operand->value.op.op == INTRINSIC_PARENTHESES)
+     operand = operand->value.op.op1;
+ 
+   if (!operand || operand->ts.type != BT_DERIVED || !operand->ts.u.derived)
+     return;
+ 
+   /* Look up the UDO binding in the derived type's namespace (and its
+      parent types, via the recursion in find_typebound_proc_uop).  This
+      does not call resolve_symbol, so it leaves resolve_symbol_called
+      untouched for all types involved.  */
+   bool ok = true;
+   gfc_symtree *tb_uop
+     = gfc_find_typebound_user_op (operand->ts.u.derived, &ok,
+ 				  e->value.op.uop->name, false, NULL);
+   if (!tb_uop || !tb_uop->n.tb)
+     return;
+ 
+   gfc_typebound_proc *tb = tb_uop->n.tb;
+   if (!tb->is_generic || !tb->u.generic)
+     return;
+ 
+   /* Take the first specific binding.  specific_st is set from module reading;
+      its n.tb is the gfc_typebound_proc for that specific binding (same as
+      what resolve_typebound_procedures later stores in g->specific).  Follow
+      the chain specific_st->n.tb->u.specific->n.sym to reach the actual
+      implementing function symbol, whose ts holds the return type.
+      This mirrors what build_compcall_for_operator does via
+      g->specific->u.specific->n.sym->ts after resolution.  */
+   gfc_tbp_generic *g = tb->u.generic;
+   if (!g->specific_st || !g->specific_st->n.tb)
+     return;
+ 
+   gfc_typebound_proc *specific_tb = g->specific_st->n.tb;
+   if (specific_tb->is_generic || !specific_tb->u.specific
+       || !specific_tb->u.specific->n.sym)
+     return;
+ 
+   gfc_symbol *proc = specific_tb->u.specific->n.sym;
+   if (proc->ts.type != BT_UNKNOWN)
+     e->ts = proc->ts;
+ }
+ 
+ /* Recursively propagate type information bottom-up through a nested UDO
+    expression tree so that when gfc_extend_expr is called on the outermost
+    operator during ASSOCIATE selector parsing, the inner operands already have
+    their types set and the type-bound lookup can succeed.  Uses
+    infer_typebound_uop_type rather than gfc_extend_expr to avoid triggering
+    resolve_symbol on the return types, which would prevent the outer
+    gfc_extend_expr from working correctly.  */
+ 
+ static void
+ extend_assoc_op (gfc_expr *e)
+ {
+   if (!e || e->expr_type != EXPR_OP)
+     return;
+ 
+   /* Bottom-up: process children first.  */
+   extend_assoc_op (e->value.op.op1);
+   extend_assoc_op (e->value.op.op2);
+ 
+   /* Propagate the child's type upward through parentheses nodes.
+      gfc_extend_expr's matching_typebound_op checks ts.type BEFORE stripping
+      INTRINSIC_PARENTHESES wrappers, so an untyped parentheses node prevents
+      the outer operator from being found.  */
+   if (e->value.op.op == INTRINSIC_PARENTHESES
+       && e->ts.type == BT_UNKNOWN
+       && e->value.op.op1
+       && e->value.op.op1->ts.type != BT_UNKNOWN)
+     {
+       e->ts = e->value.op.op1->ts;
+       return;
+     }
+ 
+   /* Only handle unresolved user-defined operators.  */
+   if (e->value.op.op != INTRINSIC_USER || e->ts.type != BT_UNKNOWN)
+     return;
+ 
+   /* Try to infer the type of each operand if it is an unresolved constructor
+      call (EXPR_FUNCTION whose return type is still BT_UNKNOWN).  */
+   resolve_assoc_operand (e->value.op.op1);
+   resolve_assoc_operand (e->value.op.op2);
+ 
+   /* Infer this operator's return type from the type-bound procedure's result
+      variable, without calling gfc_resolve_symbol on the return type.  */
+   infer_typebound_uop_type (e);
+ }
+ 
  match
  match_association_list (bool for_change_team = false)
  {
*************** match_association_list (bool for_change_
*** 2142,2153 ****
  	    }
  	}
        else if (newAssoc->target->ts.type == BT_UNKNOWN
! 	       && newAssoc->target->expr_type == EXPR_OP)
  	{
! 	  /* This will work for sure if the operator is type bound to a use
! 	     associated derived type.  */
! 	  gfc_expr *tmp =gfc_copy_expr (newAssoc->target);
! 	  if (gfc_extend_expr (tmp) == MATCH_YES)
  	    gfc_replace_expr (newAssoc->target, tmp);
  	  else
  	    gfc_free_expr (tmp);
--- 2291,2327 ----
  	    }
  	}
        else if (newAssoc->target->ts.type == BT_UNKNOWN
! 	       && newAssoc->target->expr_type == EXPR_OP
! 	       && newAssoc->target->value.op.op == INTRINSIC_USER)
  	{
! 	  /* If the selector is an unresolved type-bound user-defined operator
! 	     expression, try to extend it now so the associate name gets a usable
! 	     type.  For nested operators such as
! 	       (.div. (.grad. x))
! 	     first propagate types bottom-up through the inner operands
! 	     (extend_assoc_op).  For a direct operator applied to a constructor
! 	     call such as
! 	       (.div. vector_t(init_fn, n=8))
! 	     additionally resolve the direct operands as constructor calls
! 	     (resolve_assoc_operand).  Then call gfc_extend_expr on the
! 	     outermost operator.  Only handle INTRINSIC_USER here; arithmetic
! 	     operators are left to the normal resolution pass.  */
! 	  gfc_expr *tmp = gfc_copy_expr (newAssoc->target);
! 	  extend_assoc_op (tmp->value.op.op1);
! 	  extend_assoc_op (tmp->value.op.op2);
! 	  resolve_assoc_operand (tmp->value.op.op1);
! 	  resolve_assoc_operand (tmp->value.op.op2);
! 	  /* Suppress errors from gfc_extend_expr: during parsing the full
! 	     resolution has not run yet, so gfc_resolve_expr(COMPCALL) may
! 	     fail even when the type-bound operator was found and the node
! 	     was correctly converted to EXPR_COMPCALL.  Accept the conversion
! 	     in that case and let the normal resolution pass finish it.  */
! 	  gfc_push_suppress_errors ();
! 	  match ext_m = gfc_extend_expr (tmp);
! 	  gfc_pop_suppress_errors ();
! 	  if (ext_m == MATCH_YES
! 	      || (tmp->expr_type == EXPR_COMPCALL
! 		  && tmp->ts.type != BT_UNKNOWN))
  	    gfc_replace_expr (newAssoc->target, tmp);
  	  else
  	    gfc_free_expr (tmp);
*************** gfc_free_namelist (gfc_namelist *name)
*** 6341,6347 ****
  void
  gfc_free_omp_namelist (gfc_omp_namelist *name, enum gfc_omp_list_type list)
  {
!   bool free_ns = (list == OMP_LIST_AFFINITY || list == OMP_LIST_DEPEND);
    bool free_align_allocator = (list == OMP_LIST_ALLOCATE);
    bool free_mem_traits_space = (list == OMP_LIST_USES_ALLOCATORS);
    bool free_init = (list == OMP_LIST_INIT);
--- 6515,6523 ----
  void
  gfc_free_omp_namelist (gfc_omp_namelist *name, enum gfc_omp_list_type list)
  {
!   bool free_ns = (list == OMP_LIST_AFFINITY || list == OMP_LIST_DEPEND
! 		  || list == OMP_LIST_MAP
! 		  || list == OMP_LIST_TO || list == OMP_LIST_FROM);
    bool free_align_allocator = (list == OMP_LIST_ALLOCATE);
    bool free_mem_traits_space = (list == OMP_LIST_USES_ALLOCATORS);
    bool free_init = (list == OMP_LIST_INIT);
*************** gfc_free_omp_namelist (gfc_omp_namelist
*** 6380,6386 ****
  	    }
  	}
        else if (free_mapper)
! 	{ } /* For now, u2.udm is not a pointer.  */
        else if (!free_mapper && name->u2.udr)
  	{
  	  if (name->u2.udr->combiner)
--- 6556,6562 ----
  	    }
  	}
        else if (free_mapper)
! 	{ } /* For now, u3.udm is not a pointer.  */
        else if (!free_mapper && name->u2.udr)
  	{
  	  if (name->u2.udr->combiner)
diff -Nrcpad gcc-17-20260531/gcc/fortran/module.cc gcc-17-20260607/gcc/fortran/module.cc
*** gcc-17-20260531/gcc/fortran/module.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/module.cc	Sun Jun  7 22:32:07 2026
*************** write_symtree (gfc_symtree *st)
*** 6643,6649 ****
  	&& sym->ns->proc_name->attr.if_source == IFSRC_IFBODY)
      return;
  
!   if (!gfc_check_symbol_access (sym)
        || (sym->attr.flavor == FL_PROCEDURE && sym->attr.generic
  	  && !sym->attr.subroutine && !sym->attr.function))
      return;
--- 6643,6650 ----
  	&& sym->ns->proc_name->attr.if_source == IFSRC_IFBODY)
      return;
  
!   if ((!gfc_check_symbol_access (sym)
!        && (!sym->attr.public_used || submodule_name == NULL))
        || (sym->attr.flavor == FL_PROCEDURE && sym->attr.generic
  	  && !sym->attr.subroutine && !sym->attr.function))
      return;
*************** gfc_use_module (gfc_use_list *module)
*** 7670,7676 ****
    only_flag = module->only_flag;
    current_intmod = INTMOD_NONE;
  
!   if (!only_flag)
      gfc_warning_now (OPT_Wuse_without_only,
  		     "USE statement at %C has no ONLY qualifier");
  
--- 7671,7677 ----
    only_flag = module->only_flag;
    current_intmod = INTMOD_NONE;
  
!   if (!only_flag && gfc_state_stack->state != COMP_SUBMODULE)
      gfc_warning_now (OPT_Wuse_without_only,
  		     "USE statement at %C has no ONLY qualifier");
  
diff -Nrcpad gcc-17-20260531/gcc/fortran/openmp.cc gcc-17-20260607/gcc/fortran/openmp.cc
*** gcc-17-20260531/gcc/fortran/openmp.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/openmp.cc	Sun Jun  7 22:32:07 2026
*************** gfc_match_motion_var_list (const char *s
*** 1439,1454 ****
    if (m != MATCH_YES)
      return m;
  
!   match m_present = gfc_match (" present : ");
  
    m = gfc_match_omp_variable_list ("", list, false, NULL, headp, true, true);
    if (m != MATCH_YES)
      return m;
!   if (m_present == MATCH_YES)
      {
!       gfc_omp_namelist *n;
!       for (n = **headp; n; n = n->next)
  	n->u.present_modifier = true;
      }
    return MATCH_YES;
  }
--- 1439,1526 ----
    if (m != MATCH_YES)
      return m;
  
!   gfc_namespace *ns_iter = NULL, *ns_curr = gfc_current_ns;
!   locus old_loc = gfc_current_locus;
!   int present_modifier = 0;
!   int iterator_modifier = 0;
!   locus second_present_locus = old_loc;
!   locus second_iterator_locus = old_loc;
!   bool saw_modifier = false;
! 
!   for (;;)
!     {
!       locus current_locus = gfc_current_locus;
!       if (gfc_match ("present ") == MATCH_YES)
! 	{
! 	  if (present_modifier++ == 1)
! 	    second_present_locus = current_locus;
! 	}
!       else if (gfc_match_iterator (&ns_iter, true) == MATCH_YES)
! 	{
! 	  if (iterator_modifier++ == 1)
! 	    second_iterator_locus = current_locus;
! 	}
!       else if (!saw_modifier)
! 	break;
!       else
! 	{
! 	  gfc_error ("Expected clause modifier at %C");
! 	  return MATCH_ERROR;
! 	}
! 
!       /* OpenMP 5.1 syntax mistakenly allowed commas to be optional
! 	 between and after modifiers in a clause.  This was corrected
! 	 in 5.2 and later specifications: they're now required between
! 	 modifiers and a trailing comma is not permitted.  We implement
! 	 the 5.2 syntax here.  */
!       saw_modifier = true;
!       if (gfc_match (" : ") == MATCH_YES)
! 	break;
!       else if (gfc_match (", ") == MATCH_YES)
! 	continue;
!       else
! 	{
! 	  gfc_error ("Expected %<,%> or %<:%> after clause modifier at %C");
! 	  return MATCH_ERROR;
! 	}
!     }
! 
!   if (!saw_modifier)
!     {
!       gfc_current_locus = old_loc;
!       present_modifier = 0;
!       iterator_modifier = 0;
!     }
! 
!   if (present_modifier > 1)
!     {
!       gfc_error ("Too many %<present%> modifiers at %L", &second_present_locus);
!       return MATCH_ERROR;
!     }
!   if (iterator_modifier > 1)
!     {
!       gfc_error ("Too many %<iterator%> modifiers at %L",
! 		 &second_iterator_locus);
!       return MATCH_ERROR;
!     }
! 
!   if (ns_iter)
!     gfc_current_ns = ns_iter;
  
    m = gfc_match_omp_variable_list ("", list, false, NULL, headp, true, true);
+   gfc_current_ns = ns_curr;
    if (m != MATCH_YES)
      return m;
!   gfc_omp_namelist *n;
!   for (n = **headp; n; n = n->next)
      {
!       if (present_modifier)
  	n->u.present_modifier = true;
+       if (iterator_modifier)
+ 	{
+ 	  n->u2.ns = ns_iter;
+ 	  ns_iter->refs++;
+ 	}
      }
    return MATCH_YES;
  }
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 3735,3745 ****
--- 3807,3820 ----
  	      int close_modifier = 0;
  	      int present_modifier = 0;
  	      int mapper_modifier = 0;
+ 	      int iterator_modifier = 0;
+ 	      gfc_namespace *ns_iter = NULL, *ns_curr = gfc_current_ns;
  	      locus second_always_locus = old_loc2;
  	      locus second_close_locus = old_loc2;
  	      locus second_mapper_locus = old_loc2;
  	      locus second_present_locus = old_loc2;
  	      char mapper_id[GFC_MAX_SYMBOL_LEN + 1] = { '\0' };
+ 	      locus second_iterator_locus = old_loc2;
  
  	      for (;;)
  		{
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 3767,3772 ****
--- 3842,3852 ----
  		      if (m != MATCH_YES)
  			goto error;
  		    }
+ 		  else if (gfc_match_iterator (&ns_iter, true) == MATCH_YES)
+ 		    {
+ 		      if (iterator_modifier++ == 1)
+ 		      second_iterator_locus = current_locus;
+ 		    }
  		  else
  		    break;
  		  if (gfc_match (", ") != MATCH_YES)
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 3835,3851 ****
  			     &second_mapper_locus);
  		  break;
  		}
  
  	      head = NULL;
! 	      if (gfc_match_omp_variable_list ("", &c->lists[OMP_LIST_MAP],
! 					       false, NULL, &head,
! 					       true, true) == MATCH_YES)
  		{
  		  gfc_omp_namelist *n;
  		  for (n = *head; n; n = n->next)
  		    {
  		      n->u.map.op = map_op;
- 
  		      gfc_typespec *ts;
  		      if (n->expr)
  			ts = &n->expr->ts;
--- 3915,3939 ----
  			     &second_mapper_locus);
  		  break;
  		}
+ 	      if (iterator_modifier > 1)
+ 		{
+ 		  gfc_error ("too many %<iterator%> modifiers at %L",
+ 			     &second_iterator_locus);
+ 		  break;
+ 		}
  
  	      head = NULL;
! 	      if (ns_iter)
! 		gfc_current_ns = ns_iter;
! 	      m = gfc_match_omp_variable_list ("", &c->lists[OMP_LIST_MAP],
! 					       false, NULL, &head, true, true);
! 	      gfc_current_ns = ns_curr;
! 	      if (m == MATCH_YES)
  		{
  		  gfc_omp_namelist *n;
  		  for (n = *head; n; n = n->next)
  		    {
  		      n->u.map.op = map_op;
  		      gfc_typespec *ts;
  		      if (n->expr)
  			ts = &n->expr->ts;
*************** gfc_match_omp_clauses (gfc_omp_clauses *
*** 3856,3863 ****
  			= gfc_find_omp_udm (gfc_current_ns, mapper_id, ts);
  		      if (udm)
  			{
! 			  n->u2.udm.udm = udm;
  			}
  		    }
  		  continue;
  		}
--- 3944,3954 ----
  			= gfc_find_omp_udm (gfc_current_ns, mapper_id, ts);
  		      if (udm)
  			{
! 			  n->u3.udm.udm = udm;
  			}
+ 		      n->u2.ns = ns_iter;
+ 		      if (ns_iter)
+ 			ns_iter->refs++;
  		    }
  		  continue;
  		}
*************** gfc_omp_requires_add_clause (gfc_omp_req
*** 7854,7859 ****
--- 7945,7956 ----
        if (gfc_state_stack->previous
  	  && gfc_state_stack->previous->state == COMP_INTERFACE)
  	break;
+       /* A submodule namespace may have its parent set to the ancestor module
+ 	 for host-association purposes.  Do not escape the submodule boundary:
+ 	 the submodule itself is the program unit for OMP REQUIRES purposes.  */
+       if (prog_unit->proc_name
+ 	  && prog_unit->proc_name->attr.flavor == FL_MODULE)
+ 	break;
        prog_unit = prog_unit->parent;
      }
  
*************** gfc_match_omp_requires (void)
*** 7937,7943 ****
--- 8034,8046 ----
    bool first = true;
    locus old_loc;
  
+   /* A submodule's namespace may have its parent pointer set to the ancestor
+      module namespace for host-association purposes.  The submodule spec part
+      is still a valid program-unit spec part for OMP REQUIRES.  Only reject
+      the directive when we are genuinely nested inside a procedure.  */
    if (gfc_current_ns->parent
+       && !(gfc_current_ns->proc_name
+ 	   && gfc_current_ns->proc_name->attr.flavor == FL_MODULE)
        && (!gfc_state_stack->previous
  	  || gfc_state_stack->previous->state != COMP_INTERFACE))
      {
*************** gfc_match_omp_atomic (void)
*** 8475,8481 ****
    if (c->memorder == OMP_MEMORDER_UNSET)
      {
        gfc_namespace *prog_unit = gfc_current_ns;
!       while (prog_unit->parent)
  	prog_unit = prog_unit->parent;
        switch (prog_unit->omp_requires & OMP_REQ_ATOMIC_MEM_ORDER_MASK)
  	{
--- 8578,8586 ----
    if (c->memorder == OMP_MEMORDER_UNSET)
      {
        gfc_namespace *prog_unit = gfc_current_ns;
!       while (prog_unit->parent
! 	     && !(prog_unit->proc_name
! 		  && prog_unit->proc_name->attr.flavor == FL_MODULE))
  	prog_unit = prog_unit->parent;
        switch (prog_unit->omp_requires & OMP_REQ_ATOMIC_MEM_ORDER_MASK)
  	{
*************** resolve_omp_clauses (gfc_code *code, gfc
*** 10014,10020 ****
  	  case OMP_LIST_CACHE:
  	    for (; n != NULL; n = n->next)
  	      {
! 		if ((list == OMP_LIST_DEPEND || list == OMP_LIST_AFFINITY)
  		    && n->u2.ns && !n->u2.ns->resolved)
  		  {
  		    n->u2.ns->resolved = 1;
--- 10119,10127 ----
  	  case OMP_LIST_CACHE:
  	    for (; n != NULL; n = n->next)
  	      {
! 		if ((list == OMP_LIST_DEPEND || list == OMP_LIST_AFFINITY
! 		     || list == OMP_LIST_MAP
! 		     || list == OMP_LIST_TO || list == OMP_LIST_FROM)
  		    && n->u2.ns && !n->u2.ns->resolved)
  		  {
  		    n->u2.ns->resolved = 1;
diff -Nrcpad gcc-17-20260531/gcc/fortran/parse.cc gcc-17-20260607/gcc/fortran/parse.cc
*** gcc-17-20260531/gcc/fortran/parse.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/parse.cc	Sun Jun  7 22:32:07 2026
*************** parse_module (void)
*** 7397,7402 ****
--- 7397,7428 ----
      {
        use_modules ();
        gfc_traverse_ns (gfc_current_ns, set_syms_host_assoc);
+ 
+       /* Link the submodule namespace to the parent (sub)module namespace so
+ 	 that internal subprograms of the ancestor module are accessible via
+ 	 host association (Fortran 2018, 14.6.1.3).  The parent namespace is
+ 	 already in gfc_global_ns_list when both units are compiled together.
+ 	 The submodule's fully-qualified name is "parent.child"; strip the
+ 	 child part to obtain the parent's name, then search the global list.  */
+       {
+ 	const char *submod_name = gfc_new_block->name;
+ 	const char *dot = strrchr (submod_name, '.');
+ 	if (dot != NULL)
+ 	  {
+ 	    size_t plen = (size_t) (dot - submod_name);
+ 	    char parent_name[GFC_MAX_SYMBOL_LEN + 1];
+ 	    gcc_assert (plen < sizeof (parent_name));
+ 	    memcpy (parent_name, submod_name, plen);
+ 	    parent_name[plen] = '\0';
+ 	    for (gfc_namespace *ns = gfc_global_ns_list; ns; ns = ns->sibling)
+ 	      if (ns->proc_name
+ 		  && strcmp (ns->proc_name->name, parent_name) == 0)
+ 		{
+ 		  gfc_current_ns->parent = ns;
+ 		  break;
+ 		}
+ 	  }
+       }
      }
  
    st = parse_spec (ST_NONE);
*************** clean_up_modules (gfc_gsymbol *&gsym)
*** 7555,7560 ****
--- 7581,7591 ----
    if (gsym->ns)
      {
        gfc_current_ns = gsym->ns;
+       /* Disconnect any host-association parent link set for submodules
+ 	 (see parse_module): each module/submodule namespace in gfc_gsym_root
+ 	 is independently managed, so gfc_symbol_done_2 must not walk up to
+ 	 and double-free a sibling top-level namespace.  */
+       gfc_current_ns->parent = NULL;
        gfc_derived_types = gfc_current_ns->derived_types;
        gfc_done_2 ();
        gsym->ns = NULL;
diff -Nrcpad gcc-17-20260531/gcc/fortran/primary.cc gcc-17-20260607/gcc/fortran/primary.cc
*** gcc-17-20260531/gcc/fortran/primary.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/primary.cc	Sun Jun  7 22:32:07 2026
*************** gfc_match_varspec (gfc_expr *primary, in
*** 2715,2720 ****
--- 2715,2733 ----
  		primary->value.compcall.actual = NULL;
  	      else
  		{
+ 		  /* Before erroring, check whether there is also a data
+ 		     component with this name.  Use noaccess=true so
+ 		     that private components are also found.  */
+ 		  if (sym && gfc_find_component (sym, name, true, true, NULL))
+ 		    {
+ 		      /* Restore expr to EXPR_VARIABLE and let the data
+ 			 component path below handle it.  */
+ 		      primary->expr_type = EXPR_VARIABLE;
+ 		      gfc_free_actual_arglist (primary->value.compcall.actual);
+ 		      primary->value.compcall.actual = NULL;
+ 		      tbp = NULL;
+ 		      goto try_data_component;
+ 		    }
  		  gfc_error ("Expected argument list at %C");
  		  return MATCH_ERROR;
  		}
*************** gfc_match_varspec (gfc_expr *primary, in
*** 2723,2732 ****
  	  break;
  	}
  
        previous = component;
  
        if (!inquiry && !intrinsic)
! 	component = gfc_find_component (sym, name, false, false, &tmp);
        else
  	component = NULL;
  
--- 2736,2757 ----
  	  break;
  	}
  
+     try_data_component:
+ 
        previous = component;
  
        if (!inquiry && !intrinsic)
! 	{
! 	  component = gfc_find_component (sym, name, false, false, &tmp);
! 	  /* For inferred-type ASSOCIATE names the parse-time candidate type
! 	     may not be the final type; a private component in the candidate
! 	     type may correspond to a public component in the correct type.
! 	     Accept it tentatively so that resolution can fix up the type.  */
! 	  if (!component && !tbp
! 	      && primary->symtree && primary->symtree->n.sym->assoc
! 	      && primary->symtree->n.sym->assoc->inferred_type)
! 	    component = gfc_find_component (sym, name, true, false, &tmp);
! 	}
        else
  	component = NULL;
  
diff -Nrcpad gcc-17-20260531/gcc/fortran/resolve.cc gcc-17-20260607/gcc/fortran/resolve.cc
*** gcc-17-20260531/gcc/fortran/resolve.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/resolve.cc	Sun Jun  7 22:32:07 2026
*************** check_default_none_expr (gfc_expr **e, i
*** 8597,8611 ****
  	      ns2 = ns2->parent;
  	    }
  
! 	  /* A DO CONCURRENT iterator cannot appear in a locality spec.  */
! 	  if (sym->ns->code->ext.concur.forall_iterator)
  	    {
! 	      gfc_forall_iterator *iter
! 		= sym->ns->code->ext.concur.forall_iterator;
! 	      for (; iter; iter = iter->next)
! 		if (iter->var->symtree
! 		    && strcmp(sym->name, iter->var->symtree->name) == 0)
! 		  return 0;
  	    }
  
  	  /* A named constant is not a variable, so skip test.  */
--- 8597,8619 ----
  	      ns2 = ns2->parent;
  	    }
  
! 	  /* A DO CONCURRENT iterator cannot appear in a locality spec.
! 	     Use d->code (the DO CONCURRENT node) rather than sym->ns->code,
! 	     which may be a different code type (e.g. EXEC_ASSOCIATE) whose
! 	     ext union would be read incorrectly.  */
! 	  for (gfc_forall_iterator *iter = d->code->ext.concur.forall_iterator;
! 	       iter; iter = iter->next)
  	    {
! 	      if (!iter->var || !iter->var->symtree)
! 		continue;
! 	      const char *iter_name = iter->var->symtree->name;
! 	      /* Shadow iterators (from inline type-spec: integer :: i = ...)
! 		 store the iterator with a leading underscore internally; the
! 		 user-visible name does not have the underscore.  */
! 	      if (iter->shadow)
! 		iter_name++;
! 	      if (strcmp (sym->name, iter_name) == 0)
! 		return 0;
  	    }
  
  	  /* A named constant is not a variable, so skip test.  */
*************** gfc_count_forall_iterators (gfc_code *co
*** 12614,12620 ****
     3) call gfc_resolve_forall_body to resolve the FORALL body.  */
  
  /* Custom recursive expression walker that replaces symbols.
!    This ensures we visit ALL expressions including those in array subscripts.  */
  
  static void
  replace_in_expr_recursive (gfc_expr *expr, gfc_symbol *old_sym, gfc_symtree *new_st)
--- 12622,12629 ----
     3) call gfc_resolve_forall_body to resolve the FORALL body.  */
  
  /* Custom recursive expression walker that replaces symbols.
!    Visits all expressions including array subscripts.  Also called from
!    replace_in_code_recursive to handle ASSOCIATE selector expressions.  */
  
  static void
  replace_in_expr_recursive (gfc_expr *expr, gfc_symbol *old_sym, gfc_symtree *new_st)
*************** replace_in_code_recursive (gfc_code *cod
*** 12741,12746 ****
--- 12750,12768 ----
  	     they'll be handled separately */
  	  break;
  
+ 	case EXEC_BLOCK:
+ 	  /* Replace in ASSOCIATE selector expressions and the body.
+ 	     The body of an EXEC_BLOCK lives in c->ext.block.ns->code, not
+ 	     c->block->next, so without this case both selectors and body
+ 	     are silently skipped, leaving shadow iterator references unreplaced
+ 	     and producing wrong values at runtime.  */
+ 	  for (gfc_association_list *alist = c->ext.block.assoc;
+ 	       alist; alist = alist->next)
+ 	    replace_in_expr_recursive (alist->target, old_sym, new_st);
+ 	  if (c->ext.block.ns)
+ 	    replace_in_code_recursive (c->ext.block.ns->code, old_sym, new_st);
+ 	  break;
+ 
  	default:
  	  break;
  	}
*************** resolve_typebound_procedures (gfc_symbol
*** 17218,17230 ****
    int op;
    gfc_symbol* super_type;
  
!   if (!derived->f2k_derived || !derived->f2k_derived->tb_sym_root)
!     return true;
! 
    super_type = gfc_get_derived_super_type (derived);
    if (super_type)
      resolve_symbol (super_type);
  
    resolve_bindings_derived = derived;
    resolve_bindings_result = true;
  
--- 17240,17256 ----
    int op;
    gfc_symbol* super_type;
  
!   /* Resolve the super-type first so that inherited bindings (including
!      user operators) are fully resolved before we look them up via
!      gfc_find_typebound_user_op.  This must happen even when 'derived'
!      has no direct type-bound bindings of its own.  */
    super_type = gfc_get_derived_super_type (derived);
    if (super_type)
      resolve_symbol (super_type);
  
+   if (!derived->f2k_derived || !derived->f2k_derived->tb_sym_root)
+     return true;
+ 
    resolve_bindings_derived = derived;
    resolve_bindings_result = true;
  
diff -Nrcpad gcc-17-20260531/gcc/fortran/symbol.cc gcc-17-20260607/gcc/fortran/symbol.cc
*** gcc-17-20260531/gcc/fortran/symbol.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/symbol.cc	Sun Jun  7 22:32:07 2026
*************** gfc_copy_attr (symbol_attribute *dest, s
*** 2224,2229 ****
--- 2224,2231 ----
      goto fail;
    if (src->recursive && !gfc_add_recursive (dest, where))
      goto fail;
+   if (src->always_explicit)
+     dest->always_explicit = 1;
  
    if (src->flavor != FL_UNKNOWN
        && !gfc_add_flavor (dest, src->flavor, NULL, where))
diff -Nrcpad gcc-17-20260531/gcc/fortran/trans-array.cc gcc-17-20260607/gcc/fortran/trans-array.cc
*** gcc-17-20260531/gcc/fortran/trans-array.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/trans-array.cc	Sun Jun  7 22:32:07 2026
*************** is_pointer (gfc_expr *e)
*** 9231,9236 ****
--- 9231,9264 ----
    return sym->attr.pointer || sym->attr.proc_pointer;
  }
  
+ /* Assumed-rank actual argument: the caller only allocates storage for dtype
+    rank dimensions. Copying GFC_MAX_DIMENSIONS dim entries would read past the
+    physical end of the descriptor. Copy the header fields explicitly and use a
+    runtime-sized memcpy for the dim[] entries.  */
+ void
+ gfc_resize_assumed_rank_dim_field (gfc_se *se, stmtblock_t *block, tree desc)
+ {
+   tree rank, dim_field, dim_size, copy_size, dst_ptr, src_ptr;
+ 
+   gfc_conv_descriptor_data_set (block, desc,
+ 				gfc_conv_descriptor_data_get (se->expr));
+   gfc_conv_descriptor_offset_set (block, desc,
+ 				  gfc_conv_descriptor_offset_get (se->expr));
+   gfc_add_modify (block, gfc_conv_descriptor_dtype (desc),
+ 		  gfc_conv_descriptor_dtype (se->expr));
+   rank = fold_convert (size_type_node, gfc_conv_descriptor_rank (se->expr));
+   dim_field = gfc_get_descriptor_dimension (se->expr);
+   dim_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (dim_field)));
+   copy_size = fold_build2_loc (input_location, MULT_EXPR,
+ 			       size_type_node, rank, dim_size);
+   dst_ptr = gfc_build_addr_expr (pvoid_type_node,
+ 				 gfc_get_descriptor_dimension (desc));
+   src_ptr = gfc_build_addr_expr (pvoid_type_node, dim_field);
+   gfc_add_expr_to_block (block, build_call_expr_loc (input_location,
+ 			 builtin_decl_explicit (BUILT_IN_MEMCPY),
+ 			 3, dst_ptr, src_ptr, copy_size));
+ }
+ 
  /* Convert an array for passing as an actual parameter.  */
  
  void
*************** gfc_conv_array_parameter (gfc_se *se, gf
*** 9505,9511 ****
  	      gfc_conv_descriptor_offset_set (&block, arr, gfc_index_zero_node);
  	      se->expr = arr;
  	    }
! 	  gfc_class_array_data_assign (&block, tmp, se->expr, true);
  
  	  /* Handle optional.  */
  	  if (fsym && fsym->attr.optional && sym && sym->attr.optional)
--- 9533,9544 ----
  	      gfc_conv_descriptor_offset_set (&block, arr, gfc_index_zero_node);
  	      se->expr = arr;
  	    }
! 	  if (expr->rank == -1)
! 	    gfc_resize_assumed_rank_dim_field (se, &block, tmp);
! 	  else if (CLASS_DATA (fsym)->as->rank == -1)
! 	    gfc_class_array_data_assign (&block, tmp, se->expr, false);
! 	  else
! 	    gfc_class_array_data_assign (&block, tmp, se->expr, true);
  
  	  /* Handle optional.  */
  	  if (fsym && fsym->attr.optional && sym && sym->attr.optional)
diff -Nrcpad gcc-17-20260531/gcc/fortran/trans-decl.cc gcc-17-20260607/gcc/fortran/trans-decl.cc
*** gcc-17-20260531/gcc/fortran/trans-decl.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/trans-decl.cc	Sun Jun  7 22:32:07 2026
*************** build_function_decl (gfc_symbol * sym, b
*** 2673,2678 ****
--- 2673,2688 ----
    if (attr.ext_attr & (1 << EXT_ATTR_NOINLINE))
      DECL_UNINLINABLE (fndecl) = 1;
  
+   /* Mark inline functions.  Fortran has no 'inline' keyword, so both INLINE
+      and ALWAYS_INLINE set DECL_DECLARED_INLINE_P explicitly.  ALWAYS_INLINE
+      additionally disregards the inliner's size limits.  Setting only that
+      would make the middle-end warn that the always-inline function "might
+      not be inlinable".  */
+   if (attr.ext_attr & ((1 << EXT_ATTR_INLINE) | (1 << EXT_ATTR_ALWAYS_INLINE)))
+     DECL_DECLARED_INLINE_P (fndecl) = 1;
+   if (attr.ext_attr & (1 << EXT_ATTR_ALWAYS_INLINE))
+     DECL_DISREGARD_INLINE_LIMITS (fndecl) = 1;
+ 
    /* Mark noreturn functions.  */
    if (attr.ext_attr & (1 << EXT_ATTR_NORETURN))
      TREE_THIS_VOLATILE (fndecl) = 1;
diff -Nrcpad gcc-17-20260531/gcc/fortran/trans-expr.cc gcc-17-20260607/gcc/fortran/trans-expr.cc
*** gcc-17-20260531/gcc/fortran/trans-expr.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/trans-expr.cc	Sun Jun  7 22:32:07 2026
*************** gfc_conv_derived_to_class (gfc_se *parms
*** 1028,1034 ****
  	    {
  	      *derived_array
  		= gfc_create_var (TREE_TYPE (parmse->expr), "array");
! 	      gfc_add_modify (&block, *derived_array, parmse->expr);
  	    }
  
  	  if (optional)
--- 1028,1066 ----
  	    {
  	      *derived_array
  		= gfc_create_var (TREE_TYPE (parmse->expr), "array");
! 	      if (e->rank == -1)
! 		{
! 		  /* Assumed-rank actual: parmse->expr physically holds only
! 		     dtype.rank dims; a full struct assign reads past the end.
! 		     Copy field-by-field with a runtime-sized dim[] memcpy.
! 		     PR fortran/60576.  */
! 		  tree rank, dim_field, dim_size, copy_size, dst_ptr, src_ptr;
! 
! 		  gfc_conv_descriptor_data_set
! 		    (&block, *derived_array,
! 		     gfc_conv_descriptor_data_get (parmse->expr));
! 		  gfc_conv_descriptor_offset_set
! 		    (&block, *derived_array,
! 		     gfc_conv_descriptor_offset_get (parmse->expr));
! 		  gfc_add_modify (&block,
! 				  gfc_conv_descriptor_dtype (*derived_array),
! 				  gfc_conv_descriptor_dtype (parmse->expr));
! 		  rank = fold_convert (size_type_node,
! 				       gfc_conv_descriptor_rank (parmse->expr));
! 		  dim_field = gfc_get_descriptor_dimension (parmse->expr);
! 		  dim_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (dim_field)));
! 		  copy_size = fold_build2_loc (input_location, MULT_EXPR,
! 					       size_type_node, rank, dim_size);
! 		  dst_ptr = gfc_build_addr_expr
! 		    (pvoid_type_node, gfc_get_descriptor_dimension (*derived_array));
! 		  src_ptr = gfc_build_addr_expr (pvoid_type_node, dim_field);
! 		  gfc_add_expr_to_block (&block,
! 		      build_call_expr_loc (input_location,
! 					   builtin_decl_explicit (BUILT_IN_MEMCPY),
! 					   3, dst_ptr, src_ptr, copy_size));
! 		}
! 	      else
! 		gfc_add_modify (&block, *derived_array, parmse->expr);
  	    }
  
  	  if (optional)
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 9037,9048 ****
    /* Follow the function call with the argument post block.  */
    if (byref)
      {
-       gfc_add_block_to_block (&se->pre, &post);
- 
        /* Transformational functions of derived types with allocatable
! 	 components must have the result allocatable components copied when the
! 	 argument is actually given.  This is unnecessry for REDUCE because the
! 	 wrapper for the OPERATION function takes care of this.  */
        arg = expr->value.function.actual;
        if (result && arg && expr->rank
  	  && isym && isym->transformational
--- 9069,9078 ----
    /* Follow the function call with the argument post block.  */
    if (byref)
      {
        /* Transformational functions of derived types with allocatable
! 	 components must have the result allocatable components copied
! 	 BEFORE the argument post block is appended.  Copying the result
! 	 first, then freeing the argument, gives the correct order.  */
        arg = expr->value.function.actual;
        if (result && arg && expr->rank
  	  && isym && isym->transformational
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 9070,9075 ****
--- 9100,9107 ----
  					    NULL, GFC_CAF_COARRAY_NOCOARRAY);
  	  gfc_add_expr_to_block (&se->pre, tmp);
  	}
+ 
+       gfc_add_block_to_block (&se->pre, &post);
      }
    else
      {
diff -Nrcpad gcc-17-20260531/gcc/fortran/trans-intrinsic.cc gcc-17-20260607/gcc/fortran/trans-intrinsic.cc
*** gcc-17-20260531/gcc/fortran/trans-intrinsic.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/trans-intrinsic.cc	Sun Jun  7 22:32:07 2026
*************** gfc_conv_intrinsic_loc (gfc_se * se, gfc
*** 9829,9837 ****
  	gfc_add_data_component (arg_expr);
        gfc_conv_expr_reference (se, arg_expr);
      }
!   else
      gfc_conv_array_parameter (se, arg_expr, true, NULL, NULL, NULL);
    se->expr = convert (gfc_get_int_type (gfc_index_integer_kind), se->expr);
  
    /* Create a temporary variable for loc return value.  Without this,
       we get an error an ICE in gcc/expr.cc(expand_expr_addr_expr_1).  */
--- 9829,9843 ----
  	gfc_add_data_component (arg_expr);
        gfc_conv_expr_reference (se, arg_expr);
      }
!   else if (gfc_is_simply_contiguous (arg_expr, false, false))
      gfc_conv_array_parameter (se, arg_expr, true, NULL, NULL, NULL);
+   else
+     {
+       gfc_conv_expr_descriptor (se, arg_expr);
+       se->expr = gfc_conv_descriptor_data_get (se->expr);
+     }
    se->expr = convert (gfc_get_int_type (gfc_index_integer_kind), se->expr);
+   se->expr = gfc_evaluate_now (se->expr, &se->pre);
  
    /* Create a temporary variable for loc return value.  Without this,
       we get an error an ICE in gcc/expr.cc(expand_expr_addr_expr_1).  */
diff -Nrcpad gcc-17-20260531/gcc/fortran/trans-openmp.cc gcc-17-20260607/gcc/fortran/trans-openmp.cc
*** gcc-17-20260531/gcc/fortran/trans-openmp.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/trans-openmp.cc	Sun Jun  7 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 27,32 ****
--- 27,33 ----
  #include "gfortran.h"
  #include "basic-block.h"
  #include "tree-ssa.h"
+ #include "tree-ssa-loop-niter.h"  /* for simplify_replace_tree.  */
  #include "function.h"
  #include "gimple.h"
  #include "gimple-expr.h"
*************** static void
*** 3339,3345 ****
  gfc_trans_omp_array_section (stmtblock_t *block, gfc_exec_op op,
  			     gfc_omp_namelist *n, tree decl, bool element,
  			     bool openmp, gomp_map_kind ptr_kind, tree &node,
! 			     tree &node2, tree &node3, tree &node4)
  {
    gfc_se se;
    tree ptr, ptr2;
--- 3340,3347 ----
  gfc_trans_omp_array_section (stmtblock_t *block, gfc_exec_op op,
  			     gfc_omp_namelist *n, tree decl, bool element,
  			     bool openmp, gomp_map_kind ptr_kind, tree &node,
! 			     tree &node2, tree &node3, tree &node4,
! 			     tree iterator)
  {
    gfc_se se;
    tree ptr, ptr2;
*************** gfc_trans_omp_array_section (stmtblock_t
*** 3494,3499 ****
--- 3496,3508 ----
        OMP_CLAUSE_DECL (node3) = decl;
      }
    ptr2 = fold_convert (ptrdiff_type_node, ptr2);
+   for (tree it = iterator; it; it = TREE_CHAIN (it))
+     {
+       ptr = simplify_replace_tree (ptr, TREE_VEC_ELT (it, 0),
+ 				   TREE_VEC_ELT (it, 1));
+       ptr2 = simplify_replace_tree (ptr2, TREE_VEC_ELT (it, 0),
+ 				    TREE_VEC_ELT (it, 1));
+     }
    OMP_CLAUSE_SIZE (node3) = fold_build2 (MINUS_EXPR, ptrdiff_type_node,
  					 ptr, ptr2);
  }
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4306,4311 ****
--- 4315,4323 ----
  	    }
  	  break;
  	case OMP_LIST_MAP:
+ 	  iterator = NULL_TREE;
+ 	  prev = NULL;
+ 	  prev_clauses = omp_clauses;
  	  for (; n != NULL; n = n->next)
  	    {
  	      if (!openacc)
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4341,4346 ****
--- 4353,4385 ----
  		  || n->sym->attr.flavor == FL_PARAMETER)
  		continue;
  
+ 	      if (iterator && prev->u2.ns != n->u2.ns)
+ 		{
+ 		  /* Finish previous iterator group.  */
+ 		  BLOCK_SUBBLOCKS (tree_block) = gfc_finish_block (&iter_block);
+ 		  TREE_VEC_ELT (iterator, 5) = tree_block;
+ 		  for (tree c = omp_clauses; c != prev_clauses;
+ 		       c = OMP_CLAUSE_CHAIN (c))
+ 		    if (OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_FIRSTPRIVATE_POINTER
+ 			&& OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_FIRSTPRIVATE_REFERENCE)
+ 		      OMP_CLAUSE_ITERATORS (c) = iterator;
+ 		  prev_clauses = omp_clauses;
+ 		  iterator = NULL_TREE;
+ 		}
+ 	      if (n->u2.ns && (!prev || prev->u2.ns != n->u2.ns))
+ 		{
+ 		  /* Start a new iterator group.  */
+ 		  gfc_init_block (&iter_block);
+ 		  tree_block = make_node (BLOCK);
+ 		  TREE_USED (tree_block) = 1;
+ 		  BLOCK_VARS (tree_block) = NULL_TREE;
+ 		  prev_clauses = omp_clauses;
+ 		  iterator = handle_iterator (n->u2.ns, block, tree_block);
+ 		}
+ 	      if (!iterator)
+ 		gfc_init_block (&iter_block);
+ 	      prev = n;
+ 
  	      location_t map_loc = gfc_get_location (&n->where);
  	      bool always_modifier = false;
  	      tree node = build_omp_clause (map_loc, OMP_CLAUSE_MAP);
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4551,4557 ****
  						       TRUTH_NOT_EXPR,
  						       boolean_type_node,
  						       present);
! 			  gfc_add_expr_to_block (block,
  						 build3_loc (input_location,
  							     COND_EXPR,
  							     void_type_node,
--- 4590,4596 ----
  						       TRUTH_NOT_EXPR,
  						       boolean_type_node,
  						       present);
! 			  gfc_add_expr_to_block (&iter_block,
  						 build3_loc (input_location,
  							     COND_EXPR,
  							     void_type_node,
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4621,4627 ****
  		      tree type = TREE_TYPE (decl);
  		      tree ptr = gfc_conv_descriptor_data_get (decl);
  		      if (present)
! 			ptr = gfc_build_cond_assign_expr (block, present, ptr,
  							  null_pointer_node);
  		      gcc_assert (POINTER_TYPE_P (TREE_TYPE (ptr)));
  		      ptr = build_fold_indirect_ref (ptr);
--- 4660,4667 ----
  		      tree type = TREE_TYPE (decl);
  		      tree ptr = gfc_conv_descriptor_data_get (decl);
  		      if (present)
! 			ptr = gfc_build_cond_assign_expr (&iter_block,
! 							  present, ptr,
  							  null_pointer_node);
  		      gcc_assert (POINTER_TYPE_P (TREE_TYPE (ptr)));
  		      ptr = build_fold_indirect_ref (ptr);
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4648,4654 ****
  			      ptr = gfc_conv_descriptor_data_get (decl);
  			      ptr = gfc_build_addr_expr (NULL, ptr);
  			      ptr = gfc_build_cond_assign_expr (
! 				      block, present, ptr, null_pointer_node);
  			      ptr = build_fold_indirect_ref (ptr);
  			      OMP_CLAUSE_DECL (node3) = ptr;
  			    }
--- 4688,4694 ----
  			      ptr = gfc_conv_descriptor_data_get (decl);
  			      ptr = gfc_build_addr_expr (NULL, ptr);
  			      ptr = gfc_build_cond_assign_expr (
! 				&iter_block, present, ptr, null_pointer_node);
  			      ptr = build_fold_indirect_ref (ptr);
  			      OMP_CLAUSE_DECL (node3) = ptr;
  			    }
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4737,4743 ****
  						    TRUTH_ANDIF_EXPR,
  						    boolean_type_node,
  						    present, cond);
! 			  gfc_add_expr_to_block (block,
  						 build3_loc (input_location,
  							     COND_EXPR,
  							     void_type_node,
--- 4777,4783 ----
  						    TRUTH_ANDIF_EXPR,
  						    boolean_type_node,
  						    present, cond);
! 			  gfc_add_expr_to_block (&iter_block,
  						 build3_loc (input_location,
  							     COND_EXPR,
  							     void_type_node,
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4766,4777 ****
  			      tree cond = build3_loc (input_location, COND_EXPR,
  						      void_type_node, present,
  						      cond_body, NULL_TREE);
! 			      gfc_add_expr_to_block (block, cond);
  			      OMP_CLAUSE_SIZE (node) = var;
  			    }
  			  else
  			    {
! 			      gfc_add_block_to_block (block, &cond_block);
  			      OMP_CLAUSE_SIZE (node) = size;
  			    }
  			}
--- 4806,4817 ----
  			      tree cond = build3_loc (input_location, COND_EXPR,
  						      void_type_node, present,
  						      cond_body, NULL_TREE);
! 			      gfc_add_expr_to_block (&iter_block, cond);
  			      OMP_CLAUSE_SIZE (node) = var;
  			    }
  			  else
  			    {
! 			      gfc_add_block_to_block (&iter_block, &cond_block);
  			      OMP_CLAUSE_SIZE (node) = size;
  			    }
  			}
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4783,4790 ****
  		      /* A single indirectref is handled by the middle end.  */
  		      gcc_assert (!POINTER_TYPE_P (TREE_TYPE (decl)));
  		      tree tmp = TREE_OPERAND (decl, 0);
! 		      tmp = gfc_build_cond_assign_expr (block, present, tmp,
! 							 null_pointer_node);
  		      OMP_CLAUSE_DECL (node) = build_fold_indirect_ref (tmp);
  		    }
  		  else
--- 4823,4831 ----
  		      /* A single indirectref is handled by the middle end.  */
  		      gcc_assert (!POINTER_TYPE_P (TREE_TYPE (decl)));
  		      tree tmp = TREE_OPERAND (decl, 0);
! 		      tmp = gfc_build_cond_assign_expr (&iter_block,
! 							present, tmp,
! 							null_pointer_node);
  		      OMP_CLAUSE_DECL (node) = build_fold_indirect_ref (tmp);
  		    }
  		  else
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4817,4823 ****
  							 size_type_node,
  							 cond, size,
  							 size_zero_node);
! 		      size = gfc_evaluate_now (size, block);
  		      OMP_CLAUSE_SIZE (node) = size;
  		    }
  		  if ((TREE_CODE (decl) != PARM_DECL
--- 4858,4864 ----
  							 size_type_node,
  							 cond, size,
  							 size_zero_node);
! 		      size = gfc_evaluate_now (size, &iter_block);
  		      OMP_CLAUSE_SIZE (node) = size;
  		    }
  		  if ((TREE_CODE (decl) != PARM_DECL
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4833,4839 ****
  			tmp = DECL_P (decl) ? DECL_SIZE_UNIT (decl)
  					    : TYPE_SIZE_UNIT (TREE_TYPE (decl));
  		      tree var = gfc_create_var (TREE_TYPE (tmp), NULL);
! 		      gfc_add_modify_loc (input_location, block, var, tmp);
  		      OMP_CLAUSE_SIZE (node) = var;
  		      gfc_allocate_lang_decl (var);
  		      if (TREE_CODE (decl) == INDIRECT_REF)
--- 4874,4881 ----
  			tmp = DECL_P (decl) ? DECL_SIZE_UNIT (decl)
  					    : TYPE_SIZE_UNIT (TREE_TYPE (decl));
  		      tree var = gfc_create_var (TREE_TYPE (tmp), NULL);
! 		      gfc_add_modify_loc (input_location, &iter_block,
! 					  var, tmp);
  		      OMP_CLAUSE_SIZE (node) = var;
  		      gfc_allocate_lang_decl (var);
  		      if (TREE_CODE (decl) == INDIRECT_REF)
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4863,4871 ****
  		      && !(POINTER_TYPE_P (type)
  			   && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (type))))
  		    k = GOMP_MAP_FIRSTPRIVATE_POINTER;
! 		  gfc_trans_omp_array_section (block, op, n, decl, element,
! 					       !openacc, k, node, node2,
! 					       node3, node4);
  		}
  	      else if (n->expr
  		       && n->expr->expr_type == EXPR_VARIABLE
--- 4905,4914 ----
  		      && !(POINTER_TYPE_P (type)
  			   && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (type))))
  		    k = GOMP_MAP_FIRSTPRIVATE_POINTER;
! 		  gfc_trans_omp_array_section (&iter_block, op, n, decl,
! 					       element, !openacc, k,
! 					       node, node2, node3, node4,
! 					       iterator);
  		}
  	      else if (n->expr
  		       && n->expr->expr_type == EXPR_VARIABLE
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4881,4892 ****
  		  gfc_init_se (&se, NULL);
  
  		  gfc_conv_expr (&se, n->expr);
! 		  gfc_add_block_to_block (block, &se.pre);
  		  /* For BT_CHARACTER a pointer is returned.  */
  		  OMP_CLAUSE_DECL (node)
  		    = POINTER_TYPE_P (TREE_TYPE (se.expr))
  		      ? build_fold_indirect_ref (se.expr) : se.expr;
! 		  gfc_add_block_to_block (block, &se.post);
  		  if (pointer || allocatable)
  		    {
  		      /* If it's a bare attach/detach clause, we just want
--- 4924,4935 ----
  		  gfc_init_se (&se, NULL);
  
  		  gfc_conv_expr (&se, n->expr);
! 		  gfc_add_block_to_block (&iter_block, &se.pre);
  		  /* For BT_CHARACTER a pointer is returned.  */
  		  OMP_CLAUSE_DECL (node)
  		    = POINTER_TYPE_P (TREE_TYPE (se.expr))
  		      ? build_fold_indirect_ref (se.expr) : se.expr;
! 		  gfc_add_block_to_block (&iter_block, &se.post);
  		  if (pointer || allocatable)
  		    {
  		      /* If it's a bare attach/detach clause, we just want
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 4947,4953 ****
  				   ? DECL_SIZE_UNIT (se.expr)
  				   : TYPE_SIZE_UNIT (TREE_TYPE (se.expr)));
  			  tree var = gfc_create_var (TREE_TYPE (tmp), NULL);
! 			  gfc_add_modify_loc (input_location, block, var, tmp);
  			  OMP_CLAUSE_SIZE (node) = var;
  			  gfc_allocate_lang_decl (var);
  			  if (TREE_CODE (se.expr) == INDIRECT_REF)
--- 4990,4997 ----
  				   ? DECL_SIZE_UNIT (se.expr)
  				   : TYPE_SIZE_UNIT (TREE_TYPE (se.expr)));
  			  tree var = gfc_create_var (TREE_TYPE (tmp), NULL);
! 			  gfc_add_modify_loc (input_location, &iter_block,
! 					      var, tmp);
  			  OMP_CLAUSE_SIZE (node) = var;
  			  gfc_allocate_lang_decl (var);
  			  if (TREE_CODE (se.expr) == INDIRECT_REF)
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5106,5112 ****
  			     to ensure that it is not gimplified + is a decl.  */
  			  tree tmp = OMP_CLAUSE_SIZE (node);
  			  tree var = gfc_create_var (TREE_TYPE (tmp), NULL);
! 			  gfc_add_modify_loc (input_location, block, var, tmp);
  			  OMP_CLAUSE_SIZE (node) = var;
  			  gfc_allocate_lang_decl (var);
  			  if (TREE_CODE (inner) == INDIRECT_REF)
--- 5150,5157 ----
  			     to ensure that it is not gimplified + is a decl.  */
  			  tree tmp = OMP_CLAUSE_SIZE (node);
  			  tree var = gfc_create_var (TREE_TYPE (tmp), NULL);
! 			  gfc_add_modify_loc (input_location, &iter_block,
! 					      var, tmp);
  			  OMP_CLAUSE_SIZE (node) = var;
  			  gfc_allocate_lang_decl (var);
  			  if (TREE_CODE (inner) == INDIRECT_REF)
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5139,5145 ****
  			{
  			  bool drop_mapping = gfc_map_array_descriptor (
  			    node, node2, node3, node4, inner, openacc, map_loc,
! 			    block, op, n, sym_rooted_nl, se, clauses, false);
  			  if (drop_mapping)
  			    continue;
  			}
--- 5184,5191 ----
  			{
  			  bool drop_mapping = gfc_map_array_descriptor (
  			    node, node2, node3, node4, inner, openacc, map_loc,
! 			    &iter_block, op, n, sym_rooted_nl, se, clauses,
! 			    false);
  			  if (drop_mapping)
  			    continue;
  			}
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5151,5159 ****
  		      /* An array element or section.  */
  		      bool element = lastref->u.ar.type == AR_ELEMENT;
  		      gomp_map_kind kind = GOMP_MAP_ATTACH_DETACH;
! 		      gfc_trans_omp_array_section (block, op, n, inner, element,
! 						   !openacc, kind, node, node2,
! 						   node3, node4);
  		    }
  		  else
  		    gcc_unreachable ();
--- 5197,5206 ----
  		      /* An array element or section.  */
  		      bool element = lastref->u.ar.type == AR_ELEMENT;
  		      gomp_map_kind kind = GOMP_MAP_ATTACH_DETACH;
! 		      gfc_trans_omp_array_section (&iter_block, op, n, inner,
! 						   element, !openacc, kind,
! 						   node, node2, node3, node4,
! 						   iterator);
  		    }
  		  else
  		    gcc_unreachable ();
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5171,5177 ****
  			  tree node4 = NULL_TREE;
  			  gfc_map_array_descriptor (node1, node2, node3, node4,
  						    mid_descr[i], openacc,
! 						    map_loc, block, op, n,
  						    sym_rooted_nl, se, clauses,
  						    true);
  
--- 5218,5225 ----
  			  tree node4 = NULL_TREE;
  			  gfc_map_array_descriptor (node1, node2, node3, node4,
  						    mid_descr[i], openacc,
! 						    map_loc, &iter_block,
! 						    op, n,
  						    sym_rooted_nl, se, clauses,
  						    true);
  
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5194,5199 ****
--- 5242,5250 ----
  
  	      finalize_map_clause:
  
+ 	      if (!iterator)
+ 		gfc_add_block_to_block (block, &iter_block);
+ 
  	      omp_clauses = gfc_trans_add_clause (node, omp_clauses);
  	      if (node2)
  		omp_clauses = gfc_trans_add_clause (node2, omp_clauses);
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5204,5219 ****
--- 5255,5309 ----
  	      if (node5)
  		omp_clauses = gfc_trans_add_clause (node5, omp_clauses);
  	    }
+ 	  if (iterator)
+ 	    {
+ 	      /* Finish last iterator group.  */
+ 	      BLOCK_SUBBLOCKS (tree_block) = gfc_finish_block (&iter_block);
+ 	      TREE_VEC_ELT (iterator, 5) = tree_block;
+ 	      for (tree c = omp_clauses; c != prev_clauses;
+ 		   c = OMP_CLAUSE_CHAIN (c))
+ 		if (OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_FIRSTPRIVATE_POINTER
+ 		    && OMP_CLAUSE_MAP_KIND (c) != GOMP_MAP_FIRSTPRIVATE_REFERENCE)
+ 		  OMP_CLAUSE_ITERATORS (c) = iterator;
+ 	    }
  	  break;
  	case OMP_LIST_TO:
  	case OMP_LIST_FROM:
  	case OMP_LIST_CACHE:
+ 	  iterator = NULL_TREE;
+ 	  prev = NULL;
+ 	  prev_clauses = omp_clauses;
  	  for (; n != NULL; n = n->next)
  	    {
  	      if (!n->sym->attr.referenced
  		  && n->sym->attr.flavor != FL_PARAMETER)
  		continue;
  
+ 	      if (iterator && prev->u2.ns != n->u2.ns)
+ 		{
+ 		  /* Finish previous iterator group.  */
+ 		  BLOCK_SUBBLOCKS (tree_block) = gfc_finish_block (&iter_block);
+ 		  TREE_VEC_ELT (iterator, 5) = tree_block;
+ 		  for (tree c = omp_clauses; c != prev_clauses;
+ 		       c = OMP_CLAUSE_CHAIN (c))
+ 		    OMP_CLAUSE_ITERATORS (c) = iterator;
+ 		  prev_clauses = omp_clauses;
+ 		  iterator = NULL_TREE;
+ 		}
+ 	      if (n->u2.ns && (!prev || prev->u2.ns != n->u2.ns))
+ 		{
+ 		  /* Start a new iterator group.  */
+ 		  gfc_init_block (&iter_block);
+ 		  tree_block = make_node (BLOCK);
+ 		  TREE_USED (tree_block) = 1;
+ 		  BLOCK_VARS (tree_block) = NULL_TREE;
+ 		  prev_clauses = omp_clauses;
+ 		  iterator = handle_iterator (n->u2.ns, block, tree_block);
+ 		}
+ 	      if (!iterator)
+ 		gfc_init_block (&iter_block);
+ 	      prev = n;
+ 
  	      switch (list)
  		{
  		case OMP_LIST_TO:
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5252,5258 ****
  		      ptr = build_fold_indirect_ref (ptr);
  		      OMP_CLAUSE_DECL (node) = ptr;
  		      OMP_CLAUSE_SIZE (node)
! 			= gfc_full_array_size (block, decl,
  					       GFC_TYPE_ARRAY_RANK (type));
  		      tree elemsz
  			= TYPE_SIZE_UNIT (gfc_get_element_type (type));
--- 5342,5348 ----
  		      ptr = build_fold_indirect_ref (ptr);
  		      OMP_CLAUSE_DECL (node) = ptr;
  		      OMP_CLAUSE_SIZE (node)
! 			= gfc_full_array_size (&iter_block, decl,
  					       GFC_TYPE_ARRAY_RANK (type));
  		      tree elemsz
  			= TYPE_SIZE_UNIT (gfc_get_element_type (type));
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5277,5283 ****
  		    {
  		      gfc_conv_expr_reference (&se, n->expr);
  		      ptr = se.expr;
! 		      gfc_add_block_to_block (block, &se.pre);
  		      OMP_CLAUSE_SIZE (node)
  			= TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ptr)));
  		    }
--- 5367,5373 ----
  		    {
  		      gfc_conv_expr_reference (&se, n->expr);
  		      ptr = se.expr;
! 		      gfc_add_block_to_block (&iter_block, &se.pre);
  		      OMP_CLAUSE_SIZE (node)
  			= TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (ptr)));
  		    }
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5286,5294 ****
  		      gfc_conv_expr_descriptor (&se, n->expr);
  		      ptr = gfc_conv_array_data (se.expr);
  		      tree type = TREE_TYPE (se.expr);
! 		      gfc_add_block_to_block (block, &se.pre);
  		      OMP_CLAUSE_SIZE (node)
! 			= gfc_full_array_size (block, se.expr,
  					       GFC_TYPE_ARRAY_RANK (type));
  		      tree elemsz
  			= TYPE_SIZE_UNIT (gfc_get_element_type (type));
--- 5376,5384 ----
  		      gfc_conv_expr_descriptor (&se, n->expr);
  		      ptr = gfc_conv_array_data (se.expr);
  		      tree type = TREE_TYPE (se.expr);
! 		      gfc_add_block_to_block (&iter_block, &se.pre);
  		      OMP_CLAUSE_SIZE (node)
! 			= gfc_full_array_size (&iter_block, se.expr,
  					       GFC_TYPE_ARRAY_RANK (type));
  		      tree elemsz
  			= TYPE_SIZE_UNIT (gfc_get_element_type (type));
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5297,5303 ****
  			= fold_build2 (MULT_EXPR, gfc_array_index_type,
  				       OMP_CLAUSE_SIZE (node), elemsz);
  		    }
! 		  gfc_add_block_to_block (block, &se.post);
  		  gcc_assert (POINTER_TYPE_P (TREE_TYPE (ptr)));
  		  OMP_CLAUSE_DECL (node) = build_fold_indirect_ref (ptr);
  		}
--- 5387,5393 ----
  			= fold_build2 (MULT_EXPR, gfc_array_index_type,
  				       OMP_CLAUSE_SIZE (node), elemsz);
  		    }
! 		  gfc_add_block_to_block (&iter_block, &se.post);
  		  gcc_assert (POINTER_TYPE_P (TREE_TYPE (ptr)));
  		  OMP_CLAUSE_DECL (node) = build_fold_indirect_ref (ptr);
  		}
*************** gfc_trans_omp_clauses (stmtblock_t *bloc
*** 5305,5312 ****
--- 5395,5413 ----
  		OMP_CLAUSE_MOTION_PRESENT (node) = 1;
  	      if (list == OMP_LIST_CACHE && n->u.map.readonly)
  		OMP_CLAUSE__CACHE__READONLY (node) = 1;
+ 	      if (!iterator)
+ 		gfc_add_block_to_block (block, &iter_block);
  	      omp_clauses = gfc_trans_add_clause (node, omp_clauses);
  	    }
+ 	  if (iterator)
+ 	    {
+ 	      /* Finish last iterator group.  */
+ 	      BLOCK_SUBBLOCKS (tree_block) = gfc_finish_block (&iter_block);
+ 	      TREE_VEC_ELT (iterator, 5) = tree_block;
+ 	      for (tree c = omp_clauses; c != prev_clauses;
+ 		   c = OMP_CLAUSE_CHAIN (c))
+ 		OMP_CLAUSE_ITERATORS (c) = iterator;
+ 	    }
  	  break;
  	case OMP_LIST_USES_ALLOCATORS:
  	  /* Ignore omp_null_allocator and pre-defined allocators as no
diff -Nrcpad gcc-17-20260531/gcc/fortran/trans-stmt.cc gcc-17-20260607/gcc/fortran/trans-stmt.cc
*** gcc-17-20260531/gcc/fortran/trans-stmt.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/fortran/trans-stmt.cc	Sun Jun  7 22:32:07 2026
*************** gfc_trans_allocate (gfc_code * code, gfc
*** 7695,7702 ****
  	    param_list = expr->param_list;
  	  else
  	    param_list = expr->symtree->n.sym->param_list;
  	  tmp = gfc_allocate_pdt_comp (expr->ts.u.derived, se.expr,
! 				       expr->rank, param_list);
  	  gfc_add_expr_to_block (&block, tmp);
  	}
        /* Ditto for CLASS expressions.  */
--- 7695,7709 ----
  	    param_list = expr->param_list;
  	  else
  	    param_list = expr->symtree->n.sym->param_list;
+ 	  /* For array allocations the allocate-shape-spec expression has
+ 	     rank 0 even though the symbol is an array.  Use the rank from
+ 	     the array descriptor when se.expr is a GFC descriptor so that
+ 	     gfc_allocate_pdt_comp loops over all elements.  */
+ 	  int pdt_rank = (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (se.expr))
+ 			  ? GFC_TYPE_ARRAY_RANK (TREE_TYPE (se.expr))
+ 			  : expr->rank);
  	  tmp = gfc_allocate_pdt_comp (expr->ts.u.derived, se.expr,
! 				       pdt_rank, param_list);
  	  gfc_add_expr_to_block (&block, tmp);
  	}
        /* Ditto for CLASS expressions.  */
*************** gfc_trans_allocate (gfc_code * code, gfc
*** 7708,7715 ****
  	    param_list = expr->param_list;
  	  else
  	    param_list = expr->symtree->n.sym->param_list;
  	  tmp = gfc_allocate_pdt_comp (CLASS_DATA (expr)->ts.u.derived,
! 				       se.expr, expr->rank, param_list);
  	  gfc_add_expr_to_block (&block, tmp);
  	}
        else if (code->expr3 && code->expr3->mold
--- 7715,7725 ----
  	    param_list = expr->param_list;
  	  else
  	    param_list = expr->symtree->n.sym->param_list;
+ 	  int pdt_rank = (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (se.expr))
+ 			  ? GFC_TYPE_ARRAY_RANK (TREE_TYPE (se.expr))
+ 			  : expr->rank);
  	  tmp = gfc_allocate_pdt_comp (CLASS_DATA (expr)->ts.u.derived,
! 				       se.expr, pdt_rank, param_list);
  	  gfc_add_expr_to_block (&block, tmp);
  	}
        else if (code->expr3 && code->expr3->mold
*************** gfc_trans_deallocate (gfc_code *code)
*** 7965,7974 ****
        if (expr->ts.type == BT_DERIVED
  	  && ((expr->ts.u.derived->attr.pdt_type && param_list)
  	      || expr->ts.u.derived->attr.pdt_comp))
! 	tmp = gfc_deallocate_pdt_comp (expr->ts.u.derived, se.expr, expr->rank);
        else if (IS_CLASS_PDT (expr) && expr->symtree->n.sym->param_list)
! 	tmp = gfc_deallocate_pdt_comp (CLASS_DATA (expr)->ts.u.derived,
! 				       se.expr, expr->rank);
  
        if (tmp)
  	gfc_add_expr_to_block (&se.pre, tmp);
--- 7975,7994 ----
        if (expr->ts.type == BT_DERIVED
  	  && ((expr->ts.u.derived->attr.pdt_type && param_list)
  	      || expr->ts.u.derived->attr.pdt_comp))
! 	{
! 	  int pdt_rank = (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (se.expr))
! 			  ? GFC_TYPE_ARRAY_RANK (TREE_TYPE (se.expr))
! 			  : expr->rank);
! 	  tmp = gfc_deallocate_pdt_comp (expr->ts.u.derived, se.expr, pdt_rank);
! 	}
        else if (IS_CLASS_PDT (expr) && expr->symtree->n.sym->param_list)
! 	{
! 	  int pdt_rank = (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (se.expr))
! 			  ? GFC_TYPE_ARRAY_RANK (TREE_TYPE (se.expr))
! 			  : expr->rank);
! 	  tmp = gfc_deallocate_pdt_comp (CLASS_DATA (expr)->ts.u.derived,
! 					 se.expr, pdt_rank);
! 	}
  
        if (tmp)
  	gfc_add_expr_to_block (&se.pre, tmp);
diff -Nrcpad gcc-17-20260531/gcc/function-abi.cc gcc-17-20260607/gcc/function-abi.cc
*** gcc-17-20260531/gcc/function-abi.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/function-abi.cc	Sun Jun  7 22:32:07 2026
*************** insn_callee_abi (const rtx_insn *insn)
*** 227,236 ****
      if (tree fndecl = get_call_fndecl (insn))
        return fndecl_abi (fndecl);
  
!   if (targetm.calls.insn_callee_abi)
!     return targetm.calls.insn_callee_abi (insn);
! 
!   return default_function_abi;
  }
  
  /* Return the ABI of the function called by CALL_EXPR EXP.  Return the
--- 227,233 ----
      if (tree fndecl = get_call_fndecl (insn))
        return fndecl_abi (fndecl);
  
!   return function_abis[CALL_INSN_ABI_ID (insn)];
  }
  
  /* Return the ABI of the function called by CALL_EXPR EXP.  Return the
diff -Nrcpad gcc-17-20260531/gcc/function.cc gcc-17-20260607/gcc/function.cc
*** gcc-17-20260531/gcc/function.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/function.cc	Sun Jun  7 22:32:07 2026
*************** static bool contains (const rtx_insn *,
*** 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.  */
--- 155,160 ----
*************** assign_stack_local (machine_mode mode, p
*** 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.
--- 551,556 ----
*************** assign_parm_setup_block (struct assign_p
*** 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);
--- 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);
*************** assign_parm_setup_reg (struct assign_par
*** 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);
  	}
  
--- 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);
  	}
  
diff -Nrcpad gcc-17-20260531/gcc/gcc-diagnostic-spec.cc gcc-17-20260607/gcc/gcc-diagnostic-spec.cc
*** gcc-17-20260531/gcc/gcc-diagnostic-spec.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gcc-diagnostic-spec.cc	Sun Jun  7 22:32:07 2026
*************** nowarn_spec_t::nowarn_spec_t (opt_code o
*** 59,65 ****
      case OPT_Woverflow:
      case OPT_Wshift_count_negative:
      case OPT_Wshift_count_overflow:
-     case OPT_Wstrict_overflow:
        m_bits = NW_VFLOW;
        break;
  
--- 59,64 ----
diff -Nrcpad gcc-17-20260531/gcc/gcc.cc gcc-17-20260607/gcc/gcc.cc
*** gcc-17-20260531/gcc/gcc.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gcc.cc	Sun Jun  7 22:32:07 2026
*************** static void xputenv (const char *);
*** 389,395 ****
  static void putenv_from_prefixes (const struct path_prefix *, const char *,
  				  bool);
  static int access_check (const char *, int);
! static char *find_a_file (const struct path_prefix *, const char *, int, bool);
  static char *find_a_program (const char *);
  static void add_prefix (struct path_prefix *, const char *, const char *,
  			int, int, int);
--- 389,395 ----
  static void putenv_from_prefixes (const struct path_prefix *, const char *,
  				  bool);
  static int access_check (const char *, int);
! static char *find_a_file (const struct path_prefix *, const char *, bool);
  static char *find_a_program (const char *);
  static void add_prefix (struct path_prefix *, const char *, const char *,
  			int, int, int);
*************** read_specs (const char *filename, bool m
*** 2466,2472 ****
  			     "%td characters", p1 - buffer + 1);
  
  	      p[-2] = '\0';
! 	      new_filename = find_a_file (&startfile_prefixes, p1, R_OK, true);
  	      read_specs (new_filename ? new_filename : p1, false, user_p);
  	      continue;
  	    }
--- 2466,2472 ----
  			     "%td characters", p1 - buffer + 1);
  
  	      p[-2] = '\0';
! 	      new_filename = find_a_file (&startfile_prefixes, p1, true);
  	      read_specs (new_filename ? new_filename : p1, false, user_p);
  	      continue;
  	    }
*************** read_specs (const char *filename, bool m
*** 2486,2492 ****
  			     "%td characters", p1 - buffer + 1);
  
  	      p[-2] = '\0';
! 	      new_filename = find_a_file (&startfile_prefixes, p1, R_OK, true);
  	      if (new_filename)
  		read_specs (new_filename, false, user_p);
  	      else if (verbose_flag)
--- 2486,2492 ----
  			     "%td characters", p1 - buffer + 1);
  
  	      p[-2] = '\0';
! 	      new_filename = find_a_file (&startfile_prefixes, p1, true);
  	      if (new_filename)
  		read_specs (new_filename, false, user_p);
  	      else if (verbose_flag)
*************** access_check (const char *name, int mode
*** 3056,3102 ****
     Return 0 if not found, otherwise return its name, allocated with malloc.  */
  
  static char *
! find_a_file (const struct path_prefix *pprefix, const char *name, int mode,
  	     bool do_multi)
  {
    /* Find the filename in question (special case for absolute paths).  */
  
    if (IS_ABSOLUTE_PATH (name))
      {
!       if (access (name, mode) == 0)
  	return xstrdup (name);
  
        return NULL;
      }
  
-   const char *suffix = (mode & X_OK) != 0 ? HOST_EXECUTABLE_SUFFIX : "";
    const int name_len = strlen (name);
-   const int suffix_len = strlen (suffix);
  
  
    /* Callback appends the file name to the directory path.  If the
       resulting file exists in the right mode, return the full pathname
       to the file.  */
    return for_each_path (pprefix, do_multi,
! 			name_len + suffix_len,
  			[=](char *path) -> char*
      {
!       size_t len = strlen (path);
! 
!       memcpy (path + len, name, name_len);
!       len += name_len;
! 
!       /* Some systems have a suffix for executable files.
! 	 So try appending that first.  */
!       if (suffix_len)
! 	{
! 	  memcpy (path + len, suffix, suffix_len + 1);
! 	  if (access_check (path, mode) == 0)
! 	    return path;
! 	}
  
!       path[len] = '\0';
!       if (access_check (path, mode) == 0)
  	return path;
  
        return NULL;
--- 3056,3087 ----
     Return 0 if not found, otherwise return its name, allocated with malloc.  */
  
  static char *
! find_a_file (const struct path_prefix *pprefix, const char *name,
  	     bool do_multi)
  {
    /* Find the filename in question (special case for absolute paths).  */
  
    if (IS_ABSOLUTE_PATH (name))
      {
!       if (access (name, R_OK) == 0)
  	return xstrdup (name);
  
        return NULL;
      }
  
    const int name_len = strlen (name);
  
  
    /* Callback appends the file name to the directory path.  If the
       resulting file exists in the right mode, return the full pathname
       to the file.  */
    return for_each_path (pprefix, do_multi,
! 			name_len,
  			[=](char *path) -> char*
      {
!       memcpy (path + strlen (path), name, name_len + 1);
  
!       if (access_check (path, R_OK) == 0)
  	return path;
  
        return NULL;
*************** find_a_program (const char *name)
*** 3131,3137 ****
      return xstrdup (DEFAULT_WINDRES);
  #endif
  
!   return find_a_file (&exec_prefixes, name, X_OK, false);
  }
  
  /* Ranking of prefixes in the sort list. -B prefixes are put before
--- 3116,3162 ----
      return xstrdup (DEFAULT_WINDRES);
  #endif
  
!   /* Find the filename in question (special case for absolute paths).  */
! 
!   if (IS_ABSOLUTE_PATH (name))
!     {
!       if (access (name, X_OK) == 0)
! 	return xstrdup (name);
! 
!       return NULL;
!     }
! 
!   const char *suffix = HOST_EXECUTABLE_SUFFIX;
!   const int name_len = strlen (name);
!   const int suffix_len = strlen (suffix);
! 
!   /* Callback appends the file name to the directory path.  If the
!      resulting file exists in the right mode, return the full pathname
!      to the file.  */
!   return for_each_path (&exec_prefixes, false,
! 			name_len + suffix_len,
! 			[=](char *path) -> char*
!     {
!       size_t len = strlen (path);
! 
!       memcpy (path + len, name, name_len);
!       len += name_len;
! 
!       /* Some systems have a suffix for executable files.
! 	 So try appending that first.  */
!       if (suffix_len)
! 	{
! 	  memcpy (path + len, suffix, suffix_len + 1);
! 	  if (access_check (path, X_OK) == 0)
! 	    return path;
! 	}
! 
!       path[len] = '\0';
!       if (access_check (path, X_OK) == 0)
! 	return path;
! 
!       return NULL;
!     });
  }
  
  /* Ranking of prefixes in the sort list. -B prefixes are put before
*************** end_going_arg (void)
*** 5787,5793 ****
  	string = find_file (string);
        if (this_is_linker_script)
  	{
! 	  char * full_script_path = find_a_file (&startfile_prefixes, string, R_OK, true);
  
  	  if (full_script_path == NULL)
  	    {
--- 5812,5818 ----
  	string = find_file (string);
        if (this_is_linker_script)
  	{
! 	  char * full_script_path = find_a_file (&startfile_prefixes, string, true);
  
  	  if (full_script_path == NULL)
  	    {
*************** out:
*** 8093,8099 ****
  static const char *
  find_file (const char *name)
  {
!   char *newname = find_a_file (&startfile_prefixes, name, R_OK, true);
    return newname ? newname : name;
  }
  
--- 8118,8124 ----
  static const char *
  find_file (const char *name)
  {
!   char *newname = find_a_file (&startfile_prefixes, name, true);
    return newname ? newname : name;
  }
  
*************** driver::set_up_specs () const
*** 8519,8525 ****
  			   accel_dir_suffix, dir_separator_str, NULL);
    just_machine_suffix = concat (spec_machine, dir_separator_str, NULL);
  
!   specs_file = find_a_file (&startfile_prefixes, "specs", R_OK, true);
    /* Read the specs file unless it is a default one.  */
    if (specs_file != 0 && strcmp (specs_file, "specs"))
      read_specs (specs_file, true, false);
--- 8544,8550 ----
  			   accel_dir_suffix, dir_separator_str, NULL);
    just_machine_suffix = concat (spec_machine, dir_separator_str, NULL);
  
!   specs_file = find_a_file (&startfile_prefixes, "specs", true);
    /* Read the specs file unless it is a default one.  */
    if (specs_file != 0 && strcmp (specs_file, "specs"))
      read_specs (specs_file, true, false);
*************** driver::set_up_specs () const
*** 8663,8669 ****
    for (struct user_specs *uptr = user_specs_head; uptr; uptr = uptr->next)
      {
        char *filename = find_a_file (&startfile_prefixes, uptr->filename,
! 				    R_OK, true);
        read_specs (filename ? filename : uptr->filename, false, true);
      }
  
--- 8688,8694 ----
    for (struct user_specs *uptr = user_specs_head; uptr; uptr = uptr->next)
      {
        char *filename = find_a_file (&startfile_prefixes, uptr->filename,
! 				    true);
        read_specs (filename ? filename : uptr->filename, false, true);
      }
  
*************** driver::maybe_run_linker (const char *ar
*** 9298,9304 ****
  #endif
  	    {
  	      char *temp_spec = find_a_file (&exec_prefixes,
! 					     LTOPLUGINSONAME, R_OK,
  					     false);
  	      if (!temp_spec)
  		fatal_error (input_location,
--- 9323,9329 ----
  #endif
  	    {
  	      char *temp_spec = find_a_file (&exec_prefixes,
! 					     LTOPLUGINSONAME,
  					     false);
  	      if (!temp_spec)
  		fatal_error (input_location,
*************** include_spec_function (int argc, const c
*** 10787,10793 ****
    if (argc != 1)
      abort ();
  
!   file = find_a_file (&startfile_prefixes, argv[0], R_OK, true);
    read_specs (file ? file : argv[0], false, false);
  
    return NULL;
--- 10812,10818 ----
    if (argc != 1)
      abort ();
  
!   file = find_a_file (&startfile_prefixes, argv[0], true);
    read_specs (file ? file : argv[0], false, false);
  
    return NULL;
*************** find_fortran_preinclude_file (int argc,
*** 11224,11235 ****
  			     NULL, 0, 0, 0);
  #endif
  
!   const char *path = find_a_file (&include_prefixes, argv[1], R_OK, false);
    if (path != NULL)
      result = concat (argv[0], path, NULL);
    else
      {
!       path = find_a_file (&prefixes, argv[1], R_OK, false);
        if (path != NULL)
  	result = concat (argv[0], path, NULL);
      }
--- 11249,11260 ----
  			     NULL, 0, 0, 0);
  #endif
  
!   const char *path = find_a_file (&include_prefixes, argv[1], false);
    if (path != NULL)
      result = concat (argv[0], path, NULL);
    else
      {
!       path = find_a_file (&prefixes, argv[1], false);
        if (path != NULL)
  	result = concat (argv[0], path, NULL);
      }
diff -Nrcpad gcc-17-20260531/gcc/gencfn-macros.cc gcc-17-20260607/gcc/gencfn-macros.cc
*** gcc-17-20260531/gcc/gencfn-macros.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gencfn-macros.cc	Sun Jun  7 22:32:07 2026
*************** const char *const internal_fn_int_names[
*** 154,159 ****
--- 154,166 ----
    NULL
  };
  
+ const char *const internal_fn_intsz_names[] = {
+ #define DEF_INTERNAL_INTSZ_FN(NAME, FLAGS, OPTAB, TYPE) \
+   #NAME,
+ #include "internal-fn.def"
+   NULL
+ };
+ 
  static const char *const flt_suffixes[] = { "F", "", "L", NULL };
  static const char *const fltfn_suffixes[] = { "F16", "F32", "F64", "F128",
  					      "F32X", "F64X", "F128X", NULL };
*************** static const char *const fltall_suffixes
*** 161,170 ****
--- 168,180 ----
  					       "F64", "F128", "F32X", "F64X",
  					       "F128X", NULL };
  static const char *const int_suffixes[] = { "", "L", "LL", "IMAX", NULL };
+ static const char *const intsz_suffixes[] = { "8", "16", "32", "64", "128",
+ 					      NULL };
  
  static const char *const *const suffix_lists[] = {
    flt_suffixes,
    int_suffixes,
+   intsz_suffixes,
    NULL
  };
  
*************** main (int argc, char **argv)
*** 186,191 ****
--- 196,202 ----
    add_to_set (&builtins, builtin_names);
    add_to_set (&internal_fns, internal_fn_flt_names);
    add_to_set (&internal_fns, internal_fn_int_names);
+   add_to_set (&internal_fns, internal_fn_intsz_names);
  
    /* Check the functions.  */
    for (unsigned int i = 0; internal_fn_flt_names[i]; ++i)
*************** main (int argc, char **argv)
*** 202,207 ****
--- 213,227 ----
  	error ("DEF_INTERNAL_INT_FN (%s) has no associated built-in"
  	       " functions", name);
      }
+   for (unsigned int i = 0; internal_fn_intsz_names[i]; ++i)
+     {
+       const char *name = internal_fn_intsz_names[i];
+       if (!is_group (&builtins, name,
+ 		     /* There is no BUILT_IN_BSWAP8.  */
+ 		     intsz_suffixes + (startswith (name, "BSWAP") ? 1 : 0)))
+ 	error ("DEF_INTERNAL_INTSZ_FN (%s) has no associated built-in"
+ 	       " functions", name);
+     }
  
    /* Go through the built-in functions in declaration order, outputting
       definitions as appropriate.  */
*************** main (int argc, char **argv)
*** 211,220 ****
        if (startswith (name, "BUILT_IN_"))
  	{
  	  const char *root = name + 9;
  	  for (unsigned int j = 0; suffix_lists[j]; ++j)
  	    {
! 	      const char *const *const suffix = suffix_lists[j];
  
  	      if (is_group (&builtins, root, suffix))
  		{
  		  bool internal_p = internal_fns.contains (root);
--- 231,255 ----
        if (startswith (name, "BUILT_IN_"))
  	{
  	  const char *root = name + 9;
+ 	  char buf[128];
  	  for (unsigned int j = 0; suffix_lists[j]; ++j)
  	    {
! 	      const char *const *suffix = suffix_lists[j];
  
+ 	      if (suffix == intsz_suffixes)
+ 		{
+ 		  if (!endswith (root, "32"))
+ 		    continue;
+ 		  size_t len = strlen (root);
+ 		  if (len > sizeof (buf))
+ 		    continue;
+ 		  /* There is no BUILT_IN_BSWAP8.  */
+ 		  if (startswith (root, "BSWAP"))
+ 		    suffix++;
+ 		  memcpy (buf, root, len - 2);
+ 		  buf[len - 2] = '\0';
+ 		  root = buf;
+ 		}
  	      if (is_group (&builtins, root, suffix))
  		{
  		  bool internal_p = internal_fns.contains (root);
diff -Nrcpad gcc-17-20260531/gcc/gengtype.cc gcc-17-20260607/gcc/gengtype.cc
*** gcc-17-20260531/gcc/gengtype.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gengtype.cc	Sun Jun  7 22:32:07 2026
*************** main (int argc, char **argv)
*** 5257,5262 ****
--- 5257,5263 ----
        POS_HERE (do_scalar_typedef ("JCF_u2", &pos));
        POS_HERE (do_scalar_typedef ("void", &pos));
        POS_HERE (do_scalar_typedef ("machine_mode", &pos));
+       POS_HERE (do_scalar_typedef ("tree_code", &pos));
        POS_HERE (do_scalar_typedef ("fixed_size_mode", &pos));
        POS_HERE (do_scalar_typedef ("CONSTEXPR", &pos));
        POS_HERE (do_typedef ("void *",
diff -Nrcpad gcc-17-20260531/gcc/gimple-fold.cc gcc-17-20260607/gcc/gimple-fold.cc
*** gcc-17-20260531/gcc/gimple-fold.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gimple-fold.cc	Sun Jun  7 22:32:07 2026
*************** maybe_fold_reference (tree expr)
*** 306,311 ****
--- 306,316 ----
  {
    tree result = NULL_TREE;
  
+   /* Avoid expensive fold_const_aggregate_ref early on aggregate loads
+      and esp. replacing STRING_CSTs inline.  */
+   if (!is_gimple_reg_type (TREE_TYPE (expr)))
+     return NULL_TREE;
+ 
    if ((TREE_CODE (expr) == VIEW_CONVERT_EXPR
         || TREE_CODE (expr) == REALPART_EXPR
         || TREE_CODE (expr) == IMAGPART_EXPR)
*************** fold_gimple_assign (gimple_stmt_iterator
*** 576,583 ****
  
  /* Replace a statement at *SI_P with a sequence of statements in STMTS,
     adjusting the replacement stmts location and virtual operands.
!    If the statement has a lhs the last stmt in the sequence is expected
!    to assign to that lhs.  */
  
  void
  gsi_replace_with_seq_vops (gimple_stmt_iterator *si_p, gimple_seq stmts)
--- 581,594 ----
  
  /* Replace a statement at *SI_P with a sequence of statements in STMTS,
     adjusting the replacement stmts location and virtual operands.
! 
!    If the statements has an lhs, either:
! 
!    - the last statement of the new sequence must assign to the same lhs or
! 
!    - the caller must ensure that all uses of the old lhs have been
!      removed before calling this function.  This includes removing
!      all debug uses.  */
  
  void
  gsi_replace_with_seq_vops (gimple_stmt_iterator *si_p, gimple_seq stmts)
diff -Nrcpad gcc-17-20260531/gcc/gimple-iterator.cc gcc-17-20260607/gcc/gimple-iterator.cc
*** gcc-17-20260531/gcc/gimple-iterator.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gimple-iterator.cc	Sun Jun  7 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,47 ----
  #include "value-prof.h"
  #include "gimplify.h"
  
+ /* Return true if VAR has no uses at all, including no debug uses.  */
+ 
+ static inline bool
+ completely_unused (const_tree var)
+ {
+   auto *head = &SSA_NAME_IMM_USE_NODE (var);
+   return head->next == head;
+ }
  
  /* Mark the statement STMT as modified, and update it.  */
  
*************** gsi_split_seq_before (gimple_stmt_iterat
*** 422,430 ****
  
  /* Replace the statement pointed-to by GSI to STMT.  If UPDATE_EH_INFO
     is true, the exception handling information of the original
!    statement is moved to the new statement.  Assignments must only be
!    replaced with assignments to the same LHS.  Returns whether EH edge
!    cleanup is required.  */
  
  bool
  gsi_replace (gimple_stmt_iterator *gsi, gimple *stmt, bool update_eh_info)
--- 430,441 ----
  
  /* Replace the statement pointed-to by GSI to STMT.  If UPDATE_EH_INFO
     is true, the exception handling information of the original
!    statement is moved to the new statement.  Returns whether EH edge
!    cleanup is required.
! 
!    If the two statements assign to different SSA names, the caller must
!    ensure that all uses of the old SSA name have been removed before
!    calling this function.  This includes removing all debug uses.  */
  
  bool
  gsi_replace (gimple_stmt_iterator *gsi, gimple *stmt, bool update_eh_info)
*************** gsi_replace (gimple_stmt_iterator *gsi,
*** 436,442 ****
      return false;
  
    gcc_assert (!gimple_has_lhs (orig_stmt) || !gimple_has_lhs (stmt)
! 	      || gimple_get_lhs (orig_stmt) == gimple_get_lhs (stmt));
  
    gimple_set_location (stmt, gimple_location (orig_stmt));
    gimple_set_bb (stmt, gsi_bb (*gsi));
--- 447,454 ----
      return false;
  
    gcc_assert (!gimple_has_lhs (orig_stmt) || !gimple_has_lhs (stmt)
! 	      || gimple_get_lhs (orig_stmt) == gimple_get_lhs (stmt)
! 	      || completely_unused (gimple_get_lhs (orig_stmt)));
  
    gimple_set_location (stmt, gimple_location (orig_stmt));
    gimple_set_bb (stmt, gsi_bb (*gsi));
diff -Nrcpad gcc-17-20260531/gcc/gimple-lower-bitint.cc gcc-17-20260607/gcc/gimple-lower-bitint.cc
*** gcc-17-20260531/gcc/gimple-lower-bitint.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gimple-lower-bitint.cc	Sun Jun  7 22:32:07 2026
*************** struct bitint_large_huge
*** 474,479 ****
--- 474,480 ----
    void lower_cplxpart_stmt (tree, gimple *);
    void lower_complexexpr_stmt (gimple *);
    void lower_bit_query (gimple *);
+   void lower_bswap_bitreverse (tree, gimple *);
    void lower_call (tree, gimple *);
    void lower_asm (gimple *);
    void lower_stmt (gimple *);
*************** bitint_large_huge::lower_bit_query (gimp
*** 6106,6111 ****
--- 6107,6289 ----
      }
  }
  
+ /* Lower a .{BSWAP,BITREVERSE} call with one large/huge _BitInt argument.  */
+ 
+ void
+ bitint_large_huge::lower_bswap_bitreverse (tree obj, gimple *stmt)
+ {
+   tree arg = gimple_call_arg (stmt, 0);
+   tree lhs = gimple_call_lhs (stmt);
+   gimple *g;
+ 
+   if (!lhs)
+     {
+       gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+       gsi_remove (&gsi, true);
+       return;
+     }
+   tree type = TREE_TYPE (arg);
+   gcc_assert (BITINT_TYPE_P (type));
+   bitint_prec_kind kind = bitint_precision_kind (type);
+   gcc_assert (kind >= bitint_prec_large);
+   if (!obj)
+     {
+       int part = var_to_partition (m_map, lhs);
+       gcc_assert (m_vars[part] != NULL_TREE);
+       obj = m_vars[part];
+     }
+   enum internal_fn ifn = gimple_call_internal_fn (stmt);
+   enum built_in_function bcode = END_BUILTINS;
+   switch (limb_prec)
+     {
+     case 16:
+       bcode = ifn == IFN_BSWAP ? BUILT_IN_BSWAP16 : BUILT_IN_BITREVERSE16;
+       break;
+     case 32:
+       bcode = ifn == IFN_BSWAP ? BUILT_IN_BSWAP32 : BUILT_IN_BITREVERSE32;
+       break;
+     case 64:
+       bcode = ifn == IFN_BSWAP ? BUILT_IN_BSWAP64 : BUILT_IN_BITREVERSE64;
+       break;
+     case 128:
+       bcode = ifn == IFN_BSWAP ? BUILT_IN_BSWAP128 : BUILT_IN_BITREVERSE128;
+       break;
+     default:
+       gcc_unreachable ();
+     }
+   tree fndecl = builtin_decl_explicit (bcode);
+   unsigned prec = TYPE_PRECISION (type);
+   tree p = build_int_cst (sizetype,
+ 			  prec / limb_prec - (prec % limb_prec == 0));
+   /* For IFN .BSWAP or .BITREVERSE and
+      FN corresponding __builtin_bswapN or __builtin_bitreverseN where N
+      is limb_prec, lower
+        dst = IFN (src);
+      as
+        size_t p = prec / limb_prec - (prec % limb_prec == 0);
+        if constexpr ((prec % limb_prec) == 0)
+ 	 {
+ 	   for (idx = 0; idx <= p; ++idx)
+ 	     dst[p - idx] = FN (src[idx]);
+ 	 }
+        else
+ 	 {
+ 	   unsigned n1 = prec % limb_prec;
+ 	   unsigned n2 = limb_prec - n1;
+ 	   dst[p] = FN (src[0]) >> n2;
+ 	   for (idx = p - 1; (ssize_t) idx >= 0; --idx)
+ 	     dst[idx] = FN ((src[p - idx] << n2) | (src[p - idx - 1] >> n1));
+ 	 }  */
+   if (prec % limb_prec == 0)
+     {
+       tree idx_next;
+       tree idx = create_loop (size_zero_node, &idx_next);
+       tree pmidx = make_ssa_name (sizetype);
+       g = gimple_build_assign (pmidx, MINUS_EXPR, p, idx);
+       insert_before (g);
+       m_data_cnt = 0;
+       tree t = handle_operand (arg, idx);
+       m_first = false;
+       g = gimple_build_call (fndecl, 1, t);
+       t = make_ssa_name (m_limb_type);
+       gimple_call_set_lhs (g, t);
+       insert_before (g);
+       tree l = limb_access (TREE_TYPE (lhs), obj, pmidx, true);
+       g = gimple_build_assign (l, t);
+       insert_before (g);
+       g = gimple_build_assign (idx_next, PLUS_EXPR, idx, size_one_node);
+       insert_before (g);
+       g = gimple_build_cond (LE_EXPR, idx_next, p, NULL_TREE, NULL_TREE);
+       insert_before (g);
+     }
+   else
+     {
+       tree n1 = build_int_cst (unsigned_type_node, prec % limb_prec);
+       tree n2 = build_int_cst (unsigned_type_node,
+ 			       limb_prec - (prec % limb_prec));
+       m_data_cnt = 0;
+       tree t = handle_operand (arg, bitint_big_endian ? p : size_zero_node);
+       m_first = false;
+       /* Nothing is needed to bswap 8 bits or bitreverse 1 bit, so just
+ 	 mask off higher bits in that case.  */
+       if ((prec % limb_prec) != (ifn == IFN_BSWAP ? 8 : 1))
+ 	{
+ 	  g = gimple_build_call (fndecl, 1, t);
+ 	  t = make_ssa_name (m_limb_type);
+ 	  gimple_call_set_lhs (g, t);
+ 	  insert_before (g);
+ 	  g = gimple_build_assign (make_ssa_name (m_limb_type), RSHIFT_EXPR,
+ 				   t, n2);
+ 	}
+       else
+ 	g = gimple_build_assign (make_ssa_name (m_limb_type), BIT_AND_EXPR,
+ 				 t, build_int_cst (m_limb_type,
+ 						   ifn == IFN_BSWAP
+ 						   ? 0xff : 1));
+       insert_before (g);
+       t = gimple_assign_lhs (g);
+       tree l = limb_access (TREE_TYPE (lhs), obj,
+ 			    bitint_big_endian ? size_zero_node : p, true);
+       g = gimple_build_assign (l, t);
+       insert_before (g);
+       tree pm1 = build_int_cst (sizetype, prec / limb_prec - 1);
+       tree idx_next;
+       tree idx = create_loop (pm1, &idx_next);
+       tree pmidx = make_ssa_name (sizetype);
+       g = gimple_build_assign (pmidx, MINUS_EXPR, p, idx);
+       insert_before (g);
+       m_data_cnt = 0;
+       t = handle_operand (arg, bitint_big_endian ? idx : pmidx);
+       m_data_cnt = 0;
+       g = gimple_build_assign (make_ssa_name (m_limb_type), LSHIFT_EXPR,
+ 			       t, n2);
+       insert_before (g);
+       t = gimple_assign_lhs (g);
+       tree t2 = make_ssa_name (sizetype);
+       if (bitint_big_endian)
+ 	g = gimple_build_assign (t2, PLUS_EXPR, idx, size_one_node);
+       else
+ 	g = gimple_build_assign (t2, PLUS_EXPR, pmidx, size_int (-1));
+       insert_before (g);
+       t2 = handle_operand (arg, t2);
+       g = gimple_build_assign (make_ssa_name (m_limb_type), RSHIFT_EXPR,
+ 			       t2, n1);
+       insert_before (g);
+       t2 = gimple_assign_lhs (g);
+       g = gimple_build_assign (make_ssa_name (m_limb_type), BIT_IOR_EXPR,
+ 			       t, t2);
+       insert_before (g);
+       t = gimple_assign_lhs (g);
+       g = gimple_build_call (fndecl, 1, t);
+       t = make_ssa_name (m_limb_type);
+       gimple_call_set_lhs (g, t);
+       insert_before (g);
+       l = limb_access (TREE_TYPE (lhs), obj,
+ 		       bitint_big_endian ? pmidx : idx, true);
+       g = gimple_build_assign (l, t);
+       insert_before (g);
+       g = gimple_build_assign (idx_next, PLUS_EXPR, idx, size_int (-1));
+       insert_before (g);
+       g = gimple_build_cond (NE_EXPR, idx, size_zero_node, NULL_TREE,
+ 			     NULL_TREE);
+       insert_before (g);
+     }
+   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+   if (bitint_extended == bitint_ext_full
+       && abi_limb_prec > limb_prec
+       && (CEIL (prec, abi_limb_prec) * abi_limb_prec
+ 	  > CEIL (prec, limb_prec) * limb_prec))
+     {
+       m_gsi = gsi;
+       tree p2 = build_int_cst (sizetype,
+ 			       CEIL (prec, abi_limb_prec)
+ 			       * abi_limb_prec / limb_prec - 1);
+       tree l = limb_access (TREE_TYPE (lhs), obj, p2, true);
+       g = gimple_build_assign (l, build_zero_cst (m_limb_type));
+       insert_before (g);
+     }
+ }
+ 
  /* Lower a call statement with one or more large/huge _BitInt
     arguments or large/huge _BitInt return value.  */
  
*************** bitint_large_huge::lower_call (tree obj,
*** 6135,6140 ****
--- 6313,6322 ----
        case IFN_POPCOUNT:
  	lower_bit_query (stmt);
  	return;
+       case IFN_BSWAP:
+       case IFN_BITREVERSE:
+ 	lower_bswap_bitreverse (obj, stmt);
+ 	return;
        default:
  	break;
        }
*************** bitint_large_huge::lower_stmt (gimple *s
*** 6446,6451 ****
--- 6628,6644 ----
  	      lower_call (lhs, g);
  	      goto handled;
  	    }
+ 	  else if (is_gimple_call (g) && gimple_call_internal_p (g))
+ 	    switch (gimple_call_internal_fn (g))
+ 	      {
+ 	      case IFN_BSWAP:
+ 	      case IFN_BITREVERSE:
+ 		lower_call (lhs, g);
+ 		goto handled;
+ 	      default:
+ 		break;
+ 	      }
+ 
  	  m_loc = gimple_location (stmt);
  	}
      }
*************** stmt_needs_operand_addr (gimple *stmt)
*** 6600,6608 ****
        default:
  	break;
        }
!   else if (gimple_call_internal_p (stmt, IFN_MUL_OVERFLOW)
! 	   || gimple_call_internal_p (stmt, IFN_UBSAN_CHECK_MUL))
!     return true;
    return false;
  }
  
--- 6793,6812 ----
        default:
  	break;
        }
!   else if (is_gimple_call (stmt) && gimple_call_internal_p (stmt))
!     switch (gimple_call_internal_fn (stmt))
!       {
!       case IFN_MUL_OVERFLOW:
!       case IFN_UBSAN_CHECK_MUL:
!         return true;
!       /* These two actually don't take address, but reshuffle
! 	 all bytes or bits, so need similar treatment.  */
!       case IFN_BSWAP:
!       case IFN_BITREVERSE:
! 	return true;
!       default:
! 	break;
!       }
    return false;
  }
  
*************** build_bitint_stmt_ssa_conflicts (gimple
*** 6815,6823 ****
  	    }
  	}
      }
!   else if (bitint_big_endian
! 	   && is_gimple_call (stmt)
! 	   && gimple_call_internal_p (stmt))
      switch (gimple_call_internal_fn (stmt))
        {
        case IFN_ADD_OVERFLOW:
--- 7019,7025 ----
  	    }
  	}
      }
!   else if (is_gimple_call (stmt) && gimple_call_internal_p (stmt))
      switch (gimple_call_internal_fn (stmt))
        {
        case IFN_ADD_OVERFLOW:
*************** build_bitint_stmt_ssa_conflicts (gimple
*** 6826,6831 ****
--- 7028,7042 ----
        case IFN_UBSAN_CHECK_SUB:
        case IFN_MUL_OVERFLOW:
        case IFN_UBSAN_CHECK_MUL:
+ 	if (bitint_big_endian)
+ 	  {
+ 	    lhs = gimple_call_lhs (stmt);
+ 	    if (lhs)
+ 	      muldiv_p = true;
+ 	  }
+ 	break;
+       case IFN_BSWAP:
+       case IFN_BITREVERSE:
  	lhs = gimple_call_lhs (stmt);
  	if (lhs)
  	  muldiv_p = true;
*************** gimple_lower_bitint (void)
*** 7623,7628 ****
--- 7834,7860 ----
  		  default:
  		    break;
  		  }
+ 	      else if (is_gimple_call (SSA_NAME_DEF_STMT (s))
+ 		       && gimple_call_internal_p (SSA_NAME_DEF_STMT (s)))
+ 		switch (gimple_call_internal_fn (SSA_NAME_DEF_STMT (s)))
+ 		  {
+ 		  case IFN_BSWAP:
+ 		  case IFN_BITREVERSE:
+ 		    if (gimple_store_p (use_stmt)
+ 			&& is_gimple_assign (use_stmt)
+ 			&& !gimple_has_volatile_ops (use_stmt)
+ 			&& !stmt_ends_bb_p (use_stmt))
+ 		      {
+ 			tree lhs = gimple_assign_lhs (use_stmt);
+ 			if (TREE_CODE (lhs) == COMPONENT_REF
+ 			    && DECL_BIT_FIELD_TYPE (TREE_OPERAND (lhs, 1)))
+ 			  break;
+ 			continue;
+ 		      }
+ 		    break;
+ 		  default:
+ 		    break;
+ 		  }
  	    }
  
  	  /* Also ignore uninitialized uses.  */
*************** gimple_lower_bitint (void)
*** 7678,7683 ****
--- 7910,7931 ----
  		  gimple *use_stmt = USE_STMT (use_p);
  		  if (is_gimple_debug (use_stmt))
  		    continue;
+ 		  if (is_gimple_call (use_stmt)
+ 		      && gimple_call_internal_p (use_stmt))
+ 		    switch (gimple_call_internal_fn (use_stmt))
+ 		      {
+ 		      case IFN_CLZ:
+ 		      case IFN_CTZ:
+ 		      case IFN_CLRSB:
+ 		      case IFN_FFS:
+ 		      case IFN_PARITY:
+ 		      case IFN_POPCOUNT:
+ 		      case IFN_BSWAP:
+ 		      case IFN_BITREVERSE:
+ 			continue;
+ 		      default:
+ 			break;
+ 		      }
  		  if (gimple_code (use_stmt) == GIMPLE_PHI
  		      || is_gimple_call (use_stmt)
  		      || gimple_code (use_stmt) == GIMPLE_ASM
diff -Nrcpad gcc-17-20260531/gcc/gimple-match-exports.cc gcc-17-20260607/gcc/gimple-match-exports.cc
*** gcc-17-20260531/gcc/gimple-match-exports.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gimple-match-exports.cc	Sun Jun  7 22:32:07 2026
*************** build_call_internal (internal_fn fn, gim
*** 266,272 ****
  	    case IFN_FFS:
  	    case IFN_POPCOUNT:
  	    case IFN_PARITY:
! 	      /* 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]))
--- 266,274 ----
  	    case IFN_FFS:
  	    case IFN_POPCOUNT:
  	    case IFN_PARITY:
! 	    case IFN_BSWAP:
! 	    case IFN_BITREVERSE:
! 	      /* For these 8 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]))
diff -Nrcpad gcc-17-20260531/gcc/gimple-ssa-backprop.cc gcc-17-20260607/gcc/gimple-ssa-backprop.cc
*** gcc-17-20260531/gcc/gimple-ssa-backprop.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gimple-ssa-backprop.cc	Sun Jun  7 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 53,85 ****
     (1) Do a post-order traversal of the blocks in the function, walking
         each block backwards.  For each potentially-simplifiable statement
         that defines an SSA name X, examine all uses of X to see what
!        information is actually significant.  Record this as INFO_MAP[X].
         Optimistically ignore for now any back-edge references to
         unprocessed phis.
  
         (An alternative would be to record each use when we visit its
         statement and take the intersection as we go along.  However,
!        this would lead to more SSA names being entered into INFO_MAP
         unnecessarily, only to be taken out again later.  At the moment
         very few SSA names end up with useful information.)
  
     (2) Iteratively reduce the optimistic result of (1) until we reach
!        a maximal fixed point (which at the moment would mean revisiting
!        statements at most once).  First push all SSA names that used an
         optimistic assumption about a backedge phi onto a worklist.
         While the worklist is nonempty, pick off an SSA name X and recompute
!        INFO_MAP[X].  If the value changes, push all SSA names used in the
!        definition of X onto the worklist.
  
!    (3) Iterate over each SSA name X with info in INFO_MAP, in the
         opposite order to (1), i.e. a forward reverse-post-order walk.
!        Try to optimize the definition of X using INFO_MAP[X] and fold
!        the result.  (This ensures that we fold definitions before uses.)
  
!    (4) Iterate over each SSA name X with info in INFO_MAP, in the same
!        order as (1), and delete any statements that are now dead.
!        (This ensures that if a sequence of statements is dead,
!        we delete the last statement first.)
  
     Note that this pass does not deal with direct redundancies,
     such as cos(-x)->cos(x).  match.pd handles those cases instead.  */
--- 53,97 ----
     (1) Do a post-order traversal of the blocks in the function, walking
         each block backwards.  For each potentially-simplifiable statement
         that defines an SSA name X, examine all uses of X to see what
!        information is actually significant.  Record this in VAR_TABLE[X].
         Optimistically ignore for now any back-edge references to
         unprocessed phis.
  
         (An alternative would be to record each use when we visit its
         statement and take the intersection as we go along.  However,
!        this would lead to more SSA names being entered into VAR_TABLE
         unnecessarily, only to be taken out again later.  At the moment
         very few SSA names end up with useful information.)
  
     (2) Iteratively reduce the optimistic result of (1) until we reach
!        a maximal fixed point.  First push all SSA names that used an
         optimistic assumption about a backedge phi onto a worklist.
         While the worklist is nonempty, pick off an SSA name X and recompute
!        the usage information in VAR_TABLE[X].  If the value changes, push all
!        SSA names used in the definition of X onto the worklist.
  
!    (3) Iterate over each SSA name X with info in VAR_TABLE, in the
         opposite order to (1), i.e. a forward reverse-post-order walk.
!        Try to use the information in VAR_TABLE[X] to replace the definition
!        of X with a simpler calculation that may yield a different result.
!        When deciding to do such a replacement, record that each entry in
!        VAR_TABLE that directly or indirectly depends on X will then also
!        need to be replaced with a different calculation.  (The information
!        in VAR_TABLE guarantees that other uses of X are unaffected.)
  
!    (4) Iterate over each SSA name X with info in VAR_TABLE, in the same
!        order as (1).  Carry out any scheduled replacement of X with a
!        different value, ensuring that debug uses either keep their current
!        value or are reset.  (This traversal order ensures that, if a chain
!        of values is being replaced, a debug bind is created for the last
!        value first, exposing a new debug use of the preceding value in
!        the chain.)
! 
!    (5) Iterate over each SSA name X with info in VAR_TABLE, in the same order
!        as (1).  Delete any statements that are now dead.  (This traversal order
!        ensures that if a sequence of statements is dead, we delete the last
!        statement first.  It is not safe to do this on-the-fly during (4)
!        because multiple SSA names might be replaced with the same value.)
  
     Note that this pass does not deal with direct redundancies,
     such as cos(-x)->cos(x).  match.pd handles those cases instead.  */
*************** dump_usage_info (FILE *file, tree var, u
*** 205,210 ****
--- 217,269 ----
      }
  }
  
+ /* Information about an SSA name that we might want to optimize.  */
+ struct var_info
+ {
+   var_info (tree var, unsigned int index, const usage_info &info)
+     : var (var), new_value (var), seq (nullptr), index (index), info (info)
+   {}
+ 
+   /* The SSA name itself.  */
+   tree var;
+ 
+   /* The value that VAR will be replaced with, or VAR itself if no
+      replacement is scheduled.  */
+   tree new_value;
+ 
+   /* If NEW_VALUE != VAR, the definition of VAR will be replaced by this
+      sequence, with an empty sequence meaning that the definition of VAR
+      should simply be deleted.  */
+   gimple_seq seq;
+ 
+   /* The index of this entry in the M_VARS array.  */
+   unsigned int index;
+ 
+   /* Information about all uses of the SSA name.  */
+   usage_info info;
+ };
+ 
+ /* Hash var_info based on the SSA name.  */
+ struct var_info_hasher : nofree_ptr_hash<var_info>
+ {
+   using compare_type = const_tree;
+ 
+   static inline hashval_t hash (const var_info *);
+   static inline bool equal (const var_info *, const_tree);
+ };
+ 
+ hashval_t
+ var_info_hasher::hash (const var_info *v)
+ {
+   return SSA_NAME_VERSION (v->var);
+ }
+ 
+ bool
+ var_info_hasher::equal (const var_info *v, const_tree var)
+ {
+   return v->var == var;
+ }
+ 
  /* Represents one execution of the pass.  */
  class backprop
  {
*************** public:
*** 215,224 ****
    void execute ();
  
  private:
!   const usage_info *lookup_operand (tree);
  
!   void push_to_worklist (tree);
!   tree pop_from_worklist ();
  
    void process_builtin_call_use (gcall *, tree, usage_info *);
    void process_assign_use (gassign *, tree, usage_info *);
--- 274,283 ----
    void execute ();
  
  private:
!   var_info *lookup_operand (tree);
  
!   void push_to_worklist (var_info *);
!   var_info *pop_from_worklist ();
  
    void process_builtin_call_use (gcall *, tree, usage_info *);
    void process_assign_use (gassign *, tree, usage_info *);
*************** private:
*** 226,261 ****
    void process_use (gimple *, tree, usage_info *);
    bool intersect_uses (tree, usage_info *);
    void reprocess_inputs (gimple *);
!   void process_var (tree);
    void process_block (basic_block);
  
!   void prepare_change (tree);
!   void complete_change (gimple *);
!   void optimize_builtin_call (gcall *, tree, const usage_info *);
!   void replace_assign_rhs (gassign *, tree, tree, tree, tree);
!   void optimize_assign (gassign *, tree, const usage_info *);
!   void optimize_phi (gphi *, tree, const usage_info *);
  
!   typedef hash_map <tree_ssa_name_hash, usage_info *> info_map_type;
!   typedef std::pair <tree, usage_info *> var_info_pair;
  
    /* The function we're optimizing.  */
    function *m_fn;
  
!   /* Pool for allocating usage_info structures.  */
!   object_allocator <usage_info> m_info_pool;
  
!   /* Maps an SSA name to a description of all uses of that SSA name.
!      All the usage_infos satisfy is_useful.
  
!      We use a hash_map because the map is expected to be sparse
       (i.e. most SSA names won't have useful information attached to them).
       We could move to a directly-indexed array if that situation changes.  */
!   info_map_type m_info_map;
  
!   /* Post-ordered list of all potentially-interesting SSA names,
!      along with information that describes all uses.  */
!   auto_vec <var_info_pair, 128> m_vars;
  
    /* A bitmap of blocks that we have finished processing in the initial
       post-order walk.  */
--- 285,322 ----
    void process_use (gimple *, tree, usage_info *);
    bool intersect_uses (tree, usage_info *);
    void reprocess_inputs (gimple *);
!   void process_var (tree, var_info *);
    void process_block (basic_block);
  
!   void set_new_value (var_info *, tree);
!   tree subst_operand (tree);
!   gimple *copy_and_subst (var_info *);
!   void finish_stmt (var_info *, gimple *);
!   void optimize_builtin_call (gcall *, var_info *);
!   void replace_assign_rhs (var_info *, tree, tree, tree);
!   void optimize_assign (gassign *, var_info *);
!   void optimize_phi (gphi *, var_info *);
  
!   void propagate_change (var_info *);
!   void commit_replacement (var_info *);
  
    /* The function we're optimizing.  */
    function *m_fn;
  
!   /* Pool for allocating var_info structures.  */
!   object_allocator<var_info> m_var_pool;
  
!   /* All extant var_infos, hashed by SSA name.  All the usage_infos satisfy
!      is_useful.
  
!      We use a hash_table because the table is expected to be sparse
       (i.e. most SSA names won't have useful information attached to them).
       We could move to a directly-indexed array if that situation changes.  */
!   hash_table<var_info_hasher> m_var_table;
  
!   /* A post-ordered list of the contents of M_VAR_TABLE.  Entries might
!      be null if we initially created a var_info and then withdrew it.  */
!   auto_vec<var_info *, 128> m_vars;
  
    /* A bitmap of blocks that we have finished processing in the initial
       post-order walk.  */
*************** private:
*** 266,340 ****
       M_VISITED_BLOCKS.  */
    auto_bitmap m_visited_phis;
  
!   /* A worklist of SSA names whose definitions need to be reconsidered.  */
!   auto_vec <tree, 64> m_worklist;
  
!   /* The SSA names in M_WORKLIST, identified by their SSA_NAME_VERSION.
!      We use a bitmap rather than an sbitmap because most SSA names are
!      never added to the worklist.  */
!   bitmap m_worklist_names;
  };
  
  backprop::backprop (function *fn)
    : m_fn (fn),
!     m_info_pool ("usage_info"),
      m_visited_blocks (last_basic_block_for_fn (m_fn)),
!     m_worklist_names (BITMAP_ALLOC (NULL))
  {
    bitmap_clear (m_visited_blocks);
  }
  
  backprop::~backprop ()
  {
!   BITMAP_FREE (m_worklist_names);
!   m_info_pool.release ();
  }
  
! /* Return usage information for general operand OP, or null if none.  */
  
! const usage_info *
  backprop::lookup_operand (tree op)
  {
    if (op && TREE_CODE (op) == SSA_NAME)
!     {
!       usage_info **slot = m_info_map.get (op);
!       if (slot)
! 	return *slot;
!     }
    return NULL;
  }
  
! /* Add SSA name VAR to the worklist, if it isn't on the worklist already.  */
  
  void
! backprop::push_to_worklist (tree var)
  {
!   if (!bitmap_set_bit (m_worklist_names, SSA_NAME_VERSION (var)))
!     return;
!   m_worklist.safe_push (var);
!   if (dump_file && (dump_flags & TDF_DETAILS))
      {
        fprintf (dump_file, "[WORKLIST] Pushing ");
!       print_generic_expr (dump_file, var);
        fprintf (dump_file, "\n");
      }
  }
  
! /* Remove and return the next SSA name from the worklist.  The worklist
     is known to be nonempty.  */
  
! tree
  backprop::pop_from_worklist ()
  {
!   tree var = m_worklist.pop ();
!   bitmap_clear_bit (m_worklist_names, SSA_NAME_VERSION (var));
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
        fprintf (dump_file, "[WORKLIST] Popping ");
!       print_generic_expr (dump_file, var);
        fprintf (dump_file, "\n");
      }
!   return var;
  }
  
  /* Make INFO describe all uses of RHS in CALL, which is a call to a
--- 327,409 ----
       M_VISITED_BLOCKS.  */
    auto_bitmap m_visited_phis;
  
!   /* Two bitmaps that can be used for worklists.  The elements represent
!      indices into M_VARS.  */
!   auto_bitmap m_worklist1, m_worklist2;
  
!   /* Used to perform a double-worklist update.  M_THIS_WORKLIST contains
!      the elements of M_VARS that should be processed in the current pass,
!      whereas M_NEXT_WORKLIST contains the elements of M_VARS that should
!      be processed in the next pass.
! 
!      In a post-order traversal, any member of M_VARS beyond index
!      M_WORKLIST_THRESHOLD can be added to M_THIS_WORKLIST whereas others
!      should be added to M_NEXT_WORKLIST.  */
!   bitmap m_this_worklist, m_next_worklist;
!   unsigned int m_worklist_threshold;
  };
  
  backprop::backprop (function *fn)
    : m_fn (fn),
!     m_var_pool ("var_info"),
!     m_var_table (64),
      m_visited_blocks (last_basic_block_for_fn (m_fn)),
!     m_this_worklist (m_worklist1),
!     m_next_worklist (m_worklist2),
!     m_worklist_threshold (UINT_MAX)
  {
    bitmap_clear (m_visited_blocks);
+   bitmap_tree_view (m_worklist1);
+   bitmap_tree_view (m_worklist2);
  }
  
  backprop::~backprop ()
  {
!   m_var_pool.release ();
  }
  
! /* Return the var_info for general operand OP, or null if none.  */
  
! var_info *
  backprop::lookup_operand (tree op)
  {
    if (op && TREE_CODE (op) == SSA_NAME)
!     return m_var_table.find_with_hash (op, SSA_NAME_VERSION (op));
    return NULL;
  }
  
! /* Add V to the worklist, if it isn't on the worklist already.  */
  
  void
! backprop::push_to_worklist (var_info *v)
  {
!   bitmap worklist = (v->index > m_worklist_threshold
! 		     ? m_this_worklist
! 		     : m_next_worklist);
!   if (bitmap_set_bit (worklist, v->index)
!       && (dump_file && (dump_flags & TDF_DETAILS)))
      {
        fprintf (dump_file, "[WORKLIST] Pushing ");
!       print_generic_expr (dump_file, v->var);
        fprintf (dump_file, "\n");
      }
  }
  
! /* Remove and return the next var_info from the worklist.  The worklist
     is known to be nonempty.  */
  
! var_info *
  backprop::pop_from_worklist ()
  {
!   m_worklist_threshold = bitmap_clear_first_set_bit (m_this_worklist);
!   var_info *v = m_vars[m_worklist_threshold];
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
        fprintf (dump_file, "[WORKLIST] Popping ");
!       print_generic_expr (dump_file, v->var);
        fprintf (dump_file, "\n");
      }
!   return v;
  }
  
  /* Make INFO describe all uses of RHS in CALL, which is a call to a
*************** backprop::process_builtin_call_use (gcal
*** 400,412 ****
  
      default:
        if (negate_mathfn_p (fn))
! 	{
! 	  /* The sign of the (single) input doesn't matter provided
! 	     that the sign of the output doesn't matter.  */
! 	  const usage_info *lhs_info = lookup_operand (lhs);
! 	  if (lhs_info)
! 	    info->flags.ignore_sign = lhs_info->flags.ignore_sign;
! 	}
        break;
      }
  }
--- 469,478 ----
  
      default:
        if (negate_mathfn_p (fn))
! 	/* The sign of the (single) input doesn't matter provided
! 	   that the sign of the output doesn't matter.  */
! 	if (var_info *lhsv = lookup_operand (lhs))
! 	  info->flags.ignore_sign = lhsv->info.flags.ignore_sign;
        break;
      }
  }
*************** backprop::process_assign_use (gassign *a
*** 429,439 ****
        /* For A = B ? C : D, propagate information about all uses of A
  	 to C and D.  */
        if (rhs != gimple_assign_rhs1 (assign))
! 	{
! 	  const usage_info *lhs_info = lookup_operand (lhs);
! 	  if (lhs_info)
! 	    *info = *lhs_info;
! 	}
        break;
  
      case MULT_EXPR:
--- 495,502 ----
        /* For A = B ? C : D, propagate information about all uses of A
  	 to C and D.  */
        if (rhs != gimple_assign_rhs1 (assign))
! 	if (var_info *lhsv = lookup_operand (lhs))
! 	  *info = lhsv->info;
        break;
  
      case MULT_EXPR:
*************** backprop::process_assign_use (gassign *a
*** 448,458 ****
        /* If the sign of the result doesn't matter, the sign of the inputs
  	 doesn't matter either.  */
        if (FLOAT_TYPE_P (TREE_TYPE (rhs)))
! 	{
! 	  const usage_info *lhs_info = lookup_operand (lhs);
! 	  if (lhs_info)
! 	    info->flags.ignore_sign = lhs_info->flags.ignore_sign;
! 	}
        break;
  
      default:
--- 511,518 ----
        /* If the sign of the result doesn't matter, the sign of the inputs
  	 doesn't matter either.  */
        if (FLOAT_TYPE_P (TREE_TYPE (rhs)))
! 	if (var_info *lhsv = lookup_operand (lhs))
! 	  info->flags.ignore_sign = lhsv->info.flags.ignore_sign;
        break;
  
      default:
*************** void
*** 466,473 ****
  backprop::process_phi_use (gphi *phi, usage_info *info)
  {
    tree result = gimple_phi_result (phi);
!   if (const usage_info *result_info = lookup_operand (result))
!     *info = *result_info;
  }
  
  /* Make INFO describe all uses of RHS in STMT.  */
--- 526,533 ----
  backprop::process_phi_use (gphi *phi, usage_info *info)
  {
    tree result = gimple_phi_result (phi);
!   if (var_info *resultv = lookup_operand (result))
!     *info = resultv->info;
  }
  
  /* Make INFO describe all uses of RHS in STMT.  */
*************** backprop::reprocess_inputs (gimple *stmt
*** 547,557 ****
    use_operand_p use_p;
    ssa_op_iter oi;
    FOR_EACH_PHI_OR_STMT_USE (use_p, stmt, oi, SSA_OP_USE)
!     {
!       tree var = get_use_from_ptr (use_p);
!       if (lookup_operand (var))
! 	push_to_worklist (var);
!     }
  }
  
  /* Say that we're recording INFO for SSA name VAR, or that we're deleting
--- 607,614 ----
    use_operand_p use_p;
    ssa_op_iter oi;
    FOR_EACH_PHI_OR_STMT_USE (use_p, stmt, oi, SSA_OP_USE)
!     if (var_info *v = lookup_operand (get_use_from_ptr (use_p)))
!       push_to_worklist (v);
  }
  
  /* Say that we're recording INFO for SSA name VAR, or that we're deleting
*************** dump_var_info (tree var, usage_info *inf
*** 567,596 ****
  }
  
  /* Process all uses of VAR and record or update the result in
!    M_INFO_MAP and M_VARS.  */
  
  void
! backprop::process_var (tree var)
  {
    if (has_zero_uses (var))
      return;
  
    usage_info info;
    intersect_uses (var, &info);
  
    gimple *stmt = SSA_NAME_DEF_STMT (var);
    if (info.is_useful ())
      {
!       bool existed;
!       usage_info *&map_info = m_info_map.get_or_insert (var, &existed);
!       if (!existed)
  	{
  	  /* Recording information about VAR for the first time.  */
! 	  map_info = m_info_pool.allocate ();
! 	  *map_info = info;
! 	  m_vars.safe_push (var_info_pair (var, map_info));
  	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    dump_var_info (var, map_info, "Recording new information");
  
  	  /* If STMT is a phi, reprocess any backedge uses.  This is a
  	     no-op for other uses, which won't have any information
--- 624,658 ----
  }
  
  /* Process all uses of VAR and record or update the result in
!    M_VAR_TABLE and M_VARS.  V is the current entry for VAR, or null
!    if we are looking at it for the first time.  */
  
  void
! backprop::process_var (tree var, var_info *v)
  {
    if (has_zero_uses (var))
      return;
  
+   /* Propagating along abnormal edges is delicate, punt for now.  */
+   if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (var))
+     return;
+ 
    usage_info info;
    intersect_uses (var, &info);
  
    gimple *stmt = SSA_NAME_DEF_STMT (var);
+   auto hash = SSA_NAME_VERSION (var);
    if (info.is_useful ())
      {
!       if (!v)
  	{
  	  /* Recording information about VAR for the first time.  */
! 	  v = m_var_pool.allocate (var, m_vars.length (), info);
! 	  m_vars.safe_push (v);
! 	  *m_var_table.find_slot_with_hash (var, hash, INSERT) = v;
! 
  	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    dump_var_info (var, &v->info, "Recording new information");
  
  	  /* If STMT is a phi, reprocess any backedge uses.  This is a
  	     no-op for other uses, which won't have any information
*************** backprop::process_var (tree var)
*** 598,620 ****
  	  if (is_a <gphi *> (stmt))
  	    reprocess_inputs (stmt);
  	}
!       else if (info != *map_info)
  	{
  	  /* Recording information that is less optimistic than before.  */
! 	  gcc_checking_assert ((info & *map_info) == info);
! 	  *map_info = info;
  	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    dump_var_info (var, map_info, "Updating information");
  	  reprocess_inputs (stmt);
  	}
      }
    else
      {
!       if (usage_info **slot = m_info_map.get (var))
  	{
  	  /* Removing previously-recorded information.  */
! 	  **slot = info;
! 	  m_info_map.remove (var);
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    dump_var_info (var, NULL, "Deleting information");
  	  reprocess_inputs (stmt);
--- 660,684 ----
  	  if (is_a <gphi *> (stmt))
  	    reprocess_inputs (stmt);
  	}
!       else if (info != v->info)
  	{
  	  /* Recording information that is less optimistic than before.  */
! 	  gcc_checking_assert ((info & v->info) == info);
! 	  v->info = info;
  	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    dump_var_info (var, &v->info, "Updating information");
  	  reprocess_inputs (stmt);
  	}
      }
    else
      {
!       if (v)
  	{
  	  /* Removing previously-recorded information.  */
! 	  m_var_table.remove_elt_with_hash (var, hash);
! 	  m_vars[v->index] = nullptr;
! 	  m_var_pool.remove (v);
! 
  	  if (dump_file && (dump_flags & TDF_DETAILS))
  	    dump_var_info (var, NULL, "Deleting information");
  	  reprocess_inputs (stmt);
*************** backprop::process_block (basic_block bb)
*** 639,691 ****
      {
        tree lhs = gimple_get_lhs (gsi_stmt (gsi));
        if (lhs && TREE_CODE (lhs) == SSA_NAME)
! 	process_var (lhs);
      }
    for (gphi_iterator gpi = gsi_start_phis (bb); !gsi_end_p (gpi);
         gsi_next (&gpi))
      {
        tree result = gimple_phi_result (gpi.phi ());
!       process_var (result);
        bitmap_set_bit (m_visited_phis, SSA_NAME_VERSION (result));
      }
    bitmap_clear (m_visited_phis);
  }
  
! /* Delete the definition of VAR, which has no uses.  */
  
  static void
! remove_unused_var (tree var)
  {
!   gimple *stmt = SSA_NAME_DEF_STMT (var);
!   if (dump_file && (dump_flags & TDF_DETAILS))
      {
        fprintf (dump_file, "Deleting ");
        print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
      }
-   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
    if (gimple_code (stmt) == GIMPLE_PHI)
!     remove_phi_node (&gsi, true);
    else
      {
        unlink_stmt_vdef (stmt);
!       gsi_remove (&gsi, true);
        release_defs (stmt);
      }
  }
  
- /* Note that we're replacing OLD_RHS with NEW_RHS in STMT.  */
- 
- static void
- note_replacement (gimple *stmt, tree old_rhs, tree new_rhs)
- {
-   fprintf (dump_file, "Replacing use of ");
-   print_generic_expr (dump_file, old_rhs);
-   fprintf (dump_file, " with ");
-   print_generic_expr (dump_file, new_rhs);
-   fprintf (dump_file, " in ");
-   print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
- }
- 
  /* If RHS is an SSA name whose definition just changes the sign of a value,
     return that other value, otherwise return null.  */
  
--- 703,742 ----
      {
        tree lhs = gimple_get_lhs (gsi_stmt (gsi));
        if (lhs && TREE_CODE (lhs) == SSA_NAME)
! 	process_var (lhs, nullptr);
      }
    for (gphi_iterator gpi = gsi_start_phis (bb); !gsi_end_p (gpi);
         gsi_next (&gpi))
      {
        tree result = gimple_phi_result (gpi.phi ());
!       process_var (result, nullptr);
        bitmap_set_bit (m_visited_phis, SSA_NAME_VERSION (result));
      }
    bitmap_clear (m_visited_phis);
  }
  
! /* Delete the statement at GSI, which is now dead.  Note the deletion in the
!    dump file unless QUIET is true.  */
  
  static void
! remove_dead_stmt (gimple_stmt_iterator *gsi, bool quiet = false)
  {
!   gimple *stmt = gsi_stmt (*gsi);
!   if (!quiet && dump_file && (dump_flags & TDF_DETAILS))
      {
        fprintf (dump_file, "Deleting ");
        print_gimple_stmt (dump_file, stmt, 0, TDF_SLIM);
      }
    if (gimple_code (stmt) == GIMPLE_PHI)
!     remove_phi_node (gsi, true);
    else
      {
        unlink_stmt_vdef (stmt);
!       gsi_remove (gsi, true);
        release_defs (stmt);
      }
  }
  
  /* If RHS is an SSA name whose definition just changes the sign of a value,
     return that other value, otherwise return null.  */
  
*************** strip_sign_op (tree rhs)
*** 740,823 ****
    return new_rhs;
  }
  
! /* Start a change in the value of VAR that is suitable for all non-debug
!    uses of VAR.  We need to make sure that debug statements continue to
!    use the original definition of VAR where possible, or are nullified
!    otherwise.  */
  
  void
! backprop::prepare_change (tree var)
  {
!   if (MAY_HAVE_DEBUG_BIND_STMTS)
!     insert_debug_temp_for_var_def (NULL, var);
!   reset_flow_sensitive_info (var);
  }
  
! /* STMT has been changed.  Give the fold machinery a chance to simplify
!    and canonicalize it (e.g. by ensuring that commutative operands have
!    the right order), then record the updates.  */
  
! void
! backprop::complete_change (gimple *stmt)
  {
!   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
!   if (fold_stmt (&gsi))
      {
!       if (dump_file && (dump_flags & TDF_DETAILS))
  	{
! 	  fprintf (dump_file, "  which folds to: ");
! 	  print_gimple_stmt (dump_file, gsi_stmt (gsi), 0, TDF_SLIM);
  	}
      }
-   update_stmt (gsi_stmt (gsi));
  }
  
! /* Optimize CALL, a call to a built-in function with lhs LHS, on the
!    basis that INFO describes all uses of LHS.  */
  
  void
! backprop::optimize_builtin_call (gcall *call, tree lhs, const usage_info *info)
  {
    /* If we have an f such that -f(x) = f(-x), and if the sign of the result
       doesn't matter, strip any sign operations from the input.  */
!   if (info->flags.ignore_sign
        && negate_mathfn_p (gimple_call_combined_fn (call)))
      {
        tree new_arg = strip_sign_op (gimple_call_arg (call, 0));
        if (new_arg)
  	{
! 	  prepare_change (lhs);
! 	  gimple_call_set_arg (call, 0, new_arg);
! 	  complete_change (call);
  	}
      }
  }
  
! /* Optimize ASSIGN, an assignment to LHS, by replacing rhs operand N
!    with RHS<N>, if RHS<N> is nonnull.  This may change the value of LHS.  */
  
  void
! backprop::replace_assign_rhs (gassign *assign, tree lhs, tree rhs1,
! 			      tree rhs2, tree rhs3)
  {
    if (!rhs1 && !rhs2 && !rhs3)
      return;
  
!   prepare_change (lhs);
    if (rhs1)
!     gimple_assign_set_rhs1 (assign, rhs1);
    if (rhs2)
!     gimple_assign_set_rhs2 (assign, rhs2);
    if (rhs3)
!     gimple_assign_set_rhs3 (assign, rhs3);
!   complete_change (assign);
  }
  
! /* Optimize ASSIGN, an assignment to LHS, on the basis that INFO
!    describes all uses of LHS.  */
  
  void
! backprop::optimize_assign (gassign *assign, tree lhs, const usage_info *info)
  {
    switch (gimple_assign_rhs_code (assign))
      {
--- 791,952 ----
    return new_rhs;
  }
  
! /* Note that V's SSA name will be replaced with NEW_VALUE.  */
  
  void
! backprop::set_new_value (var_info *v, tree new_value)
  {
!   if (dump_file && (dump_flags & TDF_DETAILS))
!     {
!       if (v->var == v->new_value)
! 	fprintf (dump_file, "\n");
!       fprintf (dump_file, "Uses of ");
!       print_generic_expr (dump_file, v->var);
!       fprintf (dump_file, " will be replaced by ");
!       print_generic_expr (dump_file, new_value);
!       fprintf (dump_file, "\n");
!     }
!   v->new_value = new_value;
  }
  
! /* Apply all current substitutions to gimple operand VALUE.  */
  
! tree
! backprop::subst_operand (tree value)
  {
!   if (const var_info *v = lookup_operand (value))
!     return v->new_value;
! 
!   return value;
! }
! 
! /* Assuming that V's SSA name occurs as "lhs" in a statement of the form:
! 
!       S: lhs = op (rhs1, rhs2, ...)
! 
!    create and insert a new statement:
! 
!       S': lhs'= op (rhs1', rhs2', ...)
! 
!    where:
! 
!       lhs' is a new SSA name
!       rhsN' = subst_operand (rhsN)
! 
!    Arrange for lhs to be replaced with lhs'.
! 
!    Return S'.  After making any required changes to S', the caller should
!    call finish_stmt (V, S') to finish scheduling the replacement.  */
! 
! gimple *
! backprop::copy_and_subst (var_info *v)
! {
!   gcc_assert (v->new_value == v->var);
!   gimple *stmt = SSA_NAME_DEF_STMT (v->var);
!   set_new_value (v, copy_ssa_name_fn (m_fn, v->var, stmt));
!   if (auto *phi = dyn_cast<gphi *> (stmt))
      {
!       gphi *new_phi = create_phi_node (v->new_value, gimple_bb (phi));
!       gimple_set_location (new_phi, gimple_location (phi));
!       for (unsigned int i = 0; i < gimple_phi_num_args (phi); ++i)
  	{
! 	  tree arg_def = subst_operand (gimple_phi_arg_def (phi, i));
! 	  SET_USE (gimple_phi_arg_imm_use_ptr (new_phi, i), arg_def);
  	}
+       return new_phi;
+     }
+   else
+     {
+       gimple *new_stmt = gimple_copy (stmt);
+       for (unsigned int i = 0; i < gimple_num_ops (new_stmt); ++i)
+ 	{
+ 	  tree *op_ptr = gimple_op_ptr (new_stmt, i);
+ 	  *op_ptr = subst_operand (*op_ptr);
+ 	}
+       SSA_NAME_DEF_STMT (v->new_value) = new_stmt;
+       gimple_seq_add_stmt (&v->seq, new_stmt);
+       return new_stmt;
      }
  }
  
! /* Finalize STMT, whose lhs will replace V's SSA name.  */
  
  void
! backprop::finish_stmt (var_info *v, gimple *stmt)
! {
!   if (dump_file && (dump_flags & TDF_DETAILS))
!     {
!       fprintf (dump_file, "Replacing ");
!       print_gimple_stmt (dump_file, SSA_NAME_DEF_STMT (v->var), TDF_SLIM);
!       fprintf (dump_file, "     with ");
!       print_gimple_stmt (dump_file, stmt, TDF_SLIM);
!     }
!   tree new_value = v->new_value;
!   gimple_stmt_iterator gsi;
!   if (auto *phi = dyn_cast<gphi *> (stmt))
!     {
!       gsi = gsi_for_stmt (phi);
!       new_value = degenerate_phi_result (phi);
!     }
!   else
!     {
!       gsi = gsi_for_stmt (stmt, &v->seq);
!       fold_stmt (&gsi);
!       stmt = gsi_stmt (gsi);
!       if (gimple_assign_single_p (stmt))
! 	new_value = gimple_assign_rhs1 (stmt);
!     }
!   update_stmt (stmt);
!   if (new_value && new_value != v->new_value && is_gimple_val (new_value))
!     {
!       remove_dead_stmt (&gsi);
!       set_new_value (v, new_value);
!     }
! }
! 
! /* Optimize CALL, a call to a built-in function, given that V describes
!    its lhs.  */
! 
! void
! backprop::optimize_builtin_call (gcall *call, var_info *v)
  {
    /* If we have an f such that -f(x) = f(-x), and if the sign of the result
       doesn't matter, strip any sign operations from the input.  */
!   if (v->info.flags.ignore_sign
        && negate_mathfn_p (gimple_call_combined_fn (call)))
      {
        tree new_arg = strip_sign_op (gimple_call_arg (call, 0));
        if (new_arg)
  	{
! 	  call = as_a<gcall *> (copy_and_subst (v));
! 	  gimple_call_set_arg (call, 0, subst_operand (new_arg));
! 	  finish_stmt (v, call);
  	}
      }
  }
  
! /* Optimize V by replacing rhs operand N with RHS<N>, if RHS<N> is nonnull.  */
  
  void
! backprop::replace_assign_rhs (var_info *v, tree rhs1, tree rhs2, tree rhs3)
  {
    if (!rhs1 && !rhs2 && !rhs3)
      return;
  
!   auto *assign = as_a<gassign *> (copy_and_subst (v));
    if (rhs1)
!     gimple_assign_set_rhs1 (assign, subst_operand (rhs1));
    if (rhs2)
!     gimple_assign_set_rhs2 (assign, subst_operand (rhs2));
    if (rhs3)
!     gimple_assign_set_rhs3 (assign, subst_operand (rhs3));
!   finish_stmt (v, assign);
  }
  
! /* Optimize ASSIGN given that V describes its lhs.  */
  
  void
! backprop::optimize_assign (gassign *assign, var_info *v)
  {
    switch (gimple_assign_rhs_code (assign))
      {
*************** backprop::optimize_assign (gassign *assi
*** 825,833 ****
      case RDIV_EXPR:
        /* If the sign of the result doesn't matter, strip sign operations
  	 from both inputs.  */
!       if (info->flags.ignore_sign)
! 	replace_assign_rhs (assign, lhs,
! 			    strip_sign_op (gimple_assign_rhs1 (assign)),
  			    strip_sign_op (gimple_assign_rhs2 (assign)),
  			    NULL_TREE);
        break;
--- 954,961 ----
      case RDIV_EXPR:
        /* If the sign of the result doesn't matter, strip sign operations
  	 from both inputs.  */
!       if (v->info.flags.ignore_sign)
! 	replace_assign_rhs (v, strip_sign_op (gimple_assign_rhs1 (assign)),
  			    strip_sign_op (gimple_assign_rhs2 (assign)),
  			    NULL_TREE);
        break;
*************** backprop::optimize_assign (gassign *assi
*** 835,843 ****
      case COND_EXPR:
        /* If the sign of A ? B : C doesn't matter, strip sign operations
  	 from both B and C.  */
!       if (info->flags.ignore_sign)
! 	replace_assign_rhs (assign, lhs,
! 			    NULL_TREE,
  			    strip_sign_op (gimple_assign_rhs2 (assign)),
  			    strip_sign_op (gimple_assign_rhs3 (assign)));
        break;
--- 963,970 ----
      case COND_EXPR:
        /* If the sign of A ? B : C doesn't matter, strip sign operations
  	 from both B and C.  */
!       if (v->info.flags.ignore_sign)
! 	replace_assign_rhs (v, NULL_TREE,
  			    strip_sign_op (gimple_assign_rhs2 (assign)),
  			    strip_sign_op (gimple_assign_rhs3 (assign)));
        break;
*************** backprop::optimize_assign (gassign *assi
*** 847,892 ****
      }
  }
  
! /* Optimize PHI, which defines VAR, on the basis that INFO describes all
!    uses of the result.  */
  
  void
! backprop::optimize_phi (gphi *phi, tree var, const usage_info *info)
  {
!   /* If the sign of the result doesn't matter, try to strip sign operations
!      from arguments.  */
!   if (info->flags.ignore_sign)
      {
!       basic_block bb = gimple_bb (phi);
!       use_operand_p use;
!       ssa_op_iter oi;
!       bool replaced = false;
!       FOR_EACH_PHI_ARG (use, phi, oi, SSA_OP_USE)
  	{
! 	  /* Propagating along abnormal edges is delicate, punt for now.  */
! 	  const int index = PHI_ARG_INDEX_FROM_USE (use);
! 	  if (EDGE_PRED (bb, index)->flags & EDGE_ABNORMAL)
! 	    continue;
! 
! 	  tree new_arg = strip_sign_op (USE_FROM_PTR (use));
  	  if (new_arg)
  	    {
! 	      if (!replaced)
! 		prepare_change (var);
! 	      if (dump_file && (dump_flags & TDF_DETAILS))
! 		note_replacement (phi, USE_FROM_PTR (use), new_arg);
! 	      replace_exp (use, new_arg);
! 	      replaced = true;
  	    }
  	}
      }
  }
  
  void
  backprop::execute ()
  {
    /* Phase 1: Traverse the function, making optimistic assumptions
!      about any phi whose definition we haven't seen.  */
    int *postorder = XNEWVEC (int, n_basic_blocks_for_fn (m_fn));
    unsigned int postorder_num = post_order_compute (postorder, false, false);
    for (unsigned int i = 0; i < postorder_num; ++i)
--- 974,1055 ----
      }
  }
  
! /* Optimize PHI given that V describes its result.  */
  
  void
! backprop::optimize_phi (gphi *phi, var_info *v)
  {
!   /* If the sign of the result doesn't matter, strip sign operations
!      from all arguments.  */
!   if (v->info.flags.ignore_sign)
      {
!       gphi *replacement = nullptr;
!       for (unsigned int i = 0; i < gimple_phi_num_args (phi); ++i)
  	{
! 	  tree arg = gimple_phi_arg_def (phi, i);
! 	  tree new_arg = strip_sign_op (arg);
  	  if (new_arg)
  	    {
! 	      if (!replacement)
! 		replacement = as_a<gphi *> (copy_and_subst (v));
! 	      SET_USE (gimple_phi_arg_imm_use_ptr (replacement, i),
! 		       subst_operand (new_arg));
  	    }
  	}
+       if (replacement)
+ 	finish_stmt (v, replacement);
+     }
+ }
+ 
+ /* V is being replaced with something that may have a different value.
+    If that would change the result of any dependent statement,
+    make sure that that dependent statement will also be replaced.  */
+ 
+ void
+ backprop::propagate_change (var_info *v)
+ {
+   use_operand_p use_p;
+   imm_use_iterator use_iter;
+   FOR_EACH_IMM_USE_FAST (use_p, use_iter, v->var)
+     {
+       tree lhs = gimple_get_lhs (USE_STMT (use_p));
+       if (const var_info *lhsv = lookup_operand (lhs))
+ 	if (lhsv->new_value == lhsv->var)
+ 	  bitmap_set_bit (m_this_worklist, lhsv->index);
+     }
+ }
+ 
+ /* Implement the scheduled replacement for V.  */
+ 
+ void
+ backprop::commit_replacement (var_info *v)
+ {
+   if (MAY_HAVE_DEBUG_BIND_STMTS)
+     insert_debug_temp_for_var_def (NULL, v->var);
+ 
+   gimple *stmt = SSA_NAME_DEF_STMT (v->var);
+   use_operand_p use_p;
+   imm_use_iterator iterator;
+   FOR_EACH_IMM_USE_STMT (stmt, iterator, v->var)
+     {
+       FOR_EACH_IMM_USE_ON_STMT (use_p, iterator)
+ 	SET_USE (use_p, v->new_value);
+       update_stmt (stmt);
      }
+ 
+   gimple_stmt_iterator gsi = gsi_for_stmt (SSA_NAME_DEF_STMT (v->var));
+   if (v->seq)
+     gsi_replace_with_seq_vops (&gsi, v->seq);
+   else
+     remove_dead_stmt (&gsi, true);
  }
  
  void
  backprop::execute ()
  {
    /* Phase 1: Traverse the function, making optimistic assumptions
!      about any phi whose definition we haven't seen.  Add any variables
!      that need to be reconsidered to M_NEXT_WORKLIST.  */
    int *postorder = XNEWVEC (int, n_basic_blocks_for_fn (m_fn));
    unsigned int postorder_num = post_order_compute (postorder, false, false);
    for (unsigned int i = 0; i < postorder_num; ++i)
*************** backprop::execute ()
*** 897,936 ****
    XDELETEVEC (postorder);
  
    /* Phase 2: Use the initial (perhaps overly optimistic) information
!      to create a maximal fixed point solution.  */
!   while (!m_worklist.is_empty ())
!     process_var (pop_from_worklist ());
! 
!   if (dump_file && (dump_flags & TDF_DETAILS))
!     fprintf (dump_file, "\n");
! 
!   /* Phase 3: Do a reverse post-order walk, using information about
!      the uses of SSA names to optimize their definitions.  */
!   for (unsigned int i = m_vars.length (); i-- > 0;)
      {
!       usage_info *info = m_vars[i].second;
!       if (info->is_useful ())
  	{
! 	  tree var = m_vars[i].first;
! 	  gimple *stmt = SSA_NAME_DEF_STMT (var);
! 	  if (gcall *call = dyn_cast <gcall *> (stmt))
! 	    optimize_builtin_call (call, var, info);
! 	  else if (gassign *assign = dyn_cast <gassign *> (stmt))
! 	    optimize_assign (assign, var, info);
! 	  else if (gphi *phi = dyn_cast <gphi *> (stmt))
! 	    optimize_phi (phi, var, info);
  	}
      }
  
!   /* Phase 4: Do a post-order walk, deleting statements that are no
!      longer needed.  */
!   for (unsigned int i = 0; i < m_vars.length (); ++i)
      {
!       tree var = m_vars[i].first;
!       if (has_zero_uses (var))
! 	remove_unused_var (var);
      }
  
    if (dump_file && (dump_flags & TDF_DETAILS))
      fprintf (dump_file, "\n");
  }
--- 1060,1151 ----
    XDELETEVEC (postorder);
  
    /* Phase 2: Use the initial (perhaps overly optimistic) information
!      to create a maximal fixed point solution.  Each pass uses a post-order
!      walk to reduce the number of repeat visits.  */
!   while (!bitmap_empty_p (m_next_worklist))
      {
!       std::swap (m_this_worklist, m_next_worklist);
!       bitmap_clear (m_next_worklist);
!       do
  	{
! 	  var_info *v = pop_from_worklist ();
! 	  process_var (v->var, v);
  	}
+       while (!bitmap_empty_p (m_this_worklist));
      }
  
!   /* Phase 3: Do a reverse post-order walk, using information about the uses of
!      SSA names to see whether computing a different value would be simpler and
!      would have the same effect.  Start to compute the transitive closure of
!      SSA names whose definitions are due to be replaced with new
!      calculations.  */
!   bitmap_clear (m_this_worklist);
!   for (unsigned int i = m_vars.length (); i-- > 0;)
!     if (var_info *v = m_vars[i])
!       {
! 	gimple *stmt = SSA_NAME_DEF_STMT (v->var);
! 	if (gcall *call = dyn_cast <gcall *> (stmt))
! 	  optimize_builtin_call (call, v);
! 	else if (gassign *assign = dyn_cast <gassign *> (stmt))
! 	  optimize_assign (assign, v);
! 	else if (gphi *phi = dyn_cast <gphi *> (stmt))
! 	  optimize_phi (phi, v);
! 
! 	if (bitmap_clear_bit (m_this_worklist, v->index))
! 	  if (v->new_value == v->var)
! 	    finish_stmt (v, copy_and_subst (v));
! 
! 	if (v->new_value != v->var)
! 	  propagate_change (v);
!       }
! 
!   /* Complete the transitive closure started by the previous loop.  */
!   while (!bitmap_empty_p (m_this_worklist))
      {
!       var_info *v = m_vars[bitmap_clear_last_set_bit (m_this_worklist)];
!       finish_stmt (v, copy_and_subst (v));
!       propagate_change (v);
      }
  
+   /* Now that we have a complete set of values that need to change,
+      calculate the transitive closure of replacement values.  */
+   bool changed = false;
+   for (unsigned int i = m_vars.length (); i-- > 0;)
+     if (var_info *v = m_vars[i])
+       if (v->var != v->new_value)
+ 	if (var_info *newv = lookup_operand (v->new_value))
+ 	  {
+ 	    gcc_assert (newv->index > i);
+ 	    if (!changed && dump_file && (dump_flags & TDF_DETAILS))
+ 	      fprintf (dump_file, "\n");
+ 	    set_new_value (v, newv->new_value);
+ 	    changed = true;
+ 	  }
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file, "\n");
+ 
+   /* Phase 4: Do a post-order walk, creating debug bind expressions for
+      SSA names that are about to disappear.  Replace all non-debug uses
+      of old SSA names with uses of whatever calculation is replacing them.  */
+   for (unsigned int i = 0; i < m_vars.length (); ++i)
+     if (var_info *v = m_vars[i])
+       if (v->var != v->new_value)
+ 	commit_replacement (v);
+ 
+   /* Phase 5: Remove any statements that might have become dead.  */
+   auto_bitmap deleted_vars;
+   for (unsigned int i = 0; i < m_vars.length (); ++i)
+     if (var_info *v = m_vars[i])
+       if (TREE_CODE (v->new_value) == SSA_NAME
+ 	  && has_zero_uses (v->new_value)
+ 	  && bitmap_set_bit (deleted_vars, SSA_NAME_VERSION (v->new_value)))
+ 	{
+ 	  gimple *stmt = SSA_NAME_DEF_STMT (v->new_value);
+ 	  gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+ 	  remove_dead_stmt (&gsi);
+ 	}
+ 
    if (dump_file && (dump_flags & TDF_DETAILS))
      fprintf (dump_file, "\n");
  }
diff -Nrcpad gcc-17-20260531/gcc/gimple-ssa-sccopy.cc gcc-17-20260607/gcc/gimple-ssa-sccopy.cc
*** gcc-17-20260531/gcc/gimple-ssa-sccopy.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gimple-ssa-sccopy.cc	Sun Jun  7 22:32:07 2026
*************** stmt_may_generate_copy (gimple *stmt)
*** 405,426 ****
    if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (rhs))
      return false;
  
-   /* It is possible that lhs has more alignment or value range information.  By
-      propagating we would lose this information.  So in the case that alignment
-      or value range information differs, we are conservative and do not
-      propagate.
- 
-      FIXME: Propagate alignment and value range info the same way copy-prop
-      does.  */
-   if (POINTER_TYPE_P (TREE_TYPE (lhs))
-       && POINTER_TYPE_P (TREE_TYPE (rhs))
-       && SSA_NAME_PTR_INFO (lhs) != SSA_NAME_PTR_INFO (rhs))
-     return false;
-   if (!POINTER_TYPE_P (TREE_TYPE (lhs))
-       && !POINTER_TYPE_P (TREE_TYPE (rhs))
-       && SSA_NAME_RANGE_INFO (lhs) != SSA_NAME_RANGE_INFO (rhs))
-     return false;
- 
    return true;  /* A statement of type _2 = _1;.  */
  }
  
--- 405,410 ----
*************** scc_copy_prop::replace_scc_by_value (vec
*** 497,502 ****
--- 481,488 ----
  	  
  	}
        replace_uses_by (name, val);
+       if (TREE_CODE (val) == SSA_NAME)
+         maybe_duplicate_ssa_info_at_copy (name, val);
        bitmap_set_bit (dead_stmts, SSA_NAME_VERSION (name));
        didsomething = true;
      }
diff -Nrcpad gcc-17-20260531/gcc/gimple-ssa-store-merging.cc gcc-17-20260607/gcc/gimple-ssa-store-merging.cc
*** gcc-17-20260531/gcc/gimple-ssa-store-merging.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gimple-ssa-store-merging.cc	Sun Jun  7 22:32:07 2026
*************** maybe_optimize_vector_constructor (gimpl
*** 1570,1576 ****
        break;
      case 32:
        if (builtin_decl_explicit_p (BUILT_IN_BSWAP32)
! 	  && optab_handler (bswap_optab, SImode) != CODE_FOR_nothing)
  	{
  	  load_type = uint32_type_node;
  	  fndecl = builtin_decl_explicit (BUILT_IN_BSWAP32);
--- 1570,1576 ----
        break;
      case 32:
        if (builtin_decl_explicit_p (BUILT_IN_BSWAP32)
! 	  && can_open_code_p (bswap_optab, SImode))
  	{
  	  load_type = uint32_type_node;
  	  fndecl = builtin_decl_explicit (BUILT_IN_BSWAP32);
*************** maybe_optimize_vector_constructor (gimpl
*** 1581,1590 ****
        break;
      case 64:
        if (builtin_decl_explicit_p (BUILT_IN_BSWAP64)
! 	  && (optab_handler (bswap_optab, DImode) != CODE_FOR_nothing
! 	      || (word_mode == SImode
! 		  && builtin_decl_explicit_p (BUILT_IN_BSWAP32)
! 		  && optab_handler (bswap_optab, SImode) != CODE_FOR_nothing)))
  	{
  	  load_type = uint64_type_node;
  	  fndecl = builtin_decl_explicit (BUILT_IN_BSWAP64);
--- 1581,1587 ----
        break;
      case 64:
        if (builtin_decl_explicit_p (BUILT_IN_BSWAP64)
! 	  && can_open_code_p (bswap_optab, DImode))
  	{
  	  load_type = uint64_type_node;
  	  fndecl = builtin_decl_explicit (BUILT_IN_BSWAP64);
*************** pass_optimize_bswap::execute (function *
*** 1631,1640 ****
    tree bswap32_type = NULL_TREE, bswap64_type = NULL_TREE;
  
    bswap32_p = (builtin_decl_explicit_p (BUILT_IN_BSWAP32)
! 	       && optab_handler (bswap_optab, SImode) != CODE_FOR_nothing);
    bswap64_p = (builtin_decl_explicit_p (BUILT_IN_BSWAP64)
! 	       && (optab_handler (bswap_optab, DImode) != CODE_FOR_nothing
! 		   || (bswap32_p && word_mode == SImode)));
  
    /* Determine the argument type of the builtins.  The code later on
       assumes that the return and argument type are the same.  */
--- 1628,1636 ----
    tree bswap32_type = NULL_TREE, bswap64_type = NULL_TREE;
  
    bswap32_p = (builtin_decl_explicit_p (BUILT_IN_BSWAP32)
! 	       && can_open_code_p (bswap_optab, SImode));
    bswap64_p = (builtin_decl_explicit_p (BUILT_IN_BSWAP64)
! 	       && can_open_code_p (bswap_optab, DImode));
  
    /* Determine the argument type of the builtins.  The code later on
       assumes that the return and argument type are the same.  */
*************** imm_store_chain_info::try_coalesce_bswap
*** 3134,3148 ****
  	break;
        case 32:
  	if (builtin_decl_explicit_p (BUILT_IN_BSWAP32)
! 	    && optab_handler (bswap_optab, SImode) != CODE_FOR_nothing)
  	  break;
  	return false;
        case 64:
  	if (builtin_decl_explicit_p (BUILT_IN_BSWAP64)
! 	    && (optab_handler (bswap_optab, DImode) != CODE_FOR_nothing
! 		|| (word_mode == SImode
! 		    && builtin_decl_explicit_p (BUILT_IN_BSWAP32)
! 		    && optab_handler (bswap_optab, SImode) != CODE_FOR_nothing)))
  	  break;
  	return false;
        default:
--- 3130,3141 ----
  	break;
        case 32:
  	if (builtin_decl_explicit_p (BUILT_IN_BSWAP32)
! 	    && can_open_code_p (bswap_optab, SImode))
  	  break;
  	return false;
        case 64:
  	if (builtin_decl_explicit_p (BUILT_IN_BSWAP64)
! 	    && can_open_code_p (bswap_optab, DImode))
  	  break;
  	return false;
        default:
diff -Nrcpad gcc-17-20260531/gcc/gimplify.cc gcc-17-20260607/gcc/gimplify.cc
*** gcc-17-20260531/gcc/gimplify.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/gimplify.cc	Sun Jun  7 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 75,80 ****
--- 75,81 ----
  #include "recog.h"
  #include "output.h"
  #include "gimplify_reg_info.h"
+ #include "tree-ssa-loop-niter.h" /* For simplify_replace_tree.  */
  
  /* Identifier for a basic condition, mapping it to other basic conditions of
     its Boolean expression.  Basic conditions given the same uid (in the same
*************** compute_omp_iterator_count (tree it, gim
*** 9744,9753 ****
  	endmbegin = fold_build2_loc (loc, POINTER_DIFF_EXPR, stype, end, begin);
        else
  	endmbegin = fold_build2_loc (loc, MINUS_EXPR, type, end, begin);
!       tree stepm1 = fold_build2_loc (loc, MINUS_EXPR, stype, step,
! 				     build_int_cst (stype, 1));
!       tree stepp1 = fold_build2_loc (loc, PLUS_EXPR, stype, step,
! 				     build_int_cst (stype, 1));
        tree pos = fold_build2_loc (loc, PLUS_EXPR, stype,
  				  unshare_expr (endmbegin), stepm1);
        pos = fold_build2_loc (loc, TRUNC_DIV_EXPR, stype, pos, step);
--- 9745,9761 ----
  	endmbegin = fold_build2_loc (loc, POINTER_DIFF_EXPR, stype, end, begin);
        else
  	endmbegin = fold_build2_loc (loc, MINUS_EXPR, type, end, begin);
!       /* Account for iteration stopping on the end value in Fortran rather
! 	 than before it.  */
!       tree stepm1 = step;
!       tree stepp1 = step;
!       if (!lang_GNU_Fortran ())
! 	{
! 	  stepm1 = fold_build2_loc (loc, MINUS_EXPR, stype, step,
! 				    build_int_cst (stype, 1));
! 	  stepp1 = fold_build2_loc (loc, PLUS_EXPR, stype, step,
! 				    build_int_cst (stype, 1));
! 	}
        tree pos = fold_build2_loc (loc, PLUS_EXPR, stype,
  				  unshare_expr (endmbegin), stepm1);
        pos = fold_build2_loc (loc, TRUNC_DIV_EXPR, stype, pos, step);
*************** compute_omp_iterator_count (tree it, gim
*** 9759,9768 ****
  	}
        neg = fold_build2_loc (loc, TRUNC_DIV_EXPR, stype, neg, step);
        step = NULL_TREE;
!       tree cond = fold_build2_loc (loc, LT_EXPR, boolean_type_node, begin, end);
        pos = fold_build3_loc (loc, COND_EXPR, stype, cond, pos,
  			     build_int_cst (stype, 0));
!       cond = fold_build2_loc (loc, LT_EXPR, boolean_type_node, end, begin);
        neg = fold_build3_loc (loc, COND_EXPR, stype, cond, neg,
  			     build_int_cst (stype, 0));
        tree osteptype = TREE_TYPE (orig_step);
--- 9767,9777 ----
  	}
        neg = fold_build2_loc (loc, TRUNC_DIV_EXPR, stype, neg, step);
        step = NULL_TREE;
!       tree_code cmp_op = lang_GNU_Fortran () ? LE_EXPR : LT_EXPR;
!       tree cond = fold_build2_loc (loc, cmp_op, boolean_type_node, begin, end);
        pos = fold_build3_loc (loc, COND_EXPR, stype, cond, pos,
  			     build_int_cst (stype, 0));
!       cond = fold_build2_loc (loc, cmp_op, boolean_type_node, end, begin);
        neg = fold_build3_loc (loc, COND_EXPR, stype, cond, neg,
  			     build_int_cst (stype, 0));
        tree osteptype = TREE_TYPE (orig_step);
*************** build_omp_iterator_loop (tree it, gimple
*** 9791,9796 ****
--- 9800,9806 ----
    if (*last_bind)
      gimplify_and_add (*last_bind, pre_p);
    tree block = TREE_VEC_ELT (it, 5);
+   tree block_stmts = lang_GNU_Fortran () ? BLOCK_SUBBLOCKS (block) : NULL_TREE;
    *last_bind = build3 (BIND_EXPR, void_type_node,
  		       BLOCK_VARS (block), NULL, block);
    TREE_SIDE_EFFECTS (*last_bind) = 1;
*************** build_omp_iterator_loop (tree it, gimple
*** 9802,9807 ****
--- 9812,9818 ----
        tree end = TREE_VEC_ELT (it, 2);
        tree step = TREE_VEC_ELT (it, 3);
        tree orig_step = TREE_VEC_ELT (it, 4);
+       block = TREE_VEC_ELT (it, 5);
        tree type = TREE_TYPE (var);
        location_t loc = DECL_SOURCE_LOCATION (var);
        /* Emit:
*************** build_omp_iterator_loop (tree it, gimple
*** 9812,9820 ****
  	 var = var + step;
  	 cond_label:
  	 if (orig_step > 0) {
! 	   if (var < end) goto beg_label;
  	 } else {
! 	   if (var > end) goto beg_label;
  	 }
  	 for each iterator, with inner iterators added to
  	 the ... above.  */
--- 9823,9831 ----
  	 var = var + step;
  	 cond_label:
  	 if (orig_step > 0) {
! 	   if (var < end) goto beg_label;  // <= for Fortran
  	 } else {
! 	   if (var > end) goto beg_label;  // >= for Fortran
  	 }
  	 for each iterator, with inner iterators added to
  	 the ... above.  */
*************** build_omp_iterator_loop (tree it, gimple
*** 9840,9849 ****
        append_to_statement_list_force (tem, p);
        tem = build1 (LABEL_EXPR, void_type_node, cond_label);
        append_to_statement_list (tem, p);
!       tree cond = fold_build2_loc (loc, LT_EXPR, boolean_type_node, var, end);
        tree pos = fold_build3_loc (loc, COND_EXPR, void_type_node, cond,
  				  build_and_jump (&beg_label), void_node);
!       cond = fold_build2_loc (loc, GT_EXPR, boolean_type_node, var, end);
        tree neg = fold_build3_loc (loc, COND_EXPR, void_type_node, cond,
  				  build_and_jump (&beg_label), void_node);
        tree osteptype = TREE_TYPE (orig_step);
--- 9851,9862 ----
        append_to_statement_list_force (tem, p);
        tem = build1 (LABEL_EXPR, void_type_node, cond_label);
        append_to_statement_list (tem, p);
!       tree cond = fold_build2_loc (loc, lang_GNU_Fortran () ? LE_EXPR : LT_EXPR,
! 				   boolean_type_node, var, end);
        tree pos = fold_build3_loc (loc, COND_EXPR, void_type_node, cond,
  				  build_and_jump (&beg_label), void_node);
!       cond = fold_build2_loc (loc, lang_GNU_Fortran () ? GE_EXPR : GT_EXPR,
! 			      boolean_type_node, var, end);
        tree neg = fold_build3_loc (loc, COND_EXPR, void_type_node, cond,
  				  build_and_jump (&beg_label), void_node);
        tree osteptype = TREE_TYPE (orig_step);
*************** build_omp_iterator_loop (tree it, gimple
*** 9852,9857 ****
--- 9865,9875 ----
        tem = fold_build3_loc (loc, COND_EXPR, void_type_node, cond, pos, neg);
        append_to_statement_list_force (tem, p);
        p = &BIND_EXPR_BODY (bind);
+       /* The Fortran front-end stashes statements into the BLOCK_SUBBLOCKS
+ 	 of the last element of the first iterator.  These should go into the
+ 	 body of the innermost loop.  */
+       if (!TREE_CHAIN (it))
+ 	append_to_statement_list_force (block_stmts, p);
      }
  
    return p;
*************** remove_unused_omp_iterator_vars (tree *l
*** 9930,9952 ****
  	  if (t == NULL_TREE)
  	    t = walk_tree (&OMP_CLAUSE_SIZE (c), find_var_decl, var, NULL);
  	  if (t == NULL_TREE)
! 	    {
! 	      need_new_iterators = true;
! 	      if ((OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP
! 		   && (OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_TO
! 		       || OMP_CLAUSE_MAP_KIND (c) == GOMP_MAP_FROM))
! 		  || OMP_CLAUSE_CODE (c) == OMP_CLAUSE_TO
! 		  || OMP_CLAUSE_CODE (c) == OMP_CLAUSE_FROM)
! 		warning_at (OMP_CLAUSE_LOCATION (c), OPT_Wopenmp,
! 			    "iterator variable %qE not used in clause "
! 			    "expression", DECL_NAME (var));
! 	    }
  	  else
  	    vars.safe_push (var);
  	}
        if (!need_new_iterators)
  	continue;
!       if (need_new_iterators && vars.is_empty ())
  	{
  	  /* No iteration variables are used in the clause - remove the
  	     iterator from the clause.  */
--- 9948,9960 ----
  	  if (t == NULL_TREE)
  	    t = walk_tree (&OMP_CLAUSE_SIZE (c), find_var_decl, var, NULL);
  	  if (t == NULL_TREE)
! 	    need_new_iterators = true;
  	  else
  	    vars.safe_push (var);
  	}
        if (!need_new_iterators)
  	continue;
!       if (vars.is_empty ())
  	{
  	  /* No iteration variables are used in the clause - remove the
  	     iterator from the clause.  */
*************** remove_unused_omp_iterator_vars (tree *l
*** 9995,10002 ****
--- 10003,10016 ----
  		  i++;
  		}
  	    }
+ 	  tree old_block = TREE_VEC_ELT (OMP_CLAUSE_ITERATORS (c), 5);
  	  tree new_block = make_node (BLOCK);
  	  BLOCK_VARS (new_block) = new_vars;
+ 	  if (BLOCK_SUBBLOCKS (old_block))
+ 	    {
+ 	      BLOCK_SUBBLOCKS (new_block) = BLOCK_SUBBLOCKS (old_block);
+ 	      BLOCK_SUBBLOCKS (old_block) = NULL_TREE;
+ 	    }
  	  TREE_VEC_ELT (new_iters, 5) = new_block;
  	  new_iterators.safe_push (new_iters);
  	  iter_vars.safe_push (vars.copy ());
*************** build_omp_struct_comp_nodes (enum tree_c
*** 10672,10678 ****
  static tree
  extract_base_bit_offset (tree base, poly_int64 *bitposp,
  			 poly_offset_int *poffsetp,
! 			 bool *variable_offset)
  {
    tree offset;
    poly_int64 bitsize, bitpos;
--- 10686,10693 ----
  static tree
  extract_base_bit_offset (tree base, poly_int64 *bitposp,
  			 poly_offset_int *poffsetp,
! 			 bool *variable_offset,
! 			 tree iterator)
  {
    tree offset;
    poly_int64 bitsize, bitpos;
*************** extract_base_bit_offset (tree base, poly
*** 10682,10687 ****
--- 10697,10714 ----
  
    STRIP_NOPS (base);
  
+   if (iterator)
+     {
+       /* Replace any iterator variables with the lower bound of the iterator.
+ 	 This will give us the nominal offset and bit position of the first
+ 	 element, which is all we should need to lay out the mappings.  The
+ 	 actual locations of the iterated mappings are elsewhere.  */
+       tree it;
+       for (it = iterator; it; it = TREE_CHAIN (it))
+ 	base = simplify_replace_tree (base, TREE_VEC_ELT (it, 0),
+ 				      TREE_VEC_ELT (it, 1));
+     }
+ 
    base = get_inner_reference (base, &bitsize, &bitpos, &offset, &mode,
  			      &unsignedp, &reversep, &volatilep);
  
*************** omp_accumulate_sibling_list (enum omp_re
*** 12508,12515 ****
      }
  
    bool variable_offset;
    tree base
!     = extract_base_bit_offset (ocd, &cbitpos, &coffset, &variable_offset);
  
    int base_token;
    for (base_token = addr_tokens.length () - 1; base_token >= 0; base_token--)
--- 12535,12545 ----
      }
  
    bool variable_offset;
+   tree iterators = OMP_CLAUSE_HAS_ITERATORS (grp_end)
+ 		     ? OMP_CLAUSE_ITERATORS (grp_end) : NULL_TREE;
    tree base
!     = extract_base_bit_offset (ocd, &cbitpos, &coffset, &variable_offset,
! 			       iterators);
  
    int base_token;
    for (base_token = addr_tokens.length () - 1; base_token >= 0; base_token--)
*************** omp_accumulate_sibling_list (enum omp_re
*** 12838,12845 ****
  	      sc_decl = TREE_OPERAND (sc_decl, 0);
  
  	    bool variable_offset2;
  	    tree base2 = extract_base_bit_offset (sc_decl, &bitpos, &offset,
! 						  &variable_offset2);
  	    if (!base2 || !operand_equal_p (base2, base, 0))
  	      break;
  	    if (scp)
--- 12868,12879 ----
  	      sc_decl = TREE_OPERAND (sc_decl, 0);
  
  	    bool variable_offset2;
+ 	    tree iterators2 = OMP_CLAUSE_HAS_ITERATORS (*sc)
+ 				? OMP_CLAUSE_ITERATORS (*sc) : NULL_TREE;
+ 
  	    tree base2 = extract_base_bit_offset (sc_decl, &bitpos, &offset,
! 						  &variable_offset2,
! 						  iterators2);
  	    if (!base2 || !operand_equal_p (base2, base, 0))
  	      break;
  	    if (scp)
diff -Nrcpad gcc-17-20260531/gcc/ifcvt.cc gcc-17-20260607/gcc/ifcvt.cc
*** gcc-17-20260531/gcc/ifcvt.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/ifcvt.cc	Sun Jun  7 22:32:07 2026
*************** noce_try_store_flag_constants (struct no
*** 1778,1783 ****
--- 1778,1852 ----
    return false;
  }
  
+ /* This is trying to capture cases like dest = cond ? a : -1.
+ 
+    The basic idea is to use a store-flag insn to generate a -1/0
+    value (directly or indirectly), then IOR that with the other
+    input.  */
+ static bool
+ noce_try_store_flag_logical (struct noce_if_info *if_info)
+ {
+   rtx a = if_info->a;
+   rtx b = if_info->b;
+   rtx dest = if_info->x;
+   machine_mode mode = GET_MODE (dest);
+ 
+   if (STORE_FLAG_VALUE != -1 && STORE_FLAG_VALUE != 1)
+     return false;
+ 
+   if (!noce_simple_bbs (if_info))
+     return false;
+ 
+   bool swapped = false;
+   if (a == CONSTM1_RTX (GET_MODE (dest))
+       && if_info->rev_cond)
+     {
+       std::swap (a, b);
+       swapped = true;
+     }
+ 
+   if (b != CONSTM1_RTX (GET_MODE (dest)))
+     return false;
+ 
+   /* If the other arm is not a REG/SUBREG, then punt.  This is primarily to
+      let the target handle the constant case, which it can likely do better.
+      It also means we don't have to worry about non terminal expressions.  */
+   if (!REG_P (a) && !SUBREG_P (a))
+     return false;
+ 
+   /* At this point we've got dest = cond ? a : -1.  Emit the store flag and
+      adjust its value (if necessary) to -1/0.  */
+   start_sequence ();
+   rtx temp = gen_reg_rtx (mode);
+   rtx target = noce_emit_store_flag (if_info, temp, !swapped, false);
+   if (!target)
+     {
+       end_sequence ();
+       return false;
+     }
+ 
+   if (STORE_FLAG_VALUE == 1)
+     {
+       rtx x = gen_rtx_PLUS (mode, target, CONSTM1_RTX (mode));
+       emit_move_insn (target, x);
+     }
+ 
+   /* Now we've got -1/0 in TARGET.  We can just IOR with A.  */
+   rtx x = gen_rtx_IOR (mode, target, a);
+   emit_move_insn (dest, x);
+ 
+   /* We've generated all the RTL, make sure it recognizes and is
+      profitable.  */
+   rtx_insn *seq = end_ifcvt_sequence (if_info);
+   if (!seq || !targetm.noce_conversion_profitable_p (seq, if_info))
+     return false;
+ 
+   emit_insn_before_setloc (seq, if_info->jump,
+ 			   INSN_LOCATION (if_info->insn_a));
+   if_info->transform_name = "noce_try_store_flag_logical";
+   return true;
+ }
+ 
  /* Convert "if (test) foo++" into "foo += (test != 0)", and
     similarly for "foo--".  */
  
*************** noce_process_if_block (struct noce_if_in
*** 4483,4488 ****
--- 4552,4560 ----
      goto success;
    if (noce_try_sign_bit_splat (if_info))
      goto success;
+   if (!targetm.have_conditional_execution ()
+       && noce_try_store_flag_logical (if_info))
+     goto success;
    if (HAVE_conditional_move
        && noce_try_cmove (if_info))
      goto success;
diff -Nrcpad gcc-17-20260531/gcc/internal-fn.cc gcc-17-20260607/gcc/internal-fn.cc
*** gcc-17-20260531/gcc/internal-fn.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/internal-fn.cc	Sun Jun  7 22:32:07 2026
*************** set_edom_supported_p (void)
*** 4765,4770 ****
--- 4765,4771 ----
      expand_##TYPE##_optab_fn (fn, stmt, OPTAB##_optab);	\
    }
  #define DEF_INTERNAL_INT_EXT_FN(CODE, FLAGS, OPTAB, TYPE)
+ #define DEF_INTERNAL_INTSZ_EXT_FN(CODE, FLAGS, OPTAB, TYPE)
  #define DEF_INTERNAL_SIGNED_OPTAB_FN(CODE, FLAGS, SELECTOR, SIGNED_OPTAB, \
  				     UNSIGNED_OPTAB, TYPE)		\
    static void								\
*************** expand_POPCOUNT (internal_fn fn, gcall *
*** 5930,5932 ****
--- 5931,5947 ----
        emit_insn (all_insns);
      }
  }
+ 
+ void
+ expand_BSWAP (internal_fn fn, gcall *stmt)
+ {
+   if (expand_bitquery (fn, stmt))
+     expand_unary_optab_fn (fn, stmt, bswap_optab);
+ }
+ 
+ void
+ expand_BITREVERSE (internal_fn fn, gcall *stmt)
+ {
+   if (expand_bitquery (fn, stmt))
+     expand_unary_optab_fn (fn, stmt, bitreverse_optab);
+ }
diff -Nrcpad gcc-17-20260531/gcc/internal-fn.def gcc-17-20260607/gcc/internal-fn.def
*** gcc-17-20260531/gcc/internal-fn.def	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/internal-fn.def	Sun Jun  7 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 36,41 ****
--- 36,43 ----
       DEF_INTERNAL_FLT_FLOATN_FN (NAME, FLAGS, OPTAB, TYPE)
       DEF_INTERNAL_INT_FN (NAME, FLAGS, OPTAB, TYPE)
       DEF_INTERNAL_INT_EXT_FN (NAME, FLAGS, OPTAB, TYPE)
+      DEF_INTERNAL_INTSZ_FN (NAME, FLAGS, OPTAB, TYPE)
+      DEF_INTERNAL_INTSZ_EXT_FN (NAME, FLAGS, OPTAB, TYPE)
       DEF_INTERNAL_COND_FN (NAME, FLAGS, OPTAB, TYPE)
       DEF_INTERNAL_SIGNED_COND_FN (NAME, FLAGS, OPTAB, TYPE)
       DEF_INTERNAL_WIDENING_OPTAB_FN (NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB,
*************** along with GCC; see the file COPYING3.
*** 107,112 ****
--- 109,122 ----
     has expand_##NAME defined in internal-fn.cc to override the
     DEF_INTERNAL_INT_FN expansion behavior.
  
+    DEF_INTERNAL_INTSZ_FN is like DEF_INTERNAL_OPTAB_FN, but in addition
+    says that the function extends the C-level BUILT_IN_<NAME>{8,16,32,64,128}
+    group of functions to any integral mode (including vector modes).
+ 
+    DEF_INTERNAL_INTSZ_EXT_FN is like DEF_INTERNAL_INTSZ_FN, except that it
+    has expand_##NAME defined in internal-fn.cc to override the
+    DEF_INTERNAL_INTSZ_FN expansion behavior.
+ 
     DEF_INTERNAL_WIDENING_OPTAB_FN is a wrapper that defines five internal
     functions with DEF_INTERNAL_SIGNED_OPTAB_FN:
     - one that describes a widening operation with the same number of elements
*************** along with GCC; see the file COPYING3.
*** 175,180 ****
--- 185,200 ----
    DEF_INTERNAL_INT_FN (NAME, FLAGS, OPTAB, TYPE)
  #endif
  
+ #ifndef DEF_INTERNAL_INTSZ_FN
+ #define DEF_INTERNAL_INTSZ_FN(NAME, FLAGS, OPTAB, TYPE) \
+   DEF_INTERNAL_OPTAB_FN (NAME, FLAGS, OPTAB, TYPE)
+ #endif
+ 
+ #ifndef DEF_INTERNAL_INTSZ_EXT_FN
+ #define DEF_INTERNAL_INTSZ_EXT_FN(NAME, FLAGS, OPTAB, TYPE) \
+   DEF_INTERNAL_INTSZ_FN (NAME, FLAGS, OPTAB, TYPE)
+ #endif
+ 
  #ifndef DEF_INTERNAL_WIDENING_OPTAB_FN
  #define DEF_INTERNAL_WIDENING_OPTAB_FN(NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB, TYPE)		    \
    DEF_INTERNAL_SIGNED_OPTAB_FN (NAME, FLAGS, SELECTOR, SOPTAB, UOPTAB, TYPE)			    \
*************** DEF_INTERNAL_INT_EXT_FN (CTZ, ECF_CONST
*** 471,476 ****
--- 491,499 ----
  DEF_INTERNAL_INT_EXT_FN (FFS, ECF_CONST | ECF_NOTHROW, ffs, unary)
  DEF_INTERNAL_INT_EXT_FN (PARITY, ECF_CONST | ECF_NOTHROW, parity, unary)
  DEF_INTERNAL_INT_EXT_FN (POPCOUNT, ECF_CONST | ECF_NOTHROW, popcount, unary)
+ DEF_INTERNAL_INTSZ_EXT_FN (BSWAP, ECF_CONST | ECF_NOTHROW, bswap, unary)
+ DEF_INTERNAL_INTSZ_EXT_FN (BITREVERSE, ECF_CONST | ECF_NOTHROW, bitreverse,
+ 			   unary)
  
  DEF_INTERNAL_FN (GOMP_TARGET_REV, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
  DEF_INTERNAL_FN (GOMP_USE_SIMT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
*************** DEF_INTERNAL_OPTAB_FN (BIT_IORN, ECF_CON
*** 627,632 ****
--- 650,657 ----
  #undef DEF_INTERNAL_COND_FN
  #undef DEF_INTERNAL_INT_EXT_FN
  #undef DEF_INTERNAL_INT_FN
+ #undef DEF_INTERNAL_INTSZ_EXT_FN
+ #undef DEF_INTERNAL_INTSZ_FN
  #undef DEF_INTERNAL_FLT_FN
  #undef DEF_INTERNAL_FLT_FLOATN_FN
  #undef DEF_INTERNAL_SIGNED_OPTAB_FN
diff -Nrcpad gcc-17-20260531/gcc/internal-fn.h gcc-17-20260607/gcc/internal-fn.h
*** gcc-17-20260531/gcc/internal-fn.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/internal-fn.h	Sun Jun  7 22:32:07 2026
*************** extern void expand_CTZ (internal_fn, gca
*** 285,290 ****
--- 285,292 ----
  extern void expand_FFS (internal_fn, gcall *);
  extern void expand_PARITY (internal_fn, gcall *);
  extern void expand_POPCOUNT (internal_fn, gcall *);
+ extern void expand_BSWAP (internal_fn, gcall *);
+ extern void expand_BITREVERSE (internal_fn, gcall *);
  
  extern bool vectorized_internal_fn_supported_p (internal_fn, tree);
  
diff -Nrcpad gcc-17-20260531/gcc/ira-color.cc gcc-17-20260607/gcc/ira-color.cc
*** gcc-17-20260531/gcc/ira-color.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/ira-color.cc	Sun Jun  7 22:32:07 2026
*************** create_new_allocno_hard_regs_node (alloc
*** 349,355 ****
  	      ira_allocate (sizeof (struct allocno_hard_regs_node)));
    new_node->check = 0;
    new_node->hard_regs = hv;
!   new_node->hard_regs_num = hard_reg_set_size (hv->set);
    new_node->first = NULL;
    new_node->used_p = false;
    return new_node;
--- 349,355 ----
  	      ira_allocate (sizeof (struct allocno_hard_regs_node)));
    new_node->check = 0;
    new_node->hard_regs = hv;
!   new_node->hard_regs_num = hard_reg_set_popcount (hv->set);
    new_node->first = NULL;
    new_node->used_p = false;
    return new_node;
diff -Nrcpad gcc-17-20260531/gcc/ira-int.h gcc-17-20260607/gcc/ira-int.h
*** gcc-17-20260531/gcc/ira-int.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/ira-int.h	Sun Jun  7 22:32:07 2026
*************** ira_hard_reg_set_intersection_p (int har
*** 1437,1454 ****
    return false;
  }
  
- /* Return number of hard registers in hard register SET.  */
- inline int
- hard_reg_set_size (HARD_REG_SET set)
- {
-   int i, size;
- 
-   for (size = i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-     if (TEST_HARD_REG_BIT (set, i))
-       size++;
-   return size;
- }
- 
  /* The function returns TRUE if hard registers starting with
     HARD_REGNO and containing value of MODE are fully in set
     HARD_REGSET.  */
--- 1437,1442 ----
diff -Nrcpad gcc-17-20260531/gcc/ira-lives.cc gcc-17-20260607/gcc/ira-lives.cc
*** gcc-17-20260531/gcc/ira-lives.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/ira-lives.cc	Sun Jun  7 22:32:07 2026
*************** static void
*** 1311,1317 ****
  process_bb_node_lives (ira_loop_tree_node_t loop_tree_node)
  {
    int i, freq;
!   unsigned int j;
    basic_block bb;
    rtx_insn *insn;
    bitmap_iterator bi;
--- 1311,1317 ----
  process_bb_node_lives (ira_loop_tree_node_t loop_tree_node)
  {
    int i, freq;
!   unsigned int j, k;
    basic_block bb;
    rtx_insn *insn;
    bitmap_iterator bi;
*************** process_bb_node_lives (ira_loop_tree_nod
*** 1332,1358 ****
        sparseset_clear (objects_live);
        REG_SET_TO_HARD_REG_SET (hard_regs_live, reg_live_out);
        hard_regs_live &= ~(eliminable_regset | ira_no_alloc_regs);
!       for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
! 	if (TEST_HARD_REG_BIT (hard_regs_live, i))
! 	  {
! 	    enum reg_class aclass, pclass, cl;
  
! 	    aclass = ira_allocno_class_translate[REGNO_REG_CLASS (i)];
! 	    pclass = ira_pressure_class_translate[aclass];
! 	    for (j = 0;
! 		 (cl = ira_reg_class_super_classes[pclass][j])
! 		   != LIM_REG_CLASSES;
! 		 j++)
! 	      {
! 		if (! ira_reg_pressure_class_p[cl])
! 		  continue;
! 		curr_reg_pressure[cl]++;
! 		if (curr_bb_node->reg_pressure[cl] < curr_reg_pressure[cl])
! 		  curr_bb_node->reg_pressure[cl] = curr_reg_pressure[cl];
! 		ira_assert (curr_reg_pressure[cl]
! 			    <= ira_class_hard_regs_num[cl]);
! 	      }
! 	  }
        EXECUTE_IF_SET_IN_BITMAP (reg_live_out, FIRST_PSEUDO_REGISTER, j, bi)
  	mark_pseudo_regno_live (j);
  
--- 1332,1359 ----
        sparseset_clear (objects_live);
        REG_SET_TO_HARD_REG_SET (hard_regs_live, reg_live_out);
        hard_regs_live &= ~(eliminable_regset | ira_no_alloc_regs);
!       hard_reg_set_iterator hrsi;
!       k = 0;
!       EXECUTE_IF_SET_IN_HARD_REG_SET (hard_regs_live, 0, k, hrsi)
! 	{
! 	  enum reg_class aclass, pclass, cl;
  
! 	  aclass = ira_allocno_class_translate[REGNO_REG_CLASS (k)];
! 	  pclass = ira_pressure_class_translate[aclass];
! 	  for (j = 0;
! 	       (cl = ira_reg_class_super_classes[pclass][j])
! 		 != LIM_REG_CLASSES;
! 	       j++)
! 	    {
! 	      if (! ira_reg_pressure_class_p[cl])
! 		continue;
! 	      curr_reg_pressure[cl]++;
! 	      if (curr_bb_node->reg_pressure[cl] < curr_reg_pressure[cl])
! 		curr_bb_node->reg_pressure[cl] = curr_reg_pressure[cl];
! 	      ira_assert (curr_reg_pressure[cl]
! 			  <= ira_class_hard_regs_num[cl]);
! 	    }
! 	}
        EXECUTE_IF_SET_IN_BITMAP (reg_live_out, FIRST_PSEUDO_REGISTER, j, bi)
  	mark_pseudo_regno_live (j);
  
diff -Nrcpad gcc-17-20260531/gcc/ira.cc gcc-17-20260607/gcc/ira.cc
*** gcc-17-20260531/gcc/ira.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/ira.cc	Sun Jun  7 22:32:07 2026
*************** static void
*** 466,471 ****
--- 466,472 ----
  setup_class_hard_regs (void)
  {
    int cl, i, hard_regno, n;
+   unsigned int j;
    HARD_REG_SET processed_hard_reg_set;
  
    ira_assert (SHRT_MAX >= FIRST_PSEUDO_REGISTER);
*************** setup_class_hard_regs (void)
*** 497,505 ****
  	    }
  	}
        ira_class_hard_regs_num[cl] = n;
!       for (n = 0, i = 0; i < FIRST_PSEUDO_REGISTER; i++)
! 	if (TEST_HARD_REG_BIT (temp_hard_regset, i))
! 	  ira_non_ordered_class_hard_regs[cl][n++] = i;
        ira_assert (ira_class_hard_regs_num[cl] == n);
      }
  }
--- 498,509 ----
  	    }
  	}
        ira_class_hard_regs_num[cl] = n;
!       n = 0;
!       j = 0;
!       hard_reg_set_iterator hrsi;
!       EXECUTE_IF_SET_IN_HARD_REG_SET (temp_hard_regset, 0, j, hrsi)
! 	ira_non_ordered_class_hard_regs[cl][n++] = j;
! 
        ira_assert (ira_class_hard_regs_num[cl] == n);
      }
  }
*************** setup_stack_reg_pressure_class (void)
*** 758,764 ****
        {
  	cl = ira_pressure_classes[i];
  	temp_hard_regset2 = temp_hard_regset & reg_class_contents[cl];
! 	size = hard_reg_set_size (temp_hard_regset2);
  	if (best < size)
  	  {
  	    best = size;
--- 762,768 ----
        {
  	cl = ira_pressure_classes[i];
  	temp_hard_regset2 = temp_hard_regset & reg_class_contents[cl];
! 	size = hard_reg_set_popcount (temp_hard_regset2);
  	if (best < size)
  	  {
  	    best = size;
*************** update_equiv_regs_prescan (void)
*** 3610,3619 ****
  	}
  
    HARD_REG_SET extra_caller_saves = callee_abis.caller_save_regs (*crtl->abi);
    if (!hard_reg_set_empty_p (extra_caller_saves))
!     for (unsigned int regno = 0; regno < FIRST_PSEUDO_REGISTER; ++regno)
!       if (TEST_HARD_REG_BIT (extra_caller_saves, regno))
  	df_set_regs_ever_live (regno, true);
  }
  
  /* Find registers that are equivalent to a single value throughout the
--- 3614,3627 ----
  	}
  
    HARD_REG_SET extra_caller_saves = callee_abis.caller_save_regs (*crtl->abi);
+ 
+   hard_reg_set_iterator hrsi;
+   unsigned int regno = 0;
    if (!hard_reg_set_empty_p (extra_caller_saves))
!     {
!       EXECUTE_IF_SET_IN_HARD_REG_SET (extra_caller_saves, 0, regno, hrsi)
  	df_set_regs_ever_live (regno, true);
+     }
  }
  
  /* Find registers that are equivalent to a single value throughout the
*************** build_insn_chain (void)
*** 4387,4395 ****
    sbitmap *live_subregs = XCNEWVEC (sbitmap, max_regno);
    auto_bitmap live_subregs_used;
  
!   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
!     if (TEST_HARD_REG_BIT (eliminable_regset, i))
!       bitmap_set_bit (elim_regset, i);
    FOR_EACH_BB_REVERSE_FN (bb, cfun)
      {
        bitmap_iterator bi;
--- 4395,4403 ----
    sbitmap *live_subregs = XCNEWVEC (sbitmap, max_regno);
    auto_bitmap live_subregs_used;
  
!   hard_reg_set_iterator hrsi;
!   EXECUTE_IF_SET_IN_HARD_REG_SET (eliminable_regset, 0, i, hrsi)
!     bitmap_set_bit (elim_regset, i);
    FOR_EACH_BB_REVERSE_FN (bb, cfun)
      {
        bitmap_iterator bi;
diff -Nrcpad gcc-17-20260531/gcc/lra-eliminations.cc gcc-17-20260607/gcc/lra-eliminations.cc
*** gcc-17-20260531/gcc/lra-eliminations.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/lra-eliminations.cc	Sun Jun  7 22:32:07 2026
*************** static int
*** 1132,1137 ****
--- 1132,1138 ----
  spill_pseudos (HARD_REG_SET set, int *spilled_pseudos)
  {
    int i, n;
+   unsigned int j;
    bitmap_head to_process;
    rtx_insn *insn;
  
*************** spill_pseudos (HARD_REG_SET set, int *sp
*** 1140,1148 ****
    if (lra_dump_file != NULL)
      {
        fprintf (lra_dump_file, "	   Spilling non-eliminable hard regs:");
!       for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
! 	if (TEST_HARD_REG_BIT (set, i))
! 	  fprintf (lra_dump_file, " %d", i);
        fprintf (lra_dump_file, "\n");
      }
    bitmap_initialize (&to_process, &reg_obstack);
--- 1141,1150 ----
    if (lra_dump_file != NULL)
      {
        fprintf (lra_dump_file, "	   Spilling non-eliminable hard regs:");
!       j = 0;
!       hard_reg_set_iterator hrsi;
!       EXECUTE_IF_SET_IN_HARD_REG_SET (set, 0, j, hrsi)
! 	fprintf (lra_dump_file, " %d", j);
        fprintf (lra_dump_file, "\n");
      }
    bitmap_initialize (&to_process, &reg_obstack);
diff -Nrcpad gcc-17-20260531/gcc/m2/ChangeLog gcc-17-20260607/gcc/m2/ChangeLog
*** gcc-17-20260531/gcc/m2/ChangeLog	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/m2/ChangeLog	Sun Jun  7 22:32:07 2026
***************
*** 1,3 ****
--- 1,18 ----
+ 2026-06-03  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/125512
+ 	* gm2-compiler/P3Build.bnf (SubDesignator): Rewrite to
+ 	include spell checking.
+ 
+ 2026-06-02  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/125544
+ 	* gm2-libs-iso/Storage.def (REALLOCATE): Updated comment
+ 	describing new behavior.
+ 	* gm2-libs-iso/Storage.mod (REALLOCATE): Check addr
+ 	and call ALLOCATE if NIL else call lowerReallocate.
+ 	(lowerReallocate): New procedure.
+ 
  2026-05-19  Jakub Jelinek  <jakub@redhat.com>
  
  	PR other/125348
diff -Nrcpad gcc-17-20260531/gcc/m2/gm2-compiler/P3Build.bnf gcc-17-20260607/gcc/m2/gm2-compiler/P3Build.bnf
*** gcc-17-20260531/gcc/m2/gm2-compiler/P3Build.bnf	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/m2/gm2-compiler/P3Build.bnf	Sun Jun  7 22:32:07 2026
*************** FROM DynamicStrings IMPORT String, InitS
*** 54,60 ****
  FROM M2Printf IMPORT printf0, printf1 ;
  FROM M2Debug IMPORT Assert ;
  FROM P2SymBuild IMPORT BuildString, BuildNumber ;
! FROM M2MetaError IMPORT MetaErrorT0, MetaErrorT2 ;
  FROM M2CaseList IMPORT ElseCase ;
  FROM M2StackSpell IMPORT GetRecordField ;
  
--- 54,60 ----
  FROM M2Printf IMPORT printf0, printf1 ;
  FROM M2Debug IMPORT Assert ;
  FROM P2SymBuild IMPORT BuildString, BuildNumber ;
! FROM M2MetaError IMPORT MetaErrorT0, MetaErrorT1, MetaErrorT2 ;
  FROM M2CaseList IMPORT ElseCase ;
  FROM M2StackSpell IMPORT GetRecordField ;
  
*************** FROM SymbolTable IMPORT MakeGnuAsm, PutG
*** 174,181 ****
                          PutIncluded,
                          IsVarParam, IsProcedure, IsDefImp, IsModule, IsProcType,
                          IsRecord,
!                         RequestSym, IsExported, IsImported,
!                         GetSym, GetLocalSym ;
  
  FROM M2Batch IMPORT IsModuleKnown ;
  
--- 174,182 ----
                          PutIncluded,
                          IsVarParam, IsProcedure, IsDefImp, IsModule, IsProcType,
                          IsRecord,
!                         RequestSym, IsExported, IsImported, IsUnknown,
!                         GetSym, GetLocalSym,
! 			UnknownReported ;
  
  FROM M2Batch IMPORT IsModuleKnown ;
  
*************** Designator := QualidentCheck
*** 1115,1139 ****
                { SubDesignator } =:
  
  SubDesignator := "."                                                       % VAR Sym, Type, tok,
!                                                                                  dotpostok     : CARDINAL ;
!                                                                                  name, n1      : Name ; %
                                                                             % dotpostok := GetTokenNo () -1 ;
                                                                               PopTFtok (Sym, Type, tok) ;
                                                                               Type := SkipType(Type) ;
                                                                               PushTFtok(Sym, Type, tok) ;
                                                                               IF Type=NulSym
                                                                               THEN
-                                                                                 n1 := GetSymName(Sym) ;
                                                                                  IF IsModuleKnown(GetSymName(Sym))
                                                                                  THEN
!                                                                                    WriteFormat2('%a looks like a module which has not been globally imported (eg. suggest that you IMPORT %a)',
!                                                                                    n1, n1)
                                                                                  ELSE
!                                                                                    WriteFormat1('%a is not a record variable', n1)
                                                                                  END
                                                                               ELSIF NOT IsRecord(Type)
                                                                               THEN
!                                                                                 MetaErrorT2 (tok, "the type of {%1ad} is not a record (but {%2ad}) and therefore it has no field", Sym, Type) ;
                                                                               END ;
                                                                               StartScope(Type) %
                   Ident
--- 1116,1150 ----
                { SubDesignator } =:
  
  SubDesignator := "."                                                       % VAR Sym, Type, tok,
!                                                                                  dotpostok: CARDINAL ;
!                                                                                  name     : Name ; %
                                                                             % dotpostok := GetTokenNo () -1 ;
                                                                               PopTFtok (Sym, Type, tok) ;
                                                                               Type := SkipType(Type) ;
                                                                               PushTFtok(Sym, Type, tok) ;
                                                                               IF Type=NulSym
                                                                               THEN
                                                                                  IF IsModuleKnown(GetSymName(Sym))
                                                                                  THEN
!                                                                                    MetaErrorT1 (tok, '{%1a} looks like a module which has not been globally imported (eg. suggest that you IMPORT {%1a}', Sym)
                                                                                  ELSE
!                                                                                    IF IsUnknown (Sym)
! 										   THEN
!                                                                                       MetaErrorT1 (tok, 'the qualifier {%1Ua} is unknown {%1&siD}', Sym) ;
!                                                                                       UnknownReported (Sym)
! 										   ELSE
!                                                                                       MetaErrorT1 (tok, "the type of {%1ad} is not a record (but {%1tad})", Sym)
!                                                                                    END
                                                                                  END
                                                                               ELSIF NOT IsRecord(Type)
                                                                               THEN
! 										IF IsUnknown (Type)
! 										THEN
!                                                                                    MetaErrorT1 (tok, 'the qualifier {%1Ua} is unknown {%1&siD}', Type) ;
!                                                                                    UnknownReported (Type)
! 										ELSE
!                                                                                    MetaErrorT2 (tok, "the type of {%1ad} is not a record (but {%2ad}) and therefore it has no field", Sym, Type)
! 										END
                                                                               END ;
                                                                               StartScope(Type) %
                   Ident
diff -Nrcpad gcc-17-20260531/gcc/m2/gm2-libs-iso/Storage.def gcc-17-20260607/gcc/m2/gm2-libs-iso/Storage.def
*** gcc-17-20260531/gcc/m2/gm2-libs-iso/Storage.def	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/m2/gm2-libs-iso/Storage.def	Sun Jun  7 22:32:07 2026
*************** PROCEDURE DEALLOCATE (VAR addr: SYSTEM.A
*** 28,34 ****
    *)
  
  PROCEDURE REALLOCATE (VAR addr: SYSTEM.ADDRESS; amount: CARDINAL);
!   (* Attempts to reallocate, amount of storage.  Effectively it
       calls ALLOCATE, copies the amount of data pointed to by
       addr into the new space and DEALLOCATES the addr.
       This procedure is a GNU extension.
--- 28,35 ----
    *)
  
  PROCEDURE REALLOCATE (VAR addr: SYSTEM.ADDRESS; amount: CARDINAL);
!   (* If addr is NIL then ALLOCATE is called otherwise it
!      attempts to reallocate amount of storage.  Effectively it
       calls ALLOCATE, copies the amount of data pointed to by
       addr into the new space and DEALLOCATES the addr.
       This procedure is a GNU extension.
diff -Nrcpad gcc-17-20260531/gcc/m2/gm2-libs-iso/Storage.mod gcc-17-20260607/gcc/m2/gm2-libs-iso/Storage.mod
*** gcc-17-20260531/gcc/m2/gm2-libs-iso/Storage.mod	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/m2/gm2-libs-iso/Storage.mod	Sun Jun  7 22:32:07 2026
*************** BEGIN
*** 89,105 ****
  END DEALLOCATE ;
  
  
! PROCEDURE REALLOCATE (VAR addr: SYSTEM.ADDRESS; amount: CARDINAL);
!   (* Attempts to reallocate, amount of storage.  Effectively it
!      calls ALLOCATE, copies the amount of data pointed to by
!      addr into the new space and DEALLOCATES the addr.
!      This procedure is a GNU extension.
!   *)
  VAR
     newa: SYSTEM.ADDRESS ;
     n   : CARDINAL ;
  BEGIN
-    assert (initialized) ;
     IF NOT IsIn (storageTree, addr)
     THEN
        RAISE (storageException, ORD(pointerToUnallocatedStorage),
--- 89,106 ----
  END DEALLOCATE ;
  
  
! (*
!    LowerReallocate - attempts to reallocate amount of storage by
!                      calling ALLOCATE and then coping the amount of data
!                      pointed to by addr into the new space.
!                      Lastly the original addr is deallocated.
! *)
! 
! PROCEDURE LowerReallocate (VAR addr: SYSTEM.ADDRESS; amount: CARDINAL) ;
  VAR
     newa: SYSTEM.ADDRESS ;
     n   : CARDINAL ;
  BEGIN
     IF NOT IsIn (storageTree, addr)
     THEN
        RAISE (storageException, ORD(pointerToUnallocatedStorage),
*************** BEGIN
*** 115,120 ****
--- 116,139 ----
     END ;
     DEALLOCATE(addr, n) ;
     addr := newa
+ END LowerReallocate ;
+ 
+ 
+ PROCEDURE REALLOCATE (VAR addr: SYSTEM.ADDRESS; amount: CARDINAL);
+   (* If addr is NIL then ALLOCATE is called otherwise it
+      attempts to reallocate amount of storage.  Effectively it
+      calls ALLOCATE, copies the amount of data pointed to by
+      addr into the new space and DEALLOCATES the addr.
+      This procedure is a GNU extension.
+   *)
+ BEGIN
+    assert (initialized) ;
+    IF addr = NIL
+    THEN
+       ALLOCATE (addr, amount)
+    ELSE
+       LowerReallocate (addr, amount)
+    END
  END REALLOCATE ;
  
  
diff -Nrcpad gcc-17-20260531/gcc/match-sat-alu.pd gcc-17-20260607/gcc/match-sat-alu.pd
*** gcc-17-20260531/gcc/match-sat-alu.pd	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/match-sat-alu.pd	Sun Jun  7 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 548,554 ****
     /* SAT_U_MUL (X, Y) = {
  	WT x = (WT)a * (WT)b;
  	NT max = -1;
! 	bool overflow_p = x > (WT)max;
  	return -(NT)(overflow_p) | (NT)x;
        } while WT is uint128_t, uint64_t, uint32_t, uint16_t,
  	and T is uint64_t, uint32_t, uint16_t, uint8_t.  */
--- 548,554 ----
     /* SAT_U_MUL (X, Y) = {
  	WT x = (WT)a * (WT)b;
  	NT max = -1;
! 	bool overflow_p = x > (WT)max || x > (WT)(max - 1);
  	return -(NT)(overflow_p) | (NT)x;
        } while WT is uint128_t, uint64_t, uint32_t, uint16_t,
  	and T is uint64_t, uint32_t, uint16_t, uint8_t.  */
*************** along with GCC; see the file COPYING3.
*** 560,566 ****
        unsigned prec = TYPE_PRECISION (type);
        unsigned widen_prec = TYPE_PRECISION (TREE_TYPE (@3));
        wide_int max = wi::mask (prec, false, widen_prec);
!       bool c2_is_max_p = wi::eq_p (wi::to_wide (@2), max);
       }
!      (if (c2_is_max_p)))))
  )
--- 560,571 ----
        unsigned prec = TYPE_PRECISION (type);
        unsigned widen_prec = TYPE_PRECISION (TREE_TYPE (@3));
        wide_int max = wi::mask (prec, false, widen_prec);
! 
!       wide_int c2 = wi::to_wide (@2);
!       bool c2_is_max_p = wi::eq_p (c2, max);
! 
!       wide_int c2_plus_one = wi::add (c2, wi::uhwi (1, widen_prec));
!       bool c2_plus_one_is_max_p = wi::eq_p (c2_plus_one, max);
       }
!      (if (c2_is_max_p || c2_plus_one_is_max_p)))))
  )
diff -Nrcpad gcc-17-20260531/gcc/match.pd gcc-17-20260607/gcc/match.pd
*** gcc-17-20260531/gcc/match.pd	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/match.pd	Sun Jun  7 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 53,62 ****
    gt   ge   eq ne le   lt   unordered ordered   ungt unge unlt unle uneq ltgt)
  (define_operator_list simple_comparison         lt   le   eq ne ge   gt)
  (define_operator_list swapped_simple_comparison gt   ge   eq ne le   lt)
- (define_operator_list BSWAP BUILT_IN_BSWAP16 BUILT_IN_BSWAP32
- 	    BUILT_IN_BSWAP64 BUILT_IN_BSWAP128)
- (define_operator_list BITREVERSE BUILT_IN_BITREVERSE8 BUILT_IN_BITREVERSE16
- 	    BUILT_IN_BITREVERSE32 BUILT_IN_BITREVERSE64 BUILT_IN_BITREVERSE128)
  
  #include "cfn-operators.pd"
  
--- 53,58 ----
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6314,6319 ****
--- 6310,6316 ----
        && INTEGRAL_TYPE_P (TREE_TYPE (@0)))
    (cond @1 (convert @2) (convert @3))))
  
+ #if GIMPLE
  /* PR123967: if (cond) A | CST1 : A & ~CST1
  
     Make both bitops unconditional: (A & ~CST1) | (cond * CST1).  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6326,6331 ****
--- 6323,6329 ----
  	&& TYPE_PRECISION (type) <= BITS_PER_WORD
  	&& wi::to_wide (@1) == ~wi::to_wide (@2))
      (bit_ior @3 (mult (convert:type @4) (convert:type @1))))))
+ #endif
  
  /* Simplification moved from fold_cond_expr_with_comparison.  It may also
     be extended.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 10317,10324 ****
  
  /* popcount(bswap(x)) is popcount(x).  */
  (for popcount (POPCOUNT)
!   (for bswap (BUILT_IN_BSWAP16 BUILT_IN_BSWAP32
! 	      BUILT_IN_BSWAP64 BUILT_IN_BSWAP128)
      (simplify
        (popcount (convert?@0 (bswap:s@1 @2)))
        (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
--- 10315,10321 ----
  
  /* popcount(bswap(x)) is popcount(x).  */
  (for popcount (POPCOUNT)
!   (for bswap (BSWAP BITREVERSE)
      (simplify
        (popcount (convert?@0 (bswap:s@1 @2)))
        (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
diff -Nrcpad gcc-17-20260531/gcc/optabs-query.cc gcc-17-20260607/gcc/optabs-query.cc
*** gcc-17-20260531/gcc/optabs-query.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/optabs-query.cc	Sun Jun  7 22:32:07 2026
*************** can_open_code_p (optab op, machine_mode
*** 837,845 ****
    if ((op == neg_optab || op == abs_optab)
        && is_a<scalar_float_mode> (GET_MODE_INNER (mode), &fmode)
        && get_absneg_bit_mode (op, mode, fmode, &bitpos).exists (&new_mode)
!       && can_implement_p (op == neg_optab ? xor_optab : and_optab, new_mode))
      return true;
  
    return false;
  }
  
--- 837,862 ----
    if ((op == neg_optab || op == abs_optab)
        && is_a<scalar_float_mode> (GET_MODE_INNER (mode), &fmode)
        && get_absneg_bit_mode (op, mode, fmode, &bitpos).exists (&new_mode)
!       && can_open_code_p (op == neg_optab ? xor_optab : and_optab, new_mode))
      return true;
  
+   scalar_int_mode int_mode;
+   if (op == bswap_optab && is_a<scalar_int_mode> (mode, &int_mode))
+     {
+       /* widen_bswap_or_bitreverse can implement smaller bswaps using
+ 	 wider bswaps and a shift.  */
+       opt_scalar_int_mode wider_mode_iter;
+       FOR_EACH_WIDER_MODE (wider_mode_iter, int_mode)
+ 	if (optab_handler (op, wider_mode_iter.require ()) != CODE_FOR_nothing)
+ 	  return true;
+ 
+       /* expand_doubleword_bswap_or_bitreverse can use 2 word bswaps to
+ 	 implement a doubleword bswap.  */
+       if (GET_MODE_SIZE (int_mode) == 2 * UNITS_PER_WORD
+ 	  && optab_handler (op, word_mode) != CODE_FOR_nothing)
+ 	return true;
+     }
+ 
    return false;
  }
  
diff -Nrcpad gcc-17-20260531/gcc/optabs.cc gcc-17-20260607/gcc/optabs.cc
*** gcc-17-20260531/gcc/optabs.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/optabs.cc	Sun Jun  7 22:32:07 2026
*************** expand_asm_reg_clobber_mem_blockage (HAR
*** 7686,7694 ****
    rtx asm_op, clob_mem;
  
    unsigned int num_of_regs = 0;
!   for (unsigned int i = 0; i < FIRST_PSEUDO_REGISTER; i++)
!     if (TEST_HARD_REG_BIT (regs, i))
!       num_of_regs++;
  
    asm_op = gen_rtx_ASM_OPERANDS (VOIDmode, "", "", 0,
  				 rtvec_alloc (0), rtvec_alloc (0),
--- 7686,7694 ----
    rtx asm_op, clob_mem;
  
    unsigned int num_of_regs = 0;
!   unsigned int i;
! 
!   num_of_regs = hard_reg_set_popcount (regs);
  
    asm_op = gen_rtx_ASM_OPERANDS (VOIDmode, "", "", 0,
  				 rtvec_alloc (0), rtvec_alloc (0),
*************** expand_asm_reg_clobber_mem_blockage (HAR
*** 7707,7718 ****
    if (num_of_regs > 0)
      {
        unsigned int j = 2;
!       for (unsigned int i = 0; i < FIRST_PSEUDO_REGISTER; i++)
! 	if (TEST_HARD_REG_BIT (regs, i))
! 	  {
! 	    RTVEC_ELT (v, j) = gen_rtx_CLOBBER (VOIDmode, regno_reg_rtx[i]);
!  	    j++;
! 	  }
        gcc_assert (j == (num_of_regs + 2));
      }
  
--- 7707,7719 ----
    if (num_of_regs > 0)
      {
        unsigned int j = 2;
!       hard_reg_set_iterator hrsi2;
!       i = 0;
!       EXECUTE_IF_SET_IN_HARD_REG_SET (regs, 0, i, hrsi2)
! 	{
! 	  RTVEC_ELT (v, j) = gen_rtx_CLOBBER (VOIDmode, regno_reg_rtx[i]);
! 	  j++;
! 	}
        gcc_assert (j == (num_of_regs + 2));
      }
  
diff -Nrcpad gcc-17-20260531/gcc/opts.cc gcc-17-20260607/gcc/opts.cc
*** gcc-17-20260531/gcc/opts.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/opts.cc	Sun Jun  7 22:32:07 2026
*************** common_handle_option (struct gcc_options
*** 2951,2960 ****
        set_Wstrict_aliasing (opts, value);
        break;
  
-     case OPT_Wstrict_overflow:
-       /* Deferred.  */
-       break;
- 
      case OPT_Wsystem_headers:
        dc->m_warn_system_headers = value;
        break;
--- 2951,2956 ----
diff -Nrcpad gcc-17-20260531/gcc/passes.def gcc-17-20260607/gcc/passes.def
*** gcc-17-20260531/gcc/passes.def	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/passes.def	Sun Jun  7 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 94,99 ****
--- 94,100 ----
  	  NEXT_PASS (pass_phiprop);
  	  NEXT_PASS (pass_fre, true /* may_iterate */);
  	  NEXT_PASS (pass_early_vrp);
+ 	  NEXT_PASS (pass_sccopy);
  	  NEXT_PASS (pass_merge_phi);
            NEXT_PASS (pass_dse);
  	  NEXT_PASS (pass_cd_dce, false /* update_address_taken_p */, true /* remove_unused_locals */);
*************** along with GCC; see the file COPYING3.
*** 104,110 ****
  	  NEXT_PASS (pass_tail_recursion);
  	  NEXT_PASS (pass_if_to_switch);
  	  NEXT_PASS (pass_convert_switch);
- 	  NEXT_PASS (pass_sccopy);
  	  NEXT_PASS (pass_profile);
  	  NEXT_PASS (pass_local_pure_const);
  	  NEXT_PASS (pass_modref);
--- 105,110 ----
diff -Nrcpad gcc-17-20260531/gcc/postreload.cc gcc-17-20260607/gcc/postreload.cc
*** gcc-17-20260531/gcc/postreload.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/postreload.cc	Sun Jun  7 22:32:07 2026
*************** reload_combine (void)
*** 1338,1351 ****
      last_index_reg = -1;
    else if (first_index_reg == -1 && last_index_reg == 0)
      {
!       for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
! 	if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], r))
! 	  {
! 	    if (first_index_reg == -1)
! 	      first_index_reg = r;
  
! 	    last_index_reg = r;
! 	  }
  
        /* If no index register is available, we can quit now.  Set LAST_INDEX_REG
  	 to -1 so we'll know to quit early the next time we get here.  */
--- 1338,1352 ----
      last_index_reg = -1;
    else if (first_index_reg == -1 && last_index_reg == 0)
      {
!       hard_reg_set_iterator hrsi1;
!       EXECUTE_IF_SET_IN_HARD_REG_SET
! 	(reg_class_contents[INDEX_REG_CLASS], 0, r, hrsi1)
! 	{
! 	  if (first_index_reg == -1)
! 	    first_index_reg = r;
  
! 	  last_index_reg = r;
! 	}
  
        /* If no index register is available, we can quit now.  Set LAST_INDEX_REG
  	 to -1 so we'll know to quit early the next time we get here.  */
*************** reload_combine (void)
*** 1440,1451 ****
  	  rtx link;
  	  HARD_REG_SET used_regs = insn_callee_abi (insn).full_reg_clobbers ();
  
! 	  for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
! 	    if (TEST_HARD_REG_BIT (used_regs, r))
! 	      {
! 		reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
! 		reg_state[r].store_ruid = reload_combine_ruid;
! 	      }
  
  	  for (link = CALL_INSN_FUNCTION_USAGE (insn); link;
  	       link = XEXP (link, 1))
--- 1441,1452 ----
  	  rtx link;
  	  HARD_REG_SET used_regs = insn_callee_abi (insn).full_reg_clobbers ();
  
! 	  hard_reg_set_iterator hrsi2;
! 	  EXECUTE_IF_SET_IN_HARD_REG_SET (used_regs, 0, r, hrsi2)
! 	    {
! 	      reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
! 	      reg_state[r].store_ruid = reload_combine_ruid;
! 	    }
  
  	  for (link = CALL_INSN_FUNCTION_USAGE (insn); link;
  	       link = XEXP (link, 1))
*************** reload_combine (void)
*** 1480,1488 ****
  	    live = &ever_live_at_start;
  
  	  if (live)
! 	    for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
! 	      if (TEST_HARD_REG_BIT (*live, r))
  		reg_state[r].use_index = -1;
  	}
  
        reload_combine_note_use (&PATTERN (insn), insn, reload_combine_ruid,
--- 1481,1491 ----
  	    live = &ever_live_at_start;
  
  	  if (live)
! 	    {
! 	      hard_reg_set_iterator hrsi3;
! 	      EXECUTE_IF_SET_IN_HARD_REG_SET (*live, 0, r, hrsi3)
  		reg_state[r].use_index = -1;
+ 	    }
  	}
  
        reload_combine_note_use (&PATTERN (insn), insn, reload_combine_ruid,
diff -Nrcpad gcc-17-20260531/gcc/range-op-mixed.h gcc-17-20260607/gcc/range-op-mixed.h
*** gcc-17-20260531/gcc/range-op-mixed.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/range-op-mixed.h	Sun Jun  7 22:32:07 2026
*************** public:
*** 734,739 ****
--- 734,740 ----
    using range_operator::op1_range;
    using range_operator::op2_range;
    using range_operator::update_bitmask;
+   using range_operator::op1_op2_relation_effect;
    bool op1_range (irange &r, tree type,
  		  const irange &lhs, const irange &op2,
  		  relation_trio) const final override;
*************** public:
*** 756,761 ****
--- 757,766 ----
  		const wide_int &rh_ub) const final override;
    bool wi_op_overflows (wide_int &res, tree type, const wide_int &w0,
  			const wide_int &w1) const final override;
+   bool op1_op2_relation_effect (irange &lhs_range, tree type,
+ 				const irange &op1_range,
+ 				const irange &op2_range,
+ 				relation_kind rel) const final override;
  
    void rv_fold (frange &r, tree type,
  		const REAL_VALUE_TYPE &lh_lb, const REAL_VALUE_TYPE &lh_ub,
diff -Nrcpad gcc-17-20260531/gcc/range-op.cc gcc-17-20260607/gcc/range-op.cc
*** gcc-17-20260531/gcc/range-op.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/range-op.cc	Sun Jun  7 22:32:07 2026
*************** operator_mult::wi_fold (irange &r, tree
*** 2387,2392 ****
--- 2387,2411 ----
      }
  }
  
+ bool
+ operator_mult::op1_op2_relation_effect (irange &lhs_range, tree type,
+ 					const irange &,
+ 					const irange &,
+ 					relation_kind rel) const
+ {
+   // a*a is nonnegative without overflow.
+   // tree_binary_nonnegative_p handles this in a similar way.
+   if (rel == VREL_EQ
+       && TYPE_OVERFLOW_UNDEFINED (type))
+     {
+       int_range<2> nonnegative;
+       nonnegative.set_nonnegative (type);
+       lhs_range.intersect (nonnegative);
+       return true;
+     }
+   return false;
+ }
+ 
  class operator_widen_mult_signed : public range_operator
  {
  public:
diff -Nrcpad gcc-17-20260531/gcc/recog.cc gcc-17-20260607/gcc/recog.cc
*** gcc-17-20260531/gcc/recog.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/recog.cc	Sun Jun  7 22:32:07 2026
*************** peep2_attempt (basic_block bb, rtx_insn
*** 4034,4039 ****
--- 4034,4040 ----
  
        CALL_INSN_FUNCTION_USAGE (new_insn)
  	= CALL_INSN_FUNCTION_USAGE (old_insn);
+       CALL_INSN_ABI_ID (new_insn) = CALL_INSN_ABI_ID (old_insn);
        SIBLING_CALL_P (new_insn) = SIBLING_CALL_P (old_insn);
  
        for (note = REG_NOTES (old_insn);
diff -Nrcpad gcc-17-20260531/gcc/reginfo.cc gcc-17-20260607/gcc/reginfo.cc
*** gcc-17-20260531/gcc/reginfo.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/reginfo.cc	Sun Jun  7 22:32:07 2026
*************** init_reg_sets_1 (void)
*** 269,281 ****
    for (i = 0; i < N_REG_CLASSES; i++)
      {
        bool any_nonfixed = false;
!       for (j = 0; j < FIRST_PSEUDO_REGISTER; j++)
! 	if (TEST_HARD_REG_BIT (reg_class_contents[i], j))
! 	  {
! 	    reg_class_size[i]++;
! 	    if (!fixed_regs[j])
! 	      any_nonfixed = true;
! 	  }
        class_only_fixed_regs[i] = !any_nonfixed;
      }
  
--- 269,281 ----
    for (i = 0; i < N_REG_CLASSES; i++)
      {
        bool any_nonfixed = false;
!       hard_reg_set_iterator hrsi;
!       EXECUTE_IF_SET_IN_HARD_REG_SET (reg_class_contents[i], 0, j, hrsi)
! 	{
! 	  reg_class_size[i]++;
! 	  if (!fixed_regs[j])
! 	    any_nonfixed = true;
! 	}
        class_only_fixed_regs[i] = !any_nonfixed;
      }
  
diff -Nrcpad gcc-17-20260531/gcc/regrename.cc gcc-17-20260607/gcc/regrename.cc
*** gcc-17-20260531/gcc/regrename.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/regrename.cc	Sun Jun  7 22:32:07 2026
*************** init_rename_info (class bb_rename_info *
*** 630,646 ****
  	  remove_range_from_hard_reg_set (&live_hard_regs, i, iri->nregs);
  	}
      }
!   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
      {
!       struct incoming_reg_info *iri = p->incoming + i;
!       if (TEST_HARD_REG_BIT (start_chains_set, i))
! 	{
! 	  du_head_p chain;
! 	  if (dump_file)
! 	    fprintf (dump_file, "opening incoming chain\n");
! 	  chain = create_new_chain (i, iri->nregs, NULL, NULL, NO_REGS);
! 	  bitmap_set_bit (&p->incoming_open_chains_set, chain->id);
! 	}
      }
  }
  
--- 630,646 ----
  	  remove_range_from_hard_reg_set (&live_hard_regs, i, iri->nregs);
  	}
      }
!   struct incoming_reg_info *iri;
!   unsigned int j = 0;
!   hard_reg_set_iterator hrsi;
!   EXECUTE_IF_SET_IN_HARD_REG_SET (start_chains_set, 0, j, hrsi)
      {
!       du_head_p chain;
!       if (dump_file)
! 	fprintf (dump_file, "opening incoming chain\n");
!       iri = p->incoming + j;
!       chain = create_new_chain (j, iri->nregs, NULL, NULL, NO_REGS);
!       bitmap_set_bit (&p->incoming_open_chains_set, chain->id);
      }
  }
  
diff -Nrcpad gcc-17-20260531/gcc/reload1.cc gcc-17-20260607/gcc/reload1.cc
*** gcc-17-20260531/gcc/reload1.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/reload1.cc	Sun Jun  7 22:32:07 2026
*************** maybe_fix_stack_asms (void)
*** 1403,1414 ****
  	 constraints, must be usable as reload registers.  So clear them
  	 out of the life information.  */
        allowed &= clobbered;
!       for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
! 	if (TEST_HARD_REG_BIT (allowed, i))
! 	  {
! 	    CLEAR_REGNO_REG_SET (&chain->live_throughout, i);
! 	    CLEAR_REGNO_REG_SET (&chain->dead_or_set, i);
! 	  }
      }
  
  #endif
--- 1403,1415 ----
  	 constraints, must be usable as reload registers.  So clear them
  	 out of the life information.  */
        allowed &= clobbered;
!       hard_reg_set_iterator hrsi;
!       unsigned int j = 0;
!       EXECUTE_IF_SET_IN_HARD_REG_SET (allowed, 0, j, hrsi)
! 	{
! 	  CLEAR_REGNO_REG_SET (&chain->live_throughout, j);
! 	  CLEAR_REGNO_REG_SET (&chain->dead_or_set, j);
! 	}
      }
  
  #endif
*************** update_eliminables (HARD_REG_SET *pset)
*** 3919,3947 ****
  static bool
  update_eliminables_and_spill (void)
  {
!   int i;
    bool did_spill = false;
    HARD_REG_SET to_spill;
    CLEAR_HARD_REG_SET (to_spill);
    update_eliminables (&to_spill);
    used_spill_regs &= ~to_spill;
  
!   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
!     if (TEST_HARD_REG_BIT (to_spill, i))
!       {
! 	spill_hard_reg (i, 1);
! 	did_spill = true;
  
! 	/* Regardless of the state of spills, if we previously had
! 	   a register that we thought we could eliminate, but now
! 	   cannot eliminate, we must run another pass.
  
! 	   Consider pseudos which have an entry in reg_equiv_* which
! 	   reference an eliminable register.  We must make another pass
! 	   to update reg_equiv_* so that we do not substitute in the
! 	   old value from when we thought the elimination could be
! 	   performed.  */
!       }
    return did_spill;
  }
  
--- 3920,3948 ----
  static bool
  update_eliminables_and_spill (void)
  {
!   unsigned int i;
    bool did_spill = false;
    HARD_REG_SET to_spill;
    CLEAR_HARD_REG_SET (to_spill);
    update_eliminables (&to_spill);
    used_spill_regs &= ~to_spill;
  
!   hard_reg_set_iterator hrsi;
!   EXECUTE_IF_SET_IN_HARD_REG_SET (to_spill, 0, i, hrsi)
!     {
!       spill_hard_reg (i, 1);
!       did_spill = true;
  
!       /* Regardless of the state of spills, if we previously had
! 	 a register that we thought we could eliminate, but now
! 	 cannot eliminate, we must run another pass.
  
! 	 Consider pseudos which have an entry in reg_equiv_* which
! 	 reference an eliminable register.  We must make another pass
! 	 to update reg_equiv_* so that we do not substitute in the
! 	 old value from when we thought the elimination could be
! 	 performed.  */
!     }
    return did_spill;
  }
  
diff -Nrcpad gcc-17-20260531/gcc/rtl-ssa/insns.cc gcc-17-20260607/gcc/rtl-ssa/insns.cc
*** gcc-17-20260531/gcc/rtl-ssa/insns.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rtl-ssa/insns.cc	Sun Jun  7 22:32:07 2026
*************** function_info::record_call_clobbers (bui
*** 628,635 ****
        m_clobbered_by_calls |= abi.full_and_partial_reg_clobbers ();
      }
    else
!     for (unsigned int regno = 0; regno < FIRST_PSEUDO_REGISTER; ++regno)
!       if (TEST_HARD_REG_BIT (abi.full_reg_clobbers (), regno))
  	{
  	  def_info *def = m_defs[regno + 1];
  	  if (!def || def->last_def ()->insn () != insn)
--- 628,638 ----
        m_clobbered_by_calls |= abi.full_and_partial_reg_clobbers ();
      }
    else
!     {
!       hard_reg_set_iterator hrsi;
!       unsigned int regno = 0;
!       HARD_REG_SET full_reg_clobbers = abi.full_reg_clobbers ();
!       EXECUTE_IF_SET_IN_HARD_REG_SET (full_reg_clobbers, 0, regno, hrsi)
  	{
  	  def_info *def = m_defs[regno + 1];
  	  if (!def || def->last_def ()->insn () != insn)
*************** function_info::record_call_clobbers (bui
*** 641,646 ****
--- 644,650 ----
  	      bi.record_reg_def (def);
  	    }
  	}
+     }
  }
  
  // Called while building SSA form using BI.  Record that INSN contains
diff -Nrcpad gcc-17-20260531/gcc/rtl.def gcc-17-20260607/gcc/rtl.def
*** gcc-17-20260531/gcc/rtl.def	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rtl.def	Sun Jun  7 22:32:07 2026
*************** DEF_RTL_EXPR(JUMP_INSN, "jump_insn", "uu
*** 151,159 ****
  /* An instruction that can possibly call a subroutine
     but which will not change which instruction comes next
     in the current function.
!    Field ( rtx->u.fld[8] ) is CALL_INSN_FUNCTION_USAGE.
!    All other fields ( rtx->u.fld[] ) have exact same meaning as INSN's.  */
! DEF_RTL_EXPR(CALL_INSN, "call_insn", "uuBeLiee", RTX_INSN)
  
  /* Placeholder for tablejump JUMP_INSNs.  The pattern of this kind
     of rtx is always either an ADDR_VEC or an ADDR_DIFF_VEC.  These
--- 151,159 ----
  /* An instruction that can possibly call a subroutine
     but which will not change which instruction comes next
     in the current function.
!    Field 7 is CALL_INSN_FUNCTION_USAGE and field 8 is CALL_INSN_ABI_ID.
!    All other fields ( rtx->u.fld[] ) have the same meaning as for INSNs.  */
! DEF_RTL_EXPR(CALL_INSN, "call_insn", "uuBeLieei", RTX_INSN)
  
  /* Placeholder for tablejump JUMP_INSNs.  The pattern of this kind
     of rtx is always either an ADDR_VEC or an ADDR_DIFF_VEC.  These
diff -Nrcpad gcc-17-20260531/gcc/rtl.h gcc-17-20260607/gcc/rtl.h
*** gcc-17-20260531/gcc/rtl.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rtl.h	Sun Jun  7 22:32:07 2026
*************** extern const char * const reg_note_name[
*** 1669,1674 ****
--- 1669,1678 ----
       Pseudo registers cannot be mentioned in this list.  */
  #define CALL_INSN_FUNCTION_USAGE(INSN)	XEXP(INSN, 7)
  
+ /* Specifies the callee's ABI as an index in the range [0, NUM_ABI_IDS - 1].
+    See function-abi.h for more details.  */
+ #define CALL_INSN_ABI_ID(INSN) XCINT(INSN, 8, CALL_INSN)
+ 
  /* The label-number of a code-label.  The assembler label
     is made from `L' and the label-number printed in decimal.
     Label numbers are unique in a compilation.  */
diff -Nrcpad gcc-17-20260531/gcc/rust/ChangeLog gcc-17-20260607/gcc/rust/ChangeLog
*** gcc-17-20260531/gcc/rust/ChangeLog	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/ChangeLog	Sun Jun  7 22:32:07 2026
***************
*** 1,3 ****
--- 1,135 ----
+ 2026-06-01  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* parse/rust-parse-impl.hxx(parse_expr_stmt): Return error early when
+ 	parse_path_in_expression() returns an error node.
+ 
+ 2026-06-01  lishin  <lishin1008@gmail.com>
+ 
+ 	* util/rust-lang-item.h (Rust::LangItem::Kind): Add DROP.
+ 	* util/rust-lang-item.cc (Rust::LangItem::lang_items): Add drop lang item.
+ 
+ 2026-06-01  Jean-Christian CÎRSTEA  <jean-christian.cirstea@tuta.com>
+ 
+ 	* backend/rust-intrinsic-handlers.cc
+ 	(check_for_basic_integer_type): Fixed typo.
+ 	(build_atomic_builtin_name): Update message.
+ 	(unchecked_op, atomic_store, ctlz_handler)
+ 	(cttz_handler, bswap_handler): Use call location.
+ 
+ 2026-06-01  Islam-Imad  <islamimad404@gmail.com>
+ 
+ 	* backend/rust-compile-expr.cc (CompileExpr::visit): Lower labeled block.
+ 	(CompileExpr::construct_block_label): Utility function to construct block label.
+ 	(CompileExpr::lookup_label): Utility function to lookup label.
+ 	(CompileExpr::lookup_temp_var): Utility function to lookup block temp variables.
+ 	(CompileExpr::resolve_util): Utility to resolve NodeId to HirId.
+ 	* backend/rust-compile-expr.h: Header functions.
+ 	* resolve/rust-late-name-resolver-2.0.cc (Late::visit): Fix label resolution.
+ 
+ 2026-06-01  Arthur Cohen  <arthur.cohen@embecosm.com>
+ 
+ 	* hir/tree/rust-hir-visibility.h: Switch Visibility::VisType to an enum class, adapt
+ 	variants' case.
+ 	* backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl): Use the new enum API.
+ 	* backend/rust-compile-implitem.cc (CompileTraitItem::visit): Likewise.
+ 	* checks/errors/privacy/rust-visibility-resolver.cc
+ 	(VisibilityResolver::resolve_visibility): Likewise.
+ 	* hir/rust-ast-lower.cc (translate_visibility): Likewise.
+ 	* hir/tree/rust-hir.cc (Visibility::to_string): Likewise.
+ 	* metadata/rust-export-metadata.cc (PublicInterface::is_crate_public): Likewise.
+ 	* util/rust-hir-map.cc (Mappings::Mappings): Likewise.
+ 
+ 2026-06-01  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* checks/errors/feature/rust-feature-gate.cc (FeatureGate::visit): Add
+ 	a feature gate around rustc_const_stable attributes.
+ 
+ 2026-06-01  Enes Cevik  <nsvke@proton.me>
+ 
+ 	* lex/rust-lex.cc (Lexer::parse_non_decimal_int_literal): Emit E0768.
+ 
+ 2026-06-01  Enes Cevik  <nsvke@proton.me>
+ 
+ 	* ast/rust-ast-collector.cc (TokenCollector::visit): Update Token::make_int and
+ 	Token::make_float calls to include suffix_start and IntegerLiteralBase::Decimal.
+ 	* expand/rust-macro-builtins-location.cc (MacroBuiltin::column_handler): Pass string
+ 	length and base to Token::make_int.
+ 	(MacroBuiltin::line_handler): Likewise.
+ 	* lex/rust-lex.cc (Lexer::parse_in_type_suffix): Rename to parse_in_suffix and return
+ 	string instead of PrimitiveCoreType.
+ 	(Lexer::parse_in_suffix): Remove underscore stripping to preserve source fidelity for
+ 	macros.
+ 	(Lexer::parse_in_exponent_part): Preserve '+' and '-' characters in the raw string.
+ 	(Lexer::parse_in_decimal): Remove underscore stripping.
+ 	(Lexer::parse_non_decimal_int_literal): Track suffix start index and pass literal base.
+ 	(Lexer::parse_non_decimal_int_literals): Use IntegerLiteralBase enum values instead of
+ 	raw integers.
+ 	(Lexer::parse_decimal_int_or_float): Track suffix string length and pass base parameters
+ 	to token creation.
+ 	* lex/rust-lex.h: Update method signatures for suffix parsing.
+ 	* lex/rust-token.h (enum class IntegerLiteralBase): New enum to represent numeric bases.
+ 	* parse/rust-parse-impl-expr.hxx: use LiteralResolve functions to evaluate raw token
+ 	strings.
+ 	* parse/rust-parse-impl-pattern.hxx: Use evaluated literal strings for INT and FLOAT
+ 	tokens.
+ 	* parse/rust-parse.cc (resolve_literal_suffix): Move suffix validation logic from lexer
+ 	to parser.
+ 	(evaluate_integer_literal): New function to strip underscores and convert to decimal via
+ 	GMP.
+ 	(evaluate_float_literal): New function to strip underscores from floats.
+ 	* parse/rust-parse.h (evaluate_integer_literal): Declare in LiteralResolve namespace.
+ 	(evaluate_float_literal): Likewise.
+ 	(resolve_literal_suffix): Likewise.
+ 	* util/rust-token-converter.cc (from_literal): Safely reconstruct raw text and suffix to
+ 	dynamically determine base and suffix_start for ProcMacros.
+ 
+ 2026-06-01  Arthur Cohen  <arthur.cohen@embecosm.com>
+ 
+ 	* resolve/rust-name-resolution-context.hxx: Do segment resolution in types NS for more
+ 	correctness and correct behavior when later resolving paths that use imports and/or
+ 	modules.
+ 
+ 2026-06-01  Arthur Cohen  <arthur.cohen@embecosm.com>
+ 
+ 	* resolve/rust-forever-stack.h: Move declarations from ForeverStack to NRCtx, make most
+ 	of the ForeverStack members public as it helps the Ctx a lot.
+ 	* resolve/rust-forever-stack.hxx: Move implementation of resolve_path methods to NRCtx.
+ 	* resolve/rust-name-resolution-context.h: Declare resolve_path methods.
+ 	* resolve/rust-name-resolution-context.hxx: New file with resolve_path impls.
+ 
+ 2026-06-01  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* expand/rust-macro-builtins-log-debug.cc (MacroBuiltin::assert_handler):
+ 	Add basic assert builtin macro handler.
+ 
+ 2026-06-01  lishin  <lishin1008@gmail.com>
+ 
+ 	* hir/tree/rust-hir-item.cc (TraitFunctionDecl::TraitFunctionDecl):
+ 	Handle null return types in copy constructor.
+ 	(TraitFunctionDecl::operator=): Likewise.
+ 
+ 2026-06-01  Owen Avery  <powerboat9.gamer@gmail.com>
+ 
+ 	* util/rust-attributes.cc (__definitions): Add entries for warn
+ 	and deny attributes.
+ 
+ 2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* expand/rust-cfg-strip.cc (CfgStrip::visit): mark CallExpr for
+ 	strip when function expression fails stripping.
+ 	(CfgStrip::visit): mark ArrayIndexExpr for strip when array or
+ 	index expression fails stripping.
+ 
+ 2026-06-01  Islam-Imad  <islamimad404@gmail.com>
+ 
+ 	* backend/rust-compile-expr.cc (CompileExpr::visit): Emit the
+ 	missing assignment for CompoundAssignmentExpr.
+ 
+ 2026-06-01  fisnikhasani  <242628373+fisnikhasani@users.noreply.github.com>
+ 
+ 	* lang.opt (flag_name_resolution_2_0): Remove.
+ 	* resolve/rust-name-resolver.cc: Remove include.
+ 
  2026-05-29  Marc Poulhiès  <dkm@kataplop.net>
  	    Andreas Schwab  <schwab@linux-m68k.org>
  
diff -Nrcpad gcc-17-20260531/gcc/rust/ast/rust-ast-collector.cc gcc-17-20260607/gcc/rust/ast/rust-ast-collector.cc
*** gcc-17-20260531/gcc/rust/ast/rust-ast-collector.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/ast/rust-ast-collector.cc	Sun Jun  7 22:32:07 2026
*************** TokenCollector::visit (Token &tok)
*** 397,409 ****
        push (Rust::Token::make_identifier (tok.get_locus (), std::move (data)));
        break;
      case INT_LITERAL:
!       push (Rust::Token::make_int (tok.get_locus (), std::move (data),
! 				   tok.get_type_hint ()));
!       break;
!     case FLOAT_LITERAL:
!       push (Rust::Token::make_float (tok.get_locus (), std::move (data),
  				     tok.get_type_hint ()));
!       break;
      case STRING_LITERAL:
        push (Rust::Token::make_string (tok.get_locus (), std::move (data)));
        break;
--- 397,416 ----
        push (Rust::Token::make_identifier (tok.get_locus (), std::move (data)));
        break;
      case INT_LITERAL:
!       {
! 	auto suffix_start = data.length ();
! 	push (Rust::Token::make_int (tok.get_locus (), std::move (data),
! 				     suffix_start, IntegerLiteralBase::Decimal,
  				     tok.get_type_hint ()));
! 	break;
!       }
!     case FLOAT_LITERAL:
!       {
! 	auto suffix_start = data.length ();
! 	push (Rust::Token::make_float (tok.get_locus (), std::move (data),
! 				       suffix_start, tok.get_type_hint ()));
! 	break;
!       }
      case STRING_LITERAL:
        push (Rust::Token::make_string (tok.get_locus (), std::move (data)));
        break;
*************** TokenCollector::visit (Literal &lit, loc
*** 857,869 ****
        push (Rust::Token::make_raw_string (locus, std::move (value)));
        break;
      case Literal::LitType::INT:
!       push (
! 	Rust::Token::make_int (locus, std::move (value), lit.get_type_hint ()));
!       break;
!     case Literal::LitType::FLOAT:
!       push (Rust::Token::make_float (locus, std::move (value),
  				     lit.get_type_hint ()));
!       break;
      case Literal::LitType::BOOL:
        {
  	if (value == Values::Keywords::FALSE_LITERAL)
--- 864,883 ----
        push (Rust::Token::make_raw_string (locus, std::move (value)));
        break;
      case Literal::LitType::INT:
!       {
! 	auto val_len = value.length ();
! 	push (Rust::Token::make_int (locus, std::move (value), val_len,
! 				     IntegerLiteralBase::Decimal,
  				     lit.get_type_hint ()));
! 	break;
!       }
!     case Literal::LitType::FLOAT:
!       {
! 	auto val_len = value.length ();
! 	push (Rust::Token::make_float (locus, std::move (value), val_len,
! 				       lit.get_type_hint ()));
! 	break;
!       }
      case Literal::LitType::BOOL:
        {
  	if (value == Values::Keywords::FALSE_LITERAL)
*************** TokenCollector::visit (TupleIndexExpr &e
*** 1237,1244 ****
    describe_node (std::string ("TupleIndexExpr"), [this, &expr] () {
      visit (expr.get_tuple_expr ());
      push (Rust::Token::make (DOT, expr.get_locus ()));
!     push (Rust::Token::make_int (UNDEF_LOCATION,
! 				 std::to_string (expr.get_tuple_index ())));
    });
  }
  
--- 1251,1260 ----
    describe_node (std::string ("TupleIndexExpr"), [this, &expr] () {
      visit (expr.get_tuple_expr ());
      push (Rust::Token::make (DOT, expr.get_locus ()));
!     auto str = std::to_string (expr.get_tuple_index ());
!     auto suffix_start = str.length ();
!     push (Rust::Token::make_int (UNDEF_LOCATION, str, suffix_start,
! 				 IntegerLiteralBase::Decimal));
    });
  }
  
*************** TokenCollector::visit (StructExprFieldIn
*** 1277,1284 ****
  {
    describe_node (std::string ("StructExprFieldIndexValue"), [this, &expr] () {
      visit_items_as_lines (expr.get_outer_attrs ());
!     push (Rust::Token::make_int (expr.get_locus (),
! 				 std::to_string (expr.get_index ())));
      push (Rust::Token::make (COLON, UNDEF_LOCATION));
      visit (expr.get_value ());
    });
--- 1293,1302 ----
  {
    describe_node (std::string ("StructExprFieldIndexValue"), [this, &expr] () {
      visit_items_as_lines (expr.get_outer_attrs ());
!     auto str = std::to_string (expr.get_index ());
!     auto suffix_start = str.length ();
!     push (Rust::Token::make_int (expr.get_locus (), str, suffix_start,
! 				 IntegerLiteralBase::Decimal));
      push (Rust::Token::make (COLON, UNDEF_LOCATION));
      visit (expr.get_value ());
    });
*************** TokenCollector::visit (StructPatternFiel
*** 2885,2892 ****
    describe_node (std::string ("StructPatternFieldTuplePat"), [this,
  							      &pattern] () {
      visit_items_as_lines (pattern.get_outer_attrs ());
!     push (Rust::Token::make_int (pattern.get_locus (),
! 				 std::to_string (pattern.get_index ())));
      push (Rust::Token::make (COLON, pattern.get_locus ()));
      visit (pattern.get_index_pattern ());
    });
--- 2903,2912 ----
    describe_node (std::string ("StructPatternFieldTuplePat"), [this,
  							      &pattern] () {
      visit_items_as_lines (pattern.get_outer_attrs ());
!     auto str = std::to_string (pattern.get_index ());
!     auto suffix_start = str.length ();
!     push (Rust::Token::make_int (pattern.get_locus (), str, suffix_start,
! 				 IntegerLiteralBase::Decimal));
      push (Rust::Token::make (COLON, pattern.get_locus ()));
      visit (pattern.get_index_pattern ());
    });
diff -Nrcpad gcc-17-20260531/gcc/rust/backend/rust-compile-base.cc gcc-17-20260607/gcc/rust/backend/rust-compile-base.cc
*** gcc-17-20260531/gcc/rust/backend/rust-compile-base.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/backend/rust-compile-base.cc	Sun Jun  7 22:32:07 2026
*************** HIRCompileBase::setup_fndecl (tree fndec
*** 62,68 ****
  {
    // if its the main fn or pub visibility mark its as DECL_PUBLIC
    // please see https://github.com/Rust-GCC/gccrs/pull/137
!   bool is_pub = visibility.get_vis_type () == HIR::Visibility::VisType::PUBLIC;
    if (is_main_entry_point || (is_pub && !is_generic_fn))
      {
        TREE_PUBLIC (fndecl) = 1;
--- 62,68 ----
  {
    // if its the main fn or pub visibility mark its as DECL_PUBLIC
    // please see https://github.com/Rust-GCC/gccrs/pull/137
!   bool is_pub = visibility.get_vis_type () == HIR::Visibility::VisType::Public;
    if (is_main_entry_point || (is_pub && !is_generic_fn))
      {
        TREE_PUBLIC (fndecl) = 1;
diff -Nrcpad gcc-17-20260531/gcc/rust/backend/rust-compile-expr.cc gcc-17-20260607/gcc/rust/backend/rust-compile-expr.cc
*** gcc-17-20260531/gcc/rust/backend/rust-compile-expr.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/backend/rust-compile-expr.cc	Sun Jun  7 22:32:07 2026
***************
*** 18,23 ****
--- 18,24 ----
  
  #include "rust-compile-expr.h"
  #include "rust-backend.h"
+ #include "rust-compile-context.h"
  #include "rust-compile-type.h"
  #include "rust-compile-struct-field-expr.h"
  #include "rust-compile-pattern.h"
***************
*** 32,37 ****
--- 33,39 ----
  #include "realmpfr.h"
  #include "convert.h"
  #include "print-tree.h"
+ #include "rust-hir-bound.h"
  #include "rust-hir-expr.h"
  #include "rust-system.h"
  #include "rust-tree.h"
*************** void
*** 192,200 ****
  CompileExpr::visit (HIR::CompoundAssignmentExpr &expr)
  {
    auto op = expr.get_expr_type ();
!   auto lhs = CompileExpr::Compile (expr.get_lhs (), ctx);
!   auto rhs = CompileExpr::Compile (expr.get_rhs (), ctx);
! 
    // this might be an operator overload situation lets check
    TyTy::FnType *fntype;
    bool is_op_overload = ctx->get_tyctx ()->lookup_operator_overload (
--- 194,202 ----
  CompileExpr::visit (HIR::CompoundAssignmentExpr &expr)
  {
    auto op = expr.get_expr_type ();
!   tree lhs = CompileExpr::Compile (expr.get_lhs (), ctx);
!   tree rhs = CompileExpr::Compile (expr.get_rhs (), ctx);
!   tree compound_assignment = NULL_TREE;
    // this might be an operator overload situation lets check
    TyTy::FnType *fntype;
    bool is_op_overload = ctx->get_tyctx ()->lookup_operator_overload (
*************** CompileExpr::visit (HIR::CompoundAssignm
*** 203,240 ****
      {
        auto lang_item_type = LangItem::CompoundAssignmentOperatorToLangItem (
  	expr.get_expr_type ());
!       auto compound_assignment
  	= resolve_operator_overload (lang_item_type, expr, lhs, rhs,
  				     expr.get_lhs (), expr.get_rhs ());
-       ctx->add_statement (compound_assignment);
- 
-       return;
      }
! 
!   if (ctx->in_fn () && !ctx->const_context_p ())
      {
!       auto tmp = NULL_TREE;
        Bvariable *receiver
  	= Backend::temporary_variable (ctx->peek_fn ().fndecl, NULL_TREE,
  				       TREE_TYPE (lhs), lhs, true,
  				       expr.get_locus (), &tmp);
!       auto check
  	= Backend::arithmetic_or_logical_expression_checked (op, lhs, rhs,
  							     expr.get_locus (),
  							     receiver);
        ctx->add_statement (check);
! 
!       translated
  	= Backend::assignment_statement (lhs,
  					 receiver->get_tree (expr.get_locus ()),
  					 expr.get_locus ());
      }
    else
      {
!       translated
  	= Backend::arithmetic_or_logical_expression (op, lhs, rhs,
  						     expr.get_locus ());
      }
  }
  
  void
--- 205,241 ----
      {
        auto lang_item_type = LangItem::CompoundAssignmentOperatorToLangItem (
  	expr.get_expr_type ());
!       compound_assignment
  	= resolve_operator_overload (lang_item_type, expr, lhs, rhs,
  				     expr.get_lhs (), expr.get_rhs ());
      }
!   else if (ctx->in_fn () && !ctx->const_context_p ())
      {
!       tree tmp = NULL_TREE;
        Bvariable *receiver
  	= Backend::temporary_variable (ctx->peek_fn ().fndecl, NULL_TREE,
  				       TREE_TYPE (lhs), lhs, true,
  				       expr.get_locus (), &tmp);
!       tree check
  	= Backend::arithmetic_or_logical_expression_checked (op, lhs, rhs,
  							     expr.get_locus (),
  							     receiver);
        ctx->add_statement (check);
!       compound_assignment
  	= Backend::assignment_statement (lhs,
  					 receiver->get_tree (expr.get_locus ()),
  					 expr.get_locus ());
      }
    else
      {
!       tree expr_tree
  	= Backend::arithmetic_or_logical_expression (op, lhs, rhs,
  						     expr.get_locus ());
+       compound_assignment
+ 	= Backend::assignment_statement (lhs, expr_tree, expr.get_locus ());
      }
+   ctx->add_statement (compound_assignment);
+   translated = unit_expression (expr.get_locus ());
  }
  
  void
*************** CompileExpr::visit (HIR::IfExprConseqEls
*** 437,448 ****
  void
  CompileExpr::visit (HIR::BlockExpr &expr)
  {
-   if (expr.has_label ())
-     {
-       rust_error_at (expr.get_locus (), "labeled blocks are not supported");
-       return;
-     }
- 
    TyTy::BaseType *block_tyty = nullptr;
    if (!ctx->get_tyctx ()->lookup_type (expr.get_mappings ().get_hirid (),
  				       &block_tyty))
--- 438,443 ----
*************** CompileExpr::visit (HIR::BlockExpr &expr
*** 455,472 ****
--- 450,480 ----
    fncontext fnctx = ctx->peek_fn ();
    tree enclosing_scope = ctx->peek_enclosing_scope ();
    tree block_type = TyTyResolveCompile::compile (ctx, block_tyty);
+   tree block_label = NULL_TREE;
  
    bool is_address_taken = false;
    tree ret_var_stmt = nullptr;
    tmp = Backend::temporary_variable (fnctx.fndecl, enclosing_scope, block_type,
  				     NULL, is_address_taken, expr.get_locus (),
  				     &ret_var_stmt);
+ 
    ctx->add_statement (ret_var_stmt);
  
+   if (expr.has_label ())
+     {
+       ctx->insert_var_decl (
+ 	expr.get_label ().get_lifetime ().get_mappings ().get_hirid (), tmp);
+       block_label = construct_block_label (expr);
+     }
+ 
    auto block_stmt = CompileBlock::compile (expr, ctx, tmp);
    rust_assert (TREE_CODE (block_stmt) == BIND_EXPR);
    ctx->add_statement (block_stmt);
  
+   if (block_label != NULL_TREE)
+     {
+       ctx->add_statement (block_label);
+     }
    translated = Backend::var_expression (tmp, expr.get_locus ());
  }
  
*************** CompileExpr::visit (HIR::WhileLoopExpr &
*** 854,864 ****
  void
  CompileExpr::visit (HIR::BreakExpr &expr)
  {
    if (expr.has_break_expr ())
      {
        tree compiled_expr = CompileExpr::Compile (expr.get_expr (), ctx);
- 
        translated = error_mark_node;
        if (!ctx->have_loop_context ())
  	return;
  
--- 862,886 ----
  void
  CompileExpr::visit (HIR::BreakExpr &expr)
  {
+   if (expr.has_break_expr () && expr.has_label ())
+     {
+       HIR::Lifetime &label = expr.get_label ();
+       auto tvar = lookup_temp_var (label.get_mappings ().get_nodeid ());
+       tree value = CompileExpr::Compile (expr.get_expr (), ctx);
+       tree assign
+ 	= Backend::assignment_statement (tvar->get_tree (label.get_locus ()),
+ 					 value, label.get_locus ());
+       tree block_label = lookup_label (label.get_mappings ().get_nodeid ());
+       tree go_to = Backend::goto_statement (block_label, label.get_locus ());
+       ctx->add_statement (assign);
+       ctx->add_statement (go_to);
+       return;
+     }
    if (expr.has_break_expr ())
      {
        tree compiled_expr = CompileExpr::Compile (expr.get_expr (), ctx);
        translated = error_mark_node;
+ 
        if (!ctx->have_loop_context ())
  	return;
  
*************** CompileExpr::visit (HIR::BreakExpr &expr
*** 892,898 ****
  	    expr.get_label ().get_mappings ().as_string ().c_str ());
  	  return;
  	}
- 
        tl::optional<HirId> hid
  	= ctx->get_mappings ().lookup_node_to_hir (resolved_node_id);
        if (!hid.has_value ())
--- 914,919 ----
*************** CompileExpr::generate_possible_fn_trait_
*** 2759,2763 ****
--- 2780,2836 ----
    return true;
  }
  
+ tree
+ CompileExpr::construct_block_label (HIR::BlockExpr &expr)
+ {
+   if (expr.has_label ())
+     {
+       fncontext fnctx = ctx->peek_fn ();
+       HIR::LoopLabel &label = expr.get_label ();
+       std::string label_name = label.get_lifetime ().get_name ();
+       HirId label_id = label.get_lifetime ().get_mappings ().get_hirid ();
+       tree label_decl
+ 	= Backend::label (fnctx.fndecl, label_name, label.get_locus ());
+       tree label_expr = Backend::label_definition_statement (label_decl);
+       ctx->insert_label_decl (label_id, label_decl);
+       return label_expr;
+     }
+   return NULL_TREE;
+ }
+ 
+ tree
+ CompileExpr::lookup_label (NodeId to_be_resolved)
+ {
+   HirId ref = resolve_NodeId (to_be_resolved);
+   tree label = NULL_TREE;
+   rust_assert (ctx->lookup_label_decl (ref, &label)
+ 	       && "failed to lookup a label");
+   return label;
+ }
+ 
+ Bvariable *
+ CompileExpr::lookup_temp_var (NodeId to_be_resolved)
+ {
+   HirId ref = resolve_NodeId (to_be_resolved);
+   Bvariable *ltemp = nullptr;
+   rust_assert (ctx->lookup_var_decl (ref, &ltemp)
+ 	       && "failed to lookup a temp var");
+   return ltemp;
+ }
+ 
+ HirId
+ CompileExpr::resolve_NodeId (NodeId to_be_resolved)
+ {
+   auto &nr_ctx
+     = Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
+ 
+   NodeId resolved_node_id;
+   resolved_node_id = nr_ctx.lookup (to_be_resolved).value ();
+ 
+   HirId ref
+     = ctx->get_mappings ().lookup_node_to_hir (resolved_node_id).value ();
+   return ref;
+ }
+ 
  } // namespace Compile
  } // namespace Rust
diff -Nrcpad gcc-17-20260531/gcc/rust/backend/rust-compile-expr.h gcc-17-20260607/gcc/rust/backend/rust-compile-expr.h
*** gcc-17-20260531/gcc/rust/backend/rust-compile-expr.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/backend/rust-compile-expr.h	Sun Jun  7 22:32:07 2026
***************
*** 20,25 ****
--- 20,27 ----
  #define RUST_COMPILE_EXPR
  
  #include "rust-compile-base.h"
+ #include "rust-gcc.h"
+ #include "rust-hir-expr.h"
  #include "rust-hir-visitor.h"
  
  namespace Rust {
*************** protected:
*** 151,156 ****
--- 153,163 ----
    bool generate_possible_fn_trait_call (HIR::CallExpr &expr, tree receiver,
  					tree *result);
  
+   tree construct_block_label (HIR::BlockExpr &expr);
+   tree lookup_label (NodeId to_be_resolved);
+   Bvariable *lookup_temp_var (NodeId to_be_resolved);
+   HirId resolve_NodeId (NodeId to_be_resolved);
+ 
  private:
    CompileExpr (Context *ctx);
  
diff -Nrcpad gcc-17-20260531/gcc/rust/backend/rust-compile-implitem.cc gcc-17-20260607/gcc/rust/backend/rust-compile-implitem.cc
*** gcc-17-20260531/gcc/rust/backend/rust-compile-implitem.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/backend/rust-compile-implitem.cc	Sun Jun  7 22:32:07 2026
*************** CompileTraitItem::visit (HIR::TraitItemF
*** 96,102 ****
      = nr_ctx.to_canonical_path (func.get_mappings ().get_nodeid ());
  
    // FIXME: How do we get the proper visibility here?
!   auto vis = HIR::Visibility (HIR::Visibility::VisType::PUBLIC);
    HIR::TraitFunctionDecl &function = func.get_decl ();
    tree fndecl
      = compile_function (false, function.get_function_name ().as_string (),
--- 96,102 ----
      = nr_ctx.to_canonical_path (func.get_mappings ().get_nodeid ());
  
    // FIXME: How do we get the proper visibility here?
!   auto vis = HIR::Visibility (HIR::Visibility::VisType::Public);
    HIR::TraitFunctionDecl &function = func.get_decl ();
    tree fndecl
      = compile_function (false, function.get_function_name ().as_string (),
diff -Nrcpad gcc-17-20260531/gcc/rust/backend/rust-intrinsic-handlers.cc gcc-17-20260607/gcc/rust/backend/rust-intrinsic-handlers.cc
*** gcc-17-20260531/gcc/rust/backend/rust-intrinsic-handlers.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/backend/rust-intrinsic-handlers.cc	Sun Jun  7 22:32:07 2026
*************** check_for_basic_integer_type (const std:
*** 80,86 ****
      {
        rust_error_at (
  	locus,
! 	"%s intrinsics can only be used with basic integer types (got %qs)",
  	intrinsic_str.c_str (), type->get_name ().c_str ());
      }
  
--- 80,86 ----
      {
        rust_error_at (
  	locus,
! 	"%s intrinsic can only be used with basic integer types (got %qs)",
  	intrinsic_str.c_str (), type->get_name ().c_str ());
      }
  
*************** build_atomic_builtin_name (const std::st
*** 218,224 ****
  
    auto type_size_str = allowed_types.find (type_name);
  
!   if (!check_for_basic_integer_type ("atomic", locus, operand_type))
      return "";
  
    result += type_size_str->second;
--- 218,224 ----
  
    auto type_size_str = allowed_types.find (type_name);
  
!   if (!check_for_basic_integer_type ("atomic operation", locus, operand_type))
      return "";
  
    result += type_size_str->second;
*************** unchecked_op (Context *ctx, TyTy::FnType
*** 255,261 ****
    auto *monomorphized_type
      = fntype->get_substs ().at (0).get_param_ty ()->resolve ();
  
!   check_for_basic_integer_type ("unchecked operation", fntype->get_locus (),
  				monomorphized_type);
  
    auto expr = build2 (op, TREE_TYPE (x), x, y);
--- 255,262 ----
    auto *monomorphized_type
      = fntype->get_substs ().at (0).get_param_ty ()->resolve ();
  
!   auto call_locus = ctx->get_mappings ().lookup_location (fntype->get_ref ());
!   check_for_basic_integer_type ("unchecked operation", call_locus,
  				monomorphized_type);
  
    auto expr = build2 (op, TREE_TYPE (x), x, y);
*************** atomic_store (Context *ctx, TyTy::FnType
*** 660,668 ****
    auto monomorphized_type
      = fntype->get_substs ()[0].get_param_ty ()->resolve ();
  
!   auto builtin_name
!     = build_atomic_builtin_name ("atomic_store_", fntype->get_locus (),
! 				 monomorphized_type);
    if (builtin_name.empty ())
      return error_mark_node;
  
--- 661,669 ----
    auto monomorphized_type
      = fntype->get_substs ()[0].get_param_ty ()->resolve ();
  
!   auto call_locus = ctx->get_mappings ().lookup_location (fntype->get_ref ());
!   auto builtin_name = build_atomic_builtin_name ("atomic_store_", call_locus,
! 						 monomorphized_type);
    if (builtin_name.empty ())
      return error_mark_node;
  
*************** ctlz_handler (Context *ctx, TyTy::FnType
*** 777,784 ****
    rust_assert (fntype->get_num_substitutions () == 1);
    auto *monomorphized_type
      = fntype->get_substs ().at (0).get_param_ty ()->resolve ();
!   if (!check_for_basic_integer_type ("ctlz", fntype->get_locus (),
! 				     monomorphized_type))
      return error_mark_node;
  
    enter_intrinsic_block (ctx, fndecl);
--- 778,785 ----
    rust_assert (fntype->get_num_substitutions () == 1);
    auto *monomorphized_type
      = fntype->get_substs ().at (0).get_param_ty ()->resolve ();
!   auto call_locus = ctx->get_mappings ().lookup_location (fntype->get_ref ());
!   if (!check_for_basic_integer_type ("ctlz", call_locus, monomorphized_type))
      return error_mark_node;
  
    enter_intrinsic_block (ctx, fndecl);
*************** cttz_handler (Context *ctx, TyTy::FnType
*** 922,929 ****
    rust_assert (fntype->get_num_substitutions () == 1);
    auto *monomorphized_type
      = fntype->get_substs ().at (0).get_param_ty ()->resolve ();
!   if (!check_for_basic_integer_type ("cttz", fntype->get_locus (),
! 				     monomorphized_type))
      return error_mark_node;
  
    enter_intrinsic_block (ctx, fndecl);
--- 923,930 ----
    rust_assert (fntype->get_num_substitutions () == 1);
    auto *monomorphized_type
      = fntype->get_substs ().at (0).get_param_ty ()->resolve ();
!   auto call_locus = ctx->get_mappings ().lookup_location (fntype->get_ref ());
!   if (!check_for_basic_integer_type ("cttz", call_locus, monomorphized_type))
      return error_mark_node;
  
    enter_intrinsic_block (ctx, fndecl);
*************** bswap_handler (Context *ctx, TyTy::FnTyp
*** 1672,1679 ****
    auto *monomorphized_type
      = fntype->get_substs ().at (0).get_param_ty ()->resolve ();
  
!   check_for_basic_integer_type ("bswap", fntype->get_locus (),
! 				monomorphized_type);
  
    tree template_parameter_type
      = TyTyResolveCompile::compile (ctx, monomorphized_type);
--- 1673,1680 ----
    auto *monomorphized_type
      = fntype->get_substs ().at (0).get_param_ty ()->resolve ();
  
!   auto call_locus = ctx->get_mappings ().lookup_location (fntype->get_ref ());
!   check_for_basic_integer_type ("bswap", call_locus, monomorphized_type);
  
    tree template_parameter_type
      = TyTyResolveCompile::compile (ctx, monomorphized_type);
diff -Nrcpad gcc-17-20260531/gcc/rust/checks/errors/feature/rust-feature-gate.cc gcc-17-20260607/gcc/rust/checks/errors/feature/rust-feature-gate.cc
*** gcc-17-20260531/gcc/rust/checks/errors/feature/rust-feature-gate.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/checks/errors/feature/rust-feature-gate.cc	Sun Jun  7 22:32:07 2026
*************** FeatureGate::visit (AST::Function &funct
*** 234,239 ****
--- 234,249 ----
    if (!function.is_external ())
      check_rustc_attri (function.get_outer_attrs ());
  
+   for (const AST::Attribute &attr : function.get_outer_attrs ())
+     {
+       if (attr.get_path ().as_string () == "rustc_const_stable")
+ 	{
+ 	  gate (Feature::Name::STAGED_API, attr.get_locus (),
+ 		"stability attributes may not be used outside of the standard "
+ 		"library");
+ 	}
+     }
+ 
    check_lang_item_attribute (function.get_outer_attrs ());
  
    note_stability_attribute (function.get_outer_attrs ());
diff -Nrcpad gcc-17-20260531/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc gcc-17-20260607/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc
*** gcc-17-20260531/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc	Sun Jun  7 22:32:07 2026
*************** VisibilityResolver::resolve_visibility (
*** 108,120 ****
  {
    switch (visibility.get_vis_type ())
      {
!     case HIR::Visibility::PRIVATE:
        to_resolve = ModuleVisibility::create_restricted (current_module);
        return true;
!     case HIR::Visibility::PUBLIC:
        to_resolve = ModuleVisibility::create_public ();
        return true;
!     case HIR::Visibility::RESTRICTED:
        {
  	// FIXME: We also need to handle 2015 vs 2018 edition conflicts
  	auto id = UNKNOWN_DEFID;
--- 108,120 ----
  {
    switch (visibility.get_vis_type ())
      {
!     case HIR::Visibility::VisType::Private:
        to_resolve = ModuleVisibility::create_restricted (current_module);
        return true;
!     case HIR::Visibility::VisType::Public:
        to_resolve = ModuleVisibility::create_public ();
        return true;
!     case HIR::Visibility::VisType::Restricted:
        {
  	// FIXME: We also need to handle 2015 vs 2018 edition conflicts
  	auto id = UNKNOWN_DEFID;
diff -Nrcpad gcc-17-20260531/gcc/rust/expand/rust-cfg-strip.cc gcc-17-20260607/gcc/rust/expand/rust-cfg-strip.cc
*** gcc-17-20260531/gcc/rust/expand/rust-cfg-strip.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/expand/rust-cfg-strip.cc	Sun Jun  7 22:32:07 2026
*************** CfgStrip::visit (AST::ArrayIndexExpr &ex
*** 828,836 ****
  
    const auto &array_expr = expr.get_array_expr ();
    if (array_expr.is_marked_for_strip ())
!     rust_error_at (array_expr.get_locus (),
! 		   "cannot strip expression in this position - outer "
! 		   "attributes not allowed");
  
    const auto &index_expr = expr.get_index_expr ();
    if (index_expr.is_marked_for_strip ())
--- 828,840 ----
  
    const auto &array_expr = expr.get_array_expr ();
    if (array_expr.is_marked_for_strip ())
!     {
!       rust_error_at (array_expr.get_locus (),
! 		     "cannot strip expression in this position - outer "
! 		     "attributes not allowed");
!       expr.mark_for_strip ();
!       return;
!     }
  
    const auto &index_expr = expr.get_index_expr ();
    if (index_expr.is_marked_for_strip ())
*************** CfgStrip::visit (AST::CallExpr &expr)
*** 1044,1052 ****
  
    auto &function = expr.get_function_expr ();
    if (function.is_marked_for_strip ())
!     rust_error_at (function.get_locus (),
! 		   "cannot strip expression in this position - outer "
! 		   "attributes not allowed");
  
    /* spec says outer attributes are specifically allowed for elements
     * of call expressions, so full stripping possible */
--- 1048,1060 ----
  
    auto &function = expr.get_function_expr ();
    if (function.is_marked_for_strip ())
!     {
!       rust_error_at (function.get_locus (),
! 		     "cannot strip expression in this position - outer "
! 		     "attributes not allowed");
!       expr.mark_for_strip ();
!       return;
!     }
  
    /* spec says outer attributes are specifically allowed for elements
     * of call expressions, so full stripping possible */
diff -Nrcpad gcc-17-20260531/gcc/rust/expand/rust-macro-builtins-location.cc gcc-17-20260607/gcc/rust/expand/rust-macro-builtins-location.cc
*** gcc-17-20260531/gcc/rust/expand/rust-macro-builtins-location.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/expand/rust-macro-builtins-location.cc	Sun Jun  7 22:32:07 2026
*************** MacroBuiltin::column_handler (location_t
*** 39,46 ****
  {
    auto current_column = LOCATION_COLUMN (invoc_locus);
  
    auto column_tok = make_token (
!     Token::make_int (invoc_locus, std::to_string (current_column)));
    auto column_no = AST::SingleASTNode (std::unique_ptr<AST::Expr> (
      new AST::LiteralExpr (std::to_string (current_column), AST::Literal::INT,
  			  PrimitiveCoreType::CORETYPE_U32, {}, invoc_locus)));
--- 39,48 ----
  {
    auto current_column = LOCATION_COLUMN (invoc_locus);
  
+   auto str = std::to_string (current_column);
+   auto str_len = str.length ();
    auto column_tok = make_token (
!     Token::make_int (invoc_locus, str, str_len, IntegerLiteralBase::Decimal));
    auto column_no = AST::SingleASTNode (std::unique_ptr<AST::Expr> (
      new AST::LiteralExpr (std::to_string (current_column), AST::Literal::INT,
  			  PrimitiveCoreType::CORETYPE_U32, {}, invoc_locus)));
*************** MacroBuiltin::line_handler (location_t i
*** 57,64 ****
    auto line_no = AST::SingleASTNode (std::unique_ptr<AST::Expr> (
      new AST::LiteralExpr (std::to_string (current_line), AST::Literal::INT,
  			  PrimitiveCoreType::CORETYPE_U32, {}, invoc_locus)));
!   auto tok
!     = make_token (Token::make_int (invoc_locus, std::to_string (current_line)));
  
    return AST::Fragment ({line_no}, std::move (tok));
  }
--- 59,68 ----
    auto line_no = AST::SingleASTNode (std::unique_ptr<AST::Expr> (
      new AST::LiteralExpr (std::to_string (current_line), AST::Literal::INT,
  			  PrimitiveCoreType::CORETYPE_U32, {}, invoc_locus)));
!   auto str = std::to_string (current_line);
!   auto str_len = str.length ();
!   auto tok = make_token (
!     Token::make_int (invoc_locus, str, str_len, IntegerLiteralBase::Decimal));
  
    return AST::Fragment ({line_no}, std::move (tok));
  }
diff -Nrcpad gcc-17-20260531/gcc/rust/expand/rust-macro-builtins-log-debug.cc gcc-17-20260607/gcc/rust/expand/rust-macro-builtins-log-debug.cc
*** gcc-17-20260531/gcc/rust/expand/rust-macro-builtins-log-debug.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/expand/rust-macro-builtins-log-debug.cc	Sun Jun  7 22:32:07 2026
***************
*** 19,24 ****
--- 19,27 ----
  #include "rust-ast-fragment.h"
  #include "rust-macro-builtins.h"
  #include "rust-macro-builtins-helpers.h"
+ #include "rust-ast-builder.h"
+ #include "optional.h"
+ #include "rust-ast-collector.h"
  
  namespace Rust {
  tl::optional<AST::Fragment>
*************** MacroBuiltin::assert_handler (location_t
*** 27,32 ****
--- 30,104 ----
  			      AST::InvocKind semicolon)
  {
    rust_debug ("assert!() called");
+   auto tt = invoc.get_delim_tok_tree ();
+   MacroInvocLexer lex (tt.to_token_stream ());
+   Parser<MacroInvocLexer> parser (lex);
+ 
+   auto last_token_id = macro_end_token (tt, parser);
+   bool has_error = false;
+ 
+   auto expanded_expr = try_expand_many_expr (parser, last_token_id,
+ 					     invoc.get_expander (), has_error);
+   if (expanded_expr.size () < 1)
+     {
+       rust_error_at (invoc_locus,
+ 		     "macro requires a boolean expression as an argument");
+       return AST::Fragment::create_error ();
+     }
+   auto expr_to_assert = std::move (expanded_expr[0]);
+   expanded_expr.erase (expanded_expr.begin ());
+ 
+   if (expanded_expr.size () > 1)
+     {
+       rust_sorry_at (
+ 	invoc_locus,
+ 	"The second form of assert with a message is not supported yet");
+ 
+       return AST::Fragment::create_error ();
+     }
+ 
+   auto pending_invocations = check_for_eager_invocations (expanded_expr);
+   if (!pending_invocations.empty ())
+     return make_eager_builtin_invocation (BuiltinMacro::Assert, invoc_locus,
+ 					  invoc.get_delim_tok_tree (),
+ 					  std::move (pending_invocations));
+ 
+   AST::Builder b (invoc_locus);
+ 
+   std::vector<std::unique_ptr<AST::TokenTree>> panic_tree;
+   const_TokenPtr open = Token::make (TokenId::LEFT_PAREN, invoc_locus);
+   panic_tree.push_back (std::make_unique<AST::Token> (std::move (open)));
+ 
+   const_TokenPtr close = Token::make (TokenId::RIGHT_PAREN, invoc_locus);
+   panic_tree.push_back (std::make_unique<AST::Token> (std::move (close)));
+ 
+   auto panic = AST::MacroInvocation::Regular (
+     AST::MacroInvocData (AST::SimplePath (Identifier ("panic")),
+ 			 AST::DelimTokenTree (AST::DelimType::PARENS,
+ 					      std::move (panic_tree),
+ 					      invoc_locus)),
+     {} /* outer attributes */, invoc_locus, true /* semicoloned */);
+   auto stmt = b.statementify (std::move (panic));
+   std::vector<std::unique_ptr<AST::Stmt>> stmts;
+   stmts.push_back (std::move (stmt));
+   auto block = b.block (std::move (stmts));
+   auto negated_condition = std::unique_ptr<AST::NegationExpr> (
+     new AST::NegationExpr (std::move (expr_to_assert),
+ 			   AST::NegationExpr::ExprType::NOT, {}, invoc_locus));
+ 
+   auto if_expr = std::make_unique<AST::IfExpr> (
+     std::move (negated_condition) /* condition*/, std::move (block),
+     std::vector<AST::Attribute>{}, invoc_locus);
+ 
+   auto node = AST::SingleASTNode (std::move (if_expr));
+ 
+   AST::TokenCollector collector;
+   collector.visit (node);
+   std::vector<std::unique_ptr<AST::Token>> tokens;
+   for (auto &&token : collector.collect_tokens ())
+     tokens.push_back (std::make_unique<AST::Token> (token));
+ 
+   return AST::Fragment ({node}, std::move (tokens));
  
    return AST::Fragment::create_error ();
  }
diff -Nrcpad gcc-17-20260531/gcc/rust/hir/rust-ast-lower.cc gcc-17-20260607/gcc/rust/hir/rust-ast-lower.cc
*** gcc-17-20260531/gcc/rust/hir/rust-ast-lower.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/hir/rust-ast-lower.cc	Sun Jun  7 22:32:07 2026
*************** translate_visibility (const AST::Visibil
*** 42,55 ****
    switch (vis.get_vis_type ())
      {
      case AST::Visibility::PUB:
!       return Visibility (Visibility::VisType::PUBLIC);
      case AST::Visibility::PRIV:
      case AST::Visibility::PUB_SELF:
!       return Visibility (Visibility::VisType::PRIVATE);
      case AST::Visibility::PUB_CRATE:
      case AST::Visibility::PUB_SUPER:
      case AST::Visibility::PUB_IN_PATH:
!       return Visibility (Visibility::VisType::RESTRICTED,
  			 ASTLoweringSimplePath::translate (vis.get_path ()),
  			 vis.get_locus ());
        break;
--- 42,55 ----
    switch (vis.get_vis_type ())
      {
      case AST::Visibility::PUB:
!       return Visibility (Visibility::VisType::Public);
      case AST::Visibility::PRIV:
      case AST::Visibility::PUB_SELF:
!       return Visibility (Visibility::VisType::Private);
      case AST::Visibility::PUB_CRATE:
      case AST::Visibility::PUB_SUPER:
      case AST::Visibility::PUB_IN_PATH:
!       return Visibility (Visibility::VisType::Restricted,
  			 ASTLoweringSimplePath::translate (vis.get_path ()),
  			 vis.get_locus ());
        break;
diff -Nrcpad gcc-17-20260531/gcc/rust/hir/tree/rust-hir-item.cc gcc-17-20260607/gcc/rust/hir/tree/rust-hir-item.cc
*** gcc-17-20260531/gcc/rust/hir/tree/rust-hir-item.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/hir/tree/rust-hir-item.cc	Sun Jun  7 22:32:07 2026
*************** TraitFunctionDecl::TraitFunctionDecl (
*** 630,636 ****
  TraitFunctionDecl::TraitFunctionDecl (TraitFunctionDecl const &other)
    : qualifiers (other.qualifiers), function_name (other.function_name),
      function_params (other.function_params),
!     return_type (other.return_type->clone_type ()),
      where_clause (other.where_clause), self (other.self)
  {
    generic_params.reserve (other.generic_params.size ());
--- 630,637 ----
  TraitFunctionDecl::TraitFunctionDecl (TraitFunctionDecl const &other)
    : qualifiers (other.qualifiers), function_name (other.function_name),
      function_params (other.function_params),
!     return_type (other.return_type != nullptr ? other.return_type->clone_type ()
! 					      : nullptr),
      where_clause (other.where_clause), self (other.self)
  {
    generic_params.reserve (other.generic_params.size ());
*************** TraitFunctionDecl::operator= (TraitFunct
*** 644,650 ****
    function_name = other.function_name;
    qualifiers = other.qualifiers;
    function_params = other.function_params;
!   return_type = other.return_type->clone_type ();
    where_clause = other.where_clause;
    self = other.self;
  
--- 645,653 ----
    function_name = other.function_name;
    qualifiers = other.qualifiers;
    function_params = other.function_params;
!   return_type
!     = other.return_type != nullptr ? other.return_type->clone_type () : nullptr;
! 
    where_clause = other.where_clause;
    self = other.self;
  
diff -Nrcpad gcc-17-20260531/gcc/rust/hir/tree/rust-hir-visibility.h gcc-17-20260607/gcc/rust/hir/tree/rust-hir-visibility.h
*** gcc-17-20260531/gcc/rust/hir/tree/rust-hir-visibility.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/hir/tree/rust-hir-visibility.h	Sun Jun  7 22:32:07 2026
*************** namespace HIR {
*** 27,38 ****
  struct Visibility
  {
  public:
!   enum VisType
    {
!     PRIVATE,
!     PUBLIC,
!     RESTRICTED,
!     ERROR,
    };
  
  private:
--- 27,38 ----
  struct Visibility
  {
  public:
!   enum class VisType
    {
!     Private,
!     Public,
!     Restricted,
!     Error,
    };
  
  private:
*************** public:
*** 50,67 ****
    {}
  
    // Returns whether visibility is in an error state.
!   bool is_error () const { return vis_type == ERROR; }
  
    // Does the current visibility refer to a simple `pub <item>` entirely public
!   bool is_public () const { return vis_type == PUBLIC; }
  
    // Is the current visibility public restricted to a certain path
!   bool is_restricted () const { return vis_type == RESTRICTED; }
  
    // Creates an error visibility.
    static Visibility create_error ()
    {
!     return Visibility (ERROR, HIR::SimplePath::create_empty ());
    }
  
    VisType get_vis_type () const { return vis_type; }
--- 50,67 ----
    {}
  
    // Returns whether visibility is in an error state.
!   bool is_error () const { return vis_type == VisType::Error; }
  
    // Does the current visibility refer to a simple `pub <item>` entirely public
!   bool is_public () const { return vis_type == VisType::Public; }
  
    // Is the current visibility public restricted to a certain path
!   bool is_restricted () const { return vis_type == VisType::Restricted; }
  
    // Creates an error visibility.
    static Visibility create_error ()
    {
!     return Visibility (VisType::Error, HIR::SimplePath::create_empty ());
    }
  
    VisType get_vis_type () const { return vis_type; }
diff -Nrcpad gcc-17-20260531/gcc/rust/hir/tree/rust-hir.cc gcc-17-20260607/gcc/rust/hir/tree/rust-hir.cc
*** gcc-17-20260531/gcc/rust/hir/tree/rust-hir.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/hir/tree/rust-hir.cc	Sun Jun  7 22:32:07 2026
*************** Visibility::to_string () const
*** 164,174 ****
  {
    switch (vis_type)
      {
!     case PRIVATE:
        return std::string ("private");
!     case PUBLIC:
        return std::string ("pub");
!     case RESTRICTED:
        return std::string ("pub(in ") + path.get_mappings ().as_string ()
  	     + std::string (")");
      default:
--- 164,174 ----
  {
    switch (vis_type)
      {
!     case VisType::Private:
        return std::string ("private");
!     case VisType::Public:
        return std::string ("pub");
!     case VisType::Restricted:
        return std::string ("pub(in ") + path.get_mappings ().as_string ()
  	     + std::string (")");
      default:
diff -Nrcpad gcc-17-20260531/gcc/rust/lang.opt gcc-17-20260607/gcc/rust/lang.opt
*** gcc-17-20260531/gcc/rust/lang.opt	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/lang.opt	Sun Jun  7 22:32:07 2026
*************** Enum(frust_compile_until) String(compila
*** 208,217 ****
  EnumValue
  Enum(frust_compile_until) String(end) Value(13)
  
- frust-name-resolution-2.0
- Rust Var(flag_name_resolution_2_0) Init(1)
- Use the temporary and experimental name resolution pipeline instead of the stable one.
- 
  frust-borrowcheck
  Rust Var(flag_borrowcheck)
  Use the WIP borrow checker.
--- 208,213 ----
diff -Nrcpad gcc-17-20260531/gcc/rust/lex/rust-lex.cc gcc-17-20260607/gcc/rust/lex/rust-lex.cc
*** gcc-17-20260531/gcc/rust/lex/rust-lex.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/lex/rust-lex.cc	Sun Jun  7 22:32:07 2026
*************** Lexer::build_token ()
*** 1139,1150 ****
      }
  }
  
! // Parses in a type suffix.
! std::pair<PrimitiveCoreType, int>
! Lexer::parse_in_type_suffix ()
  {
    std::string suffix;
-   suffix.reserve (5);
  
    int additional_length_offset = 0;
  
--- 1139,1149 ----
      }
  }
  
! // Parses in a suffix
! std::pair<std::string, int>
! Lexer::parse_in_suffix ()
  {
    std::string suffix;
  
    int additional_length_offset = 0;
  
*************** Lexer::parse_in_type_suffix ()
*** 1152,1168 ****
    while (ISALPHA (current_char.value) || ISDIGIT (current_char.value)
  	 || current_char == '_')
      {
-       if (current_char == '_')
- 	{
- 	  // don't add _ to suffix
- 	  skip_input ();
- 	  current_char = peek_input ();
- 
- 	  additional_length_offset++;
- 
- 	  continue;
- 	}
- 
        additional_length_offset++;
  
        suffix += current_char;
--- 1151,1156 ----
*************** Lexer::parse_in_type_suffix ()
*** 1170,1243 ****
        current_char = peek_input ();
      }
  
!   if (suffix.empty ())
!     {
!       // no type suffix: do nothing but also no error
!       return std::make_pair (CORETYPE_UNKNOWN, additional_length_offset);
!     }
!   else if (suffix == "f32")
!     {
!       return std::make_pair (CORETYPE_F32, additional_length_offset);
!     }
!   else if (suffix == "f64")
!     {
!       return std::make_pair (CORETYPE_F64, additional_length_offset);
!     }
!   else if (suffix == "i8")
!     {
!       return std::make_pair (CORETYPE_I8, additional_length_offset);
!     }
!   else if (suffix == "i16")
!     {
!       return std::make_pair (CORETYPE_I16, additional_length_offset);
!     }
!   else if (suffix == "i32")
!     {
!       return std::make_pair (CORETYPE_I32, additional_length_offset);
!     }
!   else if (suffix == "i64")
!     {
!       return std::make_pair (CORETYPE_I64, additional_length_offset);
!     }
!   else if (suffix == "i128")
!     {
!       return std::make_pair (CORETYPE_I128, additional_length_offset);
!     }
!   else if (suffix == "isize")
!     {
!       return std::make_pair (CORETYPE_ISIZE, additional_length_offset);
!     }
!   else if (suffix == "u8")
!     {
!       return std::make_pair (CORETYPE_U8, additional_length_offset);
!     }
!   else if (suffix == "u16")
!     {
!       return std::make_pair (CORETYPE_U16, additional_length_offset);
!     }
!   else if (suffix == "u32")
!     {
!       return std::make_pair (CORETYPE_U32, additional_length_offset);
!     }
!   else if (suffix == "u64")
!     {
!       return std::make_pair (CORETYPE_U64, additional_length_offset);
!     }
!   else if (suffix == "u128")
!     {
!       return std::make_pair (CORETYPE_U128, additional_length_offset);
!     }
!   else if (suffix == "usize")
!     {
!       return std::make_pair (CORETYPE_USIZE, additional_length_offset);
!     }
!   else
!     {
!       rust_error_at (get_current_location (), "unknown number suffix %qs",
! 		     suffix.c_str ());
! 
!       return std::make_pair (CORETYPE_UNKNOWN, additional_length_offset);
!     }
  }
  
  // Parses in the exponent part (if any) of a float literal.
--- 1158,1164 ----
        current_char = peek_input ();
      }
  
!   return std::make_pair (std::move (suffix), additional_length_offset);
  }
  
  // Parses in the exponent part (if any) of a float literal.
*************** Lexer::parse_in_exponent_part ()
*** 1256,1273 ****
        additional_length_offset++;
  
        // special - and + handling
!       if (current_char == '-')
  	{
! 	  str += '-';
! 
! 	  skip_input ();
! 	  current_char = peek_input ();
  
- 	  additional_length_offset++;
- 	}
-       else if (current_char == '+')
- 	{
- 	  // don't add + but still skip input
  	  skip_input ();
  	  current_char = peek_input ();
  
--- 1177,1186 ----
        additional_length_offset++;
  
        // special - and + handling
!       if (current_char == '-' || current_char == '+')
  	{
! 	  str += current_char;
  
  	  skip_input ();
  	  current_char = peek_input ();
  
*************** Lexer::parse_in_decimal ()
*** 1295,1309 ****
        if (current_char == '_')
  	{
  	  pure_decimal = false;
- 	  // don't add _ to number
- 	  skip_input ();
- 	  current_char = peek_input ();
- 
- 	  additional_length_offset++;
- 
- 	  continue;
  	}
- 
        additional_length_offset++;
  
        str += current_char;
--- 1208,1214 ----
*************** Lexer::parse_raw_string (location_t loc,
*** 2239,2309 ****
  template <typename IsDigitFunc>
  TokenPtr
  Lexer::parse_non_decimal_int_literal (location_t loc, IsDigitFunc is_digit_func,
! 				      int base)
  {
!   std::string raw_str;
  
!   int length = 1;
  
-   skip_input ();
    current_char = peek_input ();
  
-   length++;
- 
    // loop through to add entire number to string
!   while (is_digit_func (current_char.value) || current_char == '_')
      {
!       if (current_char == '_')
  	{
! 	  // don't add _ to number
! 	  skip_input ();
! 	  current_char = peek_input ();
! 
! 	  length++;
! 
! 	  continue;
  	}
- 
        length++;
  
-       // add raw numbers
        raw_str += current_char;
        skip_input ();
        current_char = peek_input ();
      }
  
!   // convert value to decimal representation
!   mpz_t dec_num;
!   mpz_init (dec_num);
!   mpz_set_str (dec_num, raw_str.c_str (), base);
!   char *s = mpz_get_str (NULL, 10, dec_num);
!   std::string dec_str = s;
!   free (s);
!   mpz_clear (dec_num);
  
!   // parse in type suffix if it exists
!   auto type_suffix_pair = parse_in_type_suffix ();
!   PrimitiveCoreType type_hint = type_suffix_pair.first;
!   length += type_suffix_pair.second;
  
    current_column += length;
  
!   if (type_hint == CORETYPE_F32 || type_hint == CORETYPE_F64)
      {
!       rust_error_at (get_current_location (),
! 		     "invalid type suffix %qs for integer (%s) literal",
! 		     get_type_hint_string (type_hint),
! 		     base == 16
! 		       ? "hex"
! 		       : (base == 8 ? "octal"
! 				    : (base == 2 ? "binary"
! 						 : "<insert unknown base>")));
!       return nullptr;
      }
  
    loc += length - 1;
  
!   return Token::make_int (loc, std::move (dec_str), type_hint);
  }
  
  // Parses a hex, binary or octal int literal.
--- 2144,2197 ----
  template <typename IsDigitFunc>
  TokenPtr
  Lexer::parse_non_decimal_int_literal (location_t loc, IsDigitFunc is_digit_func,
! 				      IntegerLiteralBase base)
  {
!   std::string raw_str = "0";
!   raw_str += current_char; // x, o, b
!   skip_input ();
  
!   int length = 2;
!   bool has_valid_digit = false;
  
    current_char = peek_input ();
  
    // loop through to add entire number to string
!   while (true)
      {
!       if (is_digit_func (current_char.value))
  	{
! 	  has_valid_digit = true;
! 	}
!       else if (current_char != '_')
! 	{
! 	  break;
  	}
        length++;
  
        raw_str += current_char;
        skip_input ();
        current_char = peek_input ();
      }
  
!   int suffix_start = raw_str.length ();
  
!   // parse in suffix if it exists
!   auto suffix_pair = parse_in_suffix ();
!   PrimitiveCoreType type_hint = CORETYPE_UNKNOWN;
!   raw_str += suffix_pair.first;
!   length += suffix_pair.second;
  
    current_column += length;
  
!   if (!has_valid_digit)
      {
!       rust_error_at (loc, ErrorCode::E0768, "no valid digits found for number");
      }
  
    loc += length - 1;
  
!   return Token::make_int (loc, std::move (raw_str), suffix_start, base,
! 			  type_hint);
  }
  
  // Parses a hex, binary or octal int literal.
*************** Lexer::parse_non_decimal_int_literals (l
*** 2315,2331 ****
    if (current_char == 'x')
      {
        // hex (integer only)
!       return parse_non_decimal_int_literal (loc, is_x_digit, 16);
      }
    else if (current_char == 'o')
      {
        // octal (integer only)
!       return parse_non_decimal_int_literal (loc, is_octal_digit, 8);
      }
    else if (current_char == 'b')
      {
        // binary (integer only)
!       return parse_non_decimal_int_literal (loc, is_bin_digit, 2);
      }
    else
      {
--- 2203,2222 ----
    if (current_char == 'x')
      {
        // hex (integer only)
!       return parse_non_decimal_int_literal (loc, is_x_digit,
! 					    IntegerLiteralBase::Hex);
      }
    else if (current_char == 'o')
      {
        // octal (integer only)
!       return parse_non_decimal_int_literal (loc, is_octal_digit,
! 					    IntegerLiteralBase::Octal);
      }
    else if (current_char == 'b')
      {
        // binary (integer only)
!       return parse_non_decimal_int_literal (loc, is_bin_digit,
! 					    IntegerLiteralBase::Binary);
      }
    else
      {
*************** Lexer::parse_decimal_int_or_float (locat
*** 2382,2408 ****
        str += exponent_pair.first;
        length += exponent_pair.second;
  
!       // parse in type suffix if it exists
!       auto type_suffix_pair = parse_in_type_suffix ();
!       PrimitiveCoreType type_hint = type_suffix_pair.first;
!       length += type_suffix_pair.second;
  
!       if (type_hint != CORETYPE_F32 && type_hint != CORETYPE_F64
! 	  && type_hint != CORETYPE_UNKNOWN)
! 	{
! 	  rust_error_at (get_current_location (),
! 			 "invalid type suffix %qs for floating-point literal",
! 			 get_type_hint_string (type_hint));
! 	  // ignore invalid type suffix as everything else seems fine
! 	  type_hint = CORETYPE_UNKNOWN;
! 	}
  
        current_column += length;
  
        loc += length - 1;
  
        str.shrink_to_fit ();
!       return Token::make_float (loc, std::move (str), type_hint);
      }
    else if (current_char == '.'
  	   && check_valid_float_dot_end (peek_input (1).value))
--- 2273,2292 ----
        str += exponent_pair.first;
        length += exponent_pair.second;
  
!       int suffix_start = str.length ();
  
!       // parse in type suffix if it exists
!       auto suffix_pair = parse_in_suffix ();
!       PrimitiveCoreType type_hint = CORETYPE_UNKNOWN;
!       str += suffix_pair.first;
!       length += suffix_pair.second;
  
        current_column += length;
  
        loc += length - 1;
  
        str.shrink_to_fit ();
!       return Token::make_float (loc, std::move (str), suffix_start, type_hint);
      }
    else if (current_char == '.'
  	   && check_valid_float_dot_end (peek_input (1).value))
*************** Lexer::parse_decimal_int_or_float (locat
*** 2422,2428 ****
        loc += length - 1;
  
        str.shrink_to_fit ();
!       return Token::make_float (loc, std::move (str), CORETYPE_UNKNOWN);
      }
    else if (current_char == 'E' || current_char == 'e')
      {
--- 2306,2313 ----
        loc += length - 1;
  
        str.shrink_to_fit ();
!       return Token::make_float (loc, std::move (str), str.length (),
! 				CORETYPE_UNKNOWN);
      }
    else if (current_char == 'E' || current_char == 'e')
      {
*************** Lexer::parse_decimal_int_or_float (locat
*** 2433,2482 ****
        str += exponent_pair.first;
        length += exponent_pair.second;
  
!       // parse in type suffix if it exists
!       auto type_suffix_pair = parse_in_type_suffix ();
!       PrimitiveCoreType type_hint = type_suffix_pair.first;
!       length += type_suffix_pair.second;
  
!       if (type_hint != CORETYPE_F32 && type_hint != CORETYPE_F64
! 	  && type_hint != CORETYPE_UNKNOWN)
! 	{
! 	  rust_error_at (get_current_location (),
! 			 "invalid type suffix %qs for floating-point literal",
! 			 get_type_hint_string (type_hint));
! 	  // ignore invalid type suffix as everything else seems fine
! 	  type_hint = CORETYPE_UNKNOWN;
! 	}
  
        current_column += length;
  
        loc += length - 1;
  
        str.shrink_to_fit ();
!       return Token::make_float (loc, std::move (str), type_hint);
      }
    else
      {
        // is an integer
  
        // parse in type suffix if it exists
!       auto type_suffix_pair = parse_in_type_suffix ();
!       PrimitiveCoreType type_hint = type_suffix_pair.first;
        /* A "real" pure decimal doesn't have a suffix and no zero prefix.  */
!       if (type_hint == CORETYPE_UNKNOWN)
! 	{
! 	  bool pure_decimal = std::get<2> (initial_decimal);
! 	  if (pure_decimal && (!first_zero || str.size () == 1))
! 	    type_hint = CORETYPE_PURE_DECIMAL;
! 	}
!       length += type_suffix_pair.second;
  
        current_column += length;
  
        loc += length - 1;
  
        str.shrink_to_fit ();
!       return Token::make_int (loc, std::move (str), type_hint);
      }
  }
  
--- 2318,2365 ----
        str += exponent_pair.first;
        length += exponent_pair.second;
  
!       int suffix_start = str.length ();
  
!       // parse in type suffix if it exists
!       auto suffix_pair = parse_in_suffix ();
!       PrimitiveCoreType type_hint = CORETYPE_UNKNOWN;
!       str += suffix_pair.first;
!       length += suffix_pair.second;
  
        current_column += length;
  
        loc += length - 1;
  
        str.shrink_to_fit ();
!       return Token::make_float (loc, std::move (str), suffix_start, type_hint);
      }
    else
      {
        // is an integer
  
+       int suffix_start = str.length ();
+ 
        // parse in type suffix if it exists
!       auto suffix_pair = parse_in_suffix ();
!       str += suffix_pair.first;
! 
!       PrimitiveCoreType type_hint = CORETYPE_UNKNOWN;
! 
        /* A "real" pure decimal doesn't have a suffix and no zero prefix.  */
!       bool pure_decimal = std::get<2> (initial_decimal);
!       if (pure_decimal && (!first_zero || suffix_start == 1)
! 	  && suffix_pair.first.empty ())
! 	type_hint = CORETYPE_PURE_DECIMAL;
! 
!       length += suffix_pair.second;
  
        current_column += length;
  
        loc += length - 1;
  
        str.shrink_to_fit ();
!       return Token::make_int (loc, std::move (str), suffix_start,
! 			      IntegerLiteralBase::Decimal, type_hint);
      }
  }
  
diff -Nrcpad gcc-17-20260531/gcc/rust/lex/rust-lex.h gcc-17-20260607/gcc/rust/lex/rust-lex.h
*** gcc-17-20260531/gcc/rust/lex/rust-lex.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/lex/rust-lex.h	Sun Jun  7 22:32:07 2026
*************** private:
*** 131,137 ****
  
    std::tuple<std::string, int, bool> parse_in_decimal ();
    std::pair<std::string, int> parse_in_exponent_part ();
!   std::pair<PrimitiveCoreType, int> parse_in_type_suffix ();
    std::tuple<char, int, bool> parse_escape (char opening_char);
    std::tuple<Codepoint, int, bool> parse_utf8_escape ();
    int parse_partial_string_continue ();
--- 131,137 ----
  
    std::tuple<std::string, int, bool> parse_in_decimal ();
    std::pair<std::string, int> parse_in_exponent_part ();
!   std::pair<std::string, int> parse_in_suffix ();
    std::tuple<char, int, bool> parse_escape (char opening_char);
    std::tuple<Codepoint, int, bool> parse_utf8_escape ();
    int parse_partial_string_continue ();
*************** private:
*** 154,160 ****
  
    template <typename IsDigitFunc>
    TokenPtr parse_non_decimal_int_literal (location_t loc,
! 					  IsDigitFunc is_digit_func, int base);
  
  public:
    // Construct lexer with input file and filename provided
--- 154,161 ----
  
    template <typename IsDigitFunc>
    TokenPtr parse_non_decimal_int_literal (location_t loc,
! 					  IsDigitFunc is_digit_func,
! 					  IntegerLiteralBase base);
  
  public:
    // Construct lexer with input file and filename provided
diff -Nrcpad gcc-17-20260531/gcc/rust/lex/rust-token.h gcc-17-20260607/gcc/rust/lex/rust-token.h
*** gcc-17-20260531/gcc/rust/lex/rust-token.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/lex/rust-token.h	Sun Jun  7 22:32:07 2026
*************** enum TokenId
*** 218,223 ****
--- 218,234 ----
  #undef RS_TOKEN
  };
  
+ // Holds the base information for integer-literal tokens. For other tokens, its
+ // value is 0.
+ enum class IntegerLiteralBase : uint8_t
+ {
+   None = 0,
+   Binary,
+   Octal,
+   Decimal,
+   Hex,
+ };
+ 
  // dodgy "TokenPtr" declaration with Token forward declaration
  class Token;
  // A smart pointer (shared_ptr) to Token.
*************** private:
*** 256,298 ****
     * for most tokens. */
    PrimitiveCoreType type_hint;
  
    // Token constructor from token id and location. Has a null string.
    Token (TokenId token_id, location_t location)
!     : token_id (token_id), locus (location), type_hint (CORETYPE_UNKNOWN)
    {}
  
    // Token constructor from token id, location, and a string.
    Token (TokenId token_id, location_t location, std::string paramStr)
!     : token_id (token_id), locus (location), type_hint (CORETYPE_UNKNOWN)
    {
      // Normalize identifier tokens
      str = nfc_normalize_token_string (location, token_id, std::move (paramStr));
    }
  
    // Token constructor from token id, location, and a char.
    Token (TokenId token_id, location_t location, char paramChar)
      : token_id (token_id), locus (location), str (1, paramChar),
!       type_hint (CORETYPE_UNKNOWN)
    {
      // Do not need to normalize 1byte char
    }
  
    // Token constructor from token id, location, and a "codepoint".
    Token (TokenId token_id, location_t location, Codepoint paramCodepoint)
!     : token_id (token_id), locus (location), type_hint (CORETYPE_UNKNOWN)
    {
      // Normalize identifier tokens
      str = nfc_normalize_token_string (location, token_id,
  				      paramCodepoint.as_string ());
    }
  
    // Token constructor from token id, location, a string, and type hint.
    Token (TokenId token_id, location_t location, std::string paramStr,
  	 PrimitiveCoreType parType)
!     : token_id (token_id), locus (location), type_hint (parType)
    {
      // Normalize identifier tokens
      str = nfc_normalize_token_string (location, token_id, std::move (paramStr));
    }
  
  public:
--- 267,335 ----
     * for most tokens. */
    PrimitiveCoreType type_hint;
  
+   // Suffix start index if it exist. Otherwise has token str's length
+   uint16_t suffix_start;
+ 
+   // Base if it is an integer literal. Otherwise has LITERALBASE_NONE
+   IntegerLiteralBase integer_literal_base;
+ 
    // Token constructor from token id and location. Has a null string.
    Token (TokenId token_id, location_t location)
!     : token_id (token_id), locus (location), type_hint (CORETYPE_UNKNOWN),
!       suffix_start (0), integer_literal_base (IntegerLiteralBase::None)
    {}
  
    // Token constructor from token id, location, and a string.
    Token (TokenId token_id, location_t location, std::string paramStr)
!     : token_id (token_id), locus (location), type_hint (CORETYPE_UNKNOWN),
!       integer_literal_base (IntegerLiteralBase::None)
    {
      // Normalize identifier tokens
      str = nfc_normalize_token_string (location, token_id, std::move (paramStr));
+     suffix_start = str.length ();
    }
  
    // Token constructor from token id, location, and a char.
    Token (TokenId token_id, location_t location, char paramChar)
      : token_id (token_id), locus (location), str (1, paramChar),
!       type_hint (CORETYPE_UNKNOWN), suffix_start (1),
!       integer_literal_base (IntegerLiteralBase::None)
    {
      // Do not need to normalize 1byte char
    }
  
    // Token constructor from token id, location, and a "codepoint".
    Token (TokenId token_id, location_t location, Codepoint paramCodepoint)
!     : token_id (token_id), locus (location), type_hint (CORETYPE_UNKNOWN),
!       integer_literal_base (IntegerLiteralBase::None)
    {
      // Normalize identifier tokens
      str = nfc_normalize_token_string (location, token_id,
  				      paramCodepoint.as_string ());
+     suffix_start = str.length ();
    }
  
    // Token constructor from token id, location, a string, and type hint.
    Token (TokenId token_id, location_t location, std::string paramStr,
  	 PrimitiveCoreType parType)
!     : token_id (token_id), locus (location), type_hint (parType),
!       integer_literal_base (IntegerLiteralBase::None)
    {
      // Normalize identifier tokens
      str = nfc_normalize_token_string (location, token_id, std::move (paramStr));
+     suffix_start = str.length ();
+   }
+ 
+   // Token constructor from token id, location, a string, a suffix start index,
+   // a integer base type and type hint.
+   Token (TokenId token_id, location_t location, std::string paramStr,
+ 	 PrimitiveCoreType parType, uint16_t suffix_start,
+ 	 IntegerLiteralBase base)
+     : token_id (token_id), locus (location), str (std::move (paramStr)),
+       type_hint (parType), suffix_start (suffix_start),
+       integer_literal_base (base)
+   {
+     // Do not need to normalize literal str
    }
  
  public:
*************** public:
*** 329,348 ****
  
    // Makes and returns a new TokenPtr of type INT_LITERAL.
    static TokenPtr make_int (location_t locus, std::string str,
  			    PrimitiveCoreType type_hint = CORETYPE_UNKNOWN)
    {
!     // return std::make_shared<Token> (INT_LITERAL, locus, str, type_hint);
!     return TokenPtr (
!       new Token (INT_LITERAL, locus, std::move (str), type_hint));
    }
  
    // Makes and returns a new TokenPtr of type FLOAT_LITERAL.
!   static TokenPtr make_float (location_t locus, std::string str,
! 			      PrimitiveCoreType type_hint = CORETYPE_UNKNOWN)
    {
      // return std::make_shared<Token> (FLOAT_LITERAL, locus, str, type_hint);
!     return TokenPtr (
!       new Token (FLOAT_LITERAL, locus, std::move (str), type_hint));
    }
  
    // Makes and returns a new TokenPtr of type STRING_LITERAL.
--- 366,389 ----
  
    // Makes and returns a new TokenPtr of type INT_LITERAL.
    static TokenPtr make_int (location_t locus, std::string str,
+ 			    uint16_t suffix_start, IntegerLiteralBase base,
  			    PrimitiveCoreType type_hint = CORETYPE_UNKNOWN)
    {
!     // return std::make_shared<Token> (INT_LITERAL, locus, str, type_hint,
!     // suffix_start, base);
!     return TokenPtr (new Token (INT_LITERAL, locus, std::move (str), type_hint,
! 				suffix_start, base));
    }
  
    // Makes and returns a new TokenPtr of type FLOAT_LITERAL.
!   static TokenPtr
!   make_float (location_t locus, std::string str, uint16_t suffix_start,
! 	      PrimitiveCoreType type_hint = CORETYPE_UNKNOWN,
! 	      IntegerLiteralBase base = IntegerLiteralBase::None)
    {
      // return std::make_shared<Token> (FLOAT_LITERAL, locus, str, type_hint);
!     return TokenPtr (new Token (FLOAT_LITERAL, locus, std::move (str),
! 				type_hint, suffix_start, base));
    }
  
    // Makes and returns a new TokenPtr of type STRING_LITERAL.
*************** public:
*** 429,434 ****
--- 470,481 ----
      return type_hint == CORETYPE_PURE_DECIMAL ? CORETYPE_UNKNOWN : type_hint;
    }
  
+   // Gets suffix_start of the token
+   uint16_t get_suffix_start () const { return suffix_start; }
+ 
+   // Gets literal base of the token
+   IntegerLiteralBase get_literal_base () const { return integer_literal_base; }
+ 
    // diagnostics (error reporting)
    const char *get_token_description () const
    {
diff -Nrcpad gcc-17-20260531/gcc/rust/metadata/rust-export-metadata.cc gcc-17-20260607/gcc/rust/metadata/rust-export-metadata.cc
*** gcc-17-20260531/gcc/rust/metadata/rust-export-metadata.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/metadata/rust-export-metadata.cc	Sun Jun  7 22:32:07 2026
*************** PublicInterface::is_crate_public (const
*** 344,350 ****
    const HIR::Visibility &visibility = item.get_visibility ();
  
    bool is_public
!     = visibility.get_vis_type () == HIR::Visibility::VisType::PUBLIC;
    bool has_path = !visibility.get_path ().is_error ();
  
    // FIXME this might be pub(crate)
--- 344,350 ----
    const HIR::Visibility &visibility = item.get_visibility ();
  
    bool is_public
!     = visibility.get_vis_type () == HIR::Visibility::VisType::Public;
    bool has_path = !visibility.get_path ().is_error ();
  
    // FIXME this might be pub(crate)
diff -Nrcpad gcc-17-20260531/gcc/rust/parse/rust-parse-impl-expr.hxx gcc-17-20260607/gcc/rust/parse/rust-parse-impl-expr.hxx
*** gcc-17-20260531/gcc/rust/parse/rust-parse-impl-expr.hxx	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/parse/rust-parse-impl-expr.hxx	Sun Jun  7 22:32:07 2026
*************** Parser<ManagedTokenSource>::parse_litera
*** 344,355 ****
        break;
      case INT_LITERAL:
        type = AST::Literal::INT;
!       literal_value = t->get_str ();
        lexer.skip_token ();
        break;
      case FLOAT_LITERAL:
        type = AST::Literal::FLOAT;
!       literal_value = t->get_str ();
        lexer.skip_token ();
        break;
      // case BOOL_LITERAL
--- 344,355 ----
        break;
      case INT_LITERAL:
        type = AST::Literal::INT;
!       literal_value = LiteralResolve::evaluate_integer_literal (t);
        lexer.skip_token ();
        break;
      case FLOAT_LITERAL:
        type = AST::Literal::FLOAT;
!       literal_value = LiteralResolve::evaluate_float_literal (t);
        lexer.skip_token ();
        break;
      // case BOOL_LITERAL
*************** Parser<ManagedTokenSource>::parse_litera
*** 374,384 ****
        return tl::unexpected<Parse::Error::Node> (Parse::Error::Node::MALFORMED);
      }
  
    // create literal based on stuff in switch
    return std::unique_ptr<AST::LiteralExpr> (
      new AST::LiteralExpr (std::move (literal_value), std::move (type),
! 			  t->get_type_hint (), std::move (outer_attrs),
! 			  t->get_locus ()));
  }
  
  template <typename ManagedTokenSource>
--- 374,388 ----
        return tl::unexpected<Parse::Error::Node> (Parse::Error::Node::MALFORMED);
      }
  
+   auto type_hint
+     = (t->get_id () == INT_LITERAL || t->get_id () == FLOAT_LITERAL)
+ 	? LiteralResolve::resolve_literal_suffix (t)
+ 	: t->get_type_hint ();
+ 
    // create literal based on stuff in switch
    return std::unique_ptr<AST::LiteralExpr> (
      new AST::LiteralExpr (std::move (literal_value), std::move (type),
! 			  type_hint, std::move (outer_attrs), t->get_locus ()));
  }
  
  template <typename ManagedTokenSource>
*************** Parser<ManagedTokenSource>::parse_expr (
*** 1796,1802 ****
      return tl::unexpected<Parse::Error::Expr> (Parse::Error::Expr::CHILD_ERROR);
    if (expr.value () == nullptr)
      return tl::unexpected<Parse::Error::Expr> (Parse::Error::Expr::CHILD_ERROR);
!   
    return left_denotations (std::move (expr), right_binding_power,
  			   std::move (outer_attrs), restrictions);
  }
--- 1800,1806 ----
      return tl::unexpected<Parse::Error::Expr> (Parse::Error::Expr::CHILD_ERROR);
    if (expr.value () == nullptr)
      return tl::unexpected<Parse::Error::Expr> (Parse::Error::Expr::CHILD_ERROR);
! 
    return left_denotations (std::move (expr), right_binding_power,
  			   std::move (outer_attrs), restrictions);
  }
*************** Parser<ManagedTokenSource>::null_denotat
*** 2077,2090 ****
      case INT_LITERAL:
        // we should check the range, but ignore for now
        // encode as int?
!       return std::unique_ptr<AST::LiteralExpr> (
! 	new AST::LiteralExpr (tok->get_str (), AST::Literal::INT,
! 			      tok->get_type_hint (), {}, tok->get_locus ()));
      case FLOAT_LITERAL:
        // encode as float?
!       return std::unique_ptr<AST::LiteralExpr> (
! 	new AST::LiteralExpr (tok->get_str (), AST::Literal::FLOAT,
! 			      tok->get_type_hint (), {}, tok->get_locus ()));
      case STRING_LITERAL:
        return std::unique_ptr<AST::LiteralExpr> (
  	new AST::LiteralExpr (tok->get_str (), AST::Literal::STRING,
--- 2081,2094 ----
      case INT_LITERAL:
        // we should check the range, but ignore for now
        // encode as int?
!       return std::unique_ptr<AST::LiteralExpr> (new AST::LiteralExpr (
! 	LiteralResolve::evaluate_integer_literal (tok), AST::Literal::INT,
! 	LiteralResolve::resolve_literal_suffix (tok), {}, tok->get_locus ()));
      case FLOAT_LITERAL:
        // encode as float?
!       return std::unique_ptr<AST::LiteralExpr> (new AST::LiteralExpr (
! 	LiteralResolve::evaluate_float_literal (tok), AST::Literal::FLOAT,
! 	LiteralResolve::resolve_literal_suffix (tok), {}, tok->get_locus ()));
      case STRING_LITERAL:
        return std::unique_ptr<AST::LiteralExpr> (
  	new AST::LiteralExpr (tok->get_str (), AST::Literal::STRING,
*************** Parser<ManagedTokenSource>::left_denotat
*** 2850,2866 ****
  	    auto prefix = str.substr (0, dot_pos);
  	    auto suffix = str.substr (dot_pos + 1);
  	    if (dot_pos == str.size () - 1)
! 	      lexer.split_current_token (
! 		{Token::make_int (current_loc, std::move (prefix),
! 				  CORETYPE_PURE_DECIMAL),
! 		 Token::make (DOT, current_loc + 1)});
  	    else
! 	      lexer.split_current_token (
! 		{Token::make_int (current_loc, std::move (prefix),
! 				  CORETYPE_PURE_DECIMAL),
! 		 Token::make (DOT, current_loc + 1),
! 		 Token::make_int (current_loc + 2, std::move (suffix),
! 				  CORETYPE_PURE_DECIMAL)});
  	    return parse_tuple_index_expr (tok, std::move (left),
  					   std::move (outer_attrs),
  					   restrictions);
--- 2854,2880 ----
  	    auto prefix = str.substr (0, dot_pos);
  	    auto suffix = str.substr (dot_pos + 1);
  	    if (dot_pos == str.size () - 1)
! 	      {
! 		auto prefix_len = prefix.length ();
! 		lexer.split_current_token (
! 		  {Token::make_int (current_loc, std::move (prefix), prefix_len,
! 				    IntegerLiteralBase::Decimal,
! 				    CORETYPE_PURE_DECIMAL),
! 		   Token::make (DOT, current_loc + 1)});
! 	      }
  	    else
! 	      {
! 		auto prefix_len = prefix.length ();
! 		auto suffix_len = suffix.length ();
! 		lexer.split_current_token (
! 		  {Token::make_int (current_loc, std::move (prefix), prefix_len,
! 				    IntegerLiteralBase::Decimal,
! 				    CORETYPE_PURE_DECIMAL),
! 		   Token::make (DOT, current_loc + 1),
! 		   Token::make_int (current_loc + 2, std::move (suffix),
! 				    suffix_len, IntegerLiteralBase::Decimal,
! 				    CORETYPE_PURE_DECIMAL)});
! 	      }
  	    return parse_tuple_index_expr (tok, std::move (left),
  					   std::move (outer_attrs),
  					   restrictions);
diff -Nrcpad gcc-17-20260531/gcc/rust/parse/rust-parse-impl-pattern.hxx gcc-17-20260607/gcc/rust/parse/rust-parse-impl-pattern.hxx
*** gcc-17-20260531/gcc/rust/parse/rust-parse-impl-pattern.hxx	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/parse/rust-parse-impl-pattern.hxx	Sun Jun  7 22:32:07 2026
*************** Parser<ManagedTokenSource>::parse_litera
*** 1094,1099 ****
--- 1094,1107 ----
        return nullptr;
      }
  
+   std::string literal_value;
+   if (range_lower->get_id () == INT_LITERAL)
+     literal_value = LiteralResolve::evaluate_integer_literal (range_lower);
+   else if (range_lower->get_id () == FLOAT_LITERAL)
+     literal_value = LiteralResolve::evaluate_float_literal (range_lower);
+   else
+     literal_value = range_lower->get_str ();
+ 
    const_TokenPtr next = lexer.peek_token ();
    if (next->get_id () == DOT_DOT_EQ || next->get_id () == ELLIPSIS
        || next->get_id () == DOT_DOT)
*************** Parser<ManagedTokenSource>::parse_litera
*** 1103,1109 ****
        lexer.skip_token ();
        std::unique_ptr<AST::RangePatternBound> lower (
  	new AST::RangePatternBoundLiteral (
! 	  AST::Literal (range_lower->get_str (), type,
  			PrimitiveCoreType::CORETYPE_UNKNOWN),
  	  range_lower->get_locus (), has_minus));
  
--- 1111,1117 ----
        lexer.skip_token ();
        std::unique_ptr<AST::RangePatternBound> lower (
  	new AST::RangePatternBoundLiteral (
! 	  AST::Literal (std::move (literal_value), type,
  			PrimitiveCoreType::CORETYPE_UNKNOWN),
  	  range_lower->get_locus (), has_minus));
  
*************** Parser<ManagedTokenSource>::parse_litera
*** 1125,1134 ****
    else
      {
        // literal pattern
        return std::unique_ptr<AST::LiteralPattern> (
! 	new AST::LiteralPattern (range_lower->get_str (), type,
! 				 range_lower->get_locus (),
! 				 range_lower->get_type_hint (), has_minus));
      }
  }
  
--- 1133,1148 ----
    else
      {
        // literal pattern
+ 
+       auto type_hint = (range_lower->get_id () == INT_LITERAL
+ 			|| range_lower->get_id () == FLOAT_LITERAL)
+ 			 ? LiteralResolve::resolve_literal_suffix (range_lower)
+ 			 : range_lower->get_type_hint ();
+ 
        return std::unique_ptr<AST::LiteralPattern> (
! 	new AST::LiteralPattern (std::move (literal_value), type,
! 				 range_lower->get_locus (), type_hint,
! 				 has_minus));
      }
  }
  
*************** Parser<ManagedTokenSource>::parse_range_
*** 1161,1176 ****
        lexer.skip_token ();
        return std::unique_ptr<AST::RangePatternBoundLiteral> (
  	new AST::RangePatternBoundLiteral (
! 	  AST::Literal (range_lower->get_str (), AST::Literal::INT,
! 			range_lower->get_type_hint ()),
  	  range_lower_locus));
      case FLOAT_LITERAL:
        lexer.skip_token ();
        rust_debug ("warning: used deprecated float range pattern bound");
        return std::unique_ptr<AST::RangePatternBoundLiteral> (
  	new AST::RangePatternBoundLiteral (
! 	  AST::Literal (range_lower->get_str (), AST::Literal::FLOAT,
! 			range_lower->get_type_hint ()),
  	  range_lower_locus));
      case MINUS:
        // branch on next token
--- 1175,1192 ----
        lexer.skip_token ();
        return std::unique_ptr<AST::RangePatternBoundLiteral> (
  	new AST::RangePatternBoundLiteral (
! 	  AST::Literal (LiteralResolve::evaluate_integer_literal (range_lower),
! 			AST::Literal::INT,
! 			LiteralResolve::resolve_literal_suffix (range_lower)),
  	  range_lower_locus));
      case FLOAT_LITERAL:
        lexer.skip_token ();
        rust_debug ("warning: used deprecated float range pattern bound");
        return std::unique_ptr<AST::RangePatternBoundLiteral> (
  	new AST::RangePatternBoundLiteral (
! 	  AST::Literal (LiteralResolve::evaluate_float_literal (range_lower),
! 			AST::Literal::FLOAT,
! 			LiteralResolve::resolve_literal_suffix (range_lower)),
  	  range_lower_locus));
      case MINUS:
        // branch on next token
*************** Parser<ManagedTokenSource>::parse_range_
*** 1181,1196 ****
  	  lexer.skip_token (1);
  	  return std::unique_ptr<AST::RangePatternBoundLiteral> (
  	    new AST::RangePatternBoundLiteral (
! 	      AST::Literal (range_lower->get_str (), AST::Literal::INT,
! 			    range_lower->get_type_hint ()),
  	      range_lower_locus, true));
  	case FLOAT_LITERAL:
  	  lexer.skip_token (1);
  	  rust_debug ("warning: used deprecated float range pattern bound");
  	  return std::unique_ptr<AST::RangePatternBoundLiteral> (
  	    new AST::RangePatternBoundLiteral (
! 	      AST::Literal (range_lower->get_str (), AST::Literal::FLOAT,
! 			    range_lower->get_type_hint ()),
  	      range_lower_locus, true));
  	default:
  	  add_error (Error (range_lower->get_locus (),
--- 1197,1216 ----
  	  lexer.skip_token (1);
  	  return std::unique_ptr<AST::RangePatternBoundLiteral> (
  	    new AST::RangePatternBoundLiteral (
! 	      AST::Literal (
! 		LiteralResolve::evaluate_integer_literal (range_lower),
! 		AST::Literal::INT,
! 		LiteralResolve::resolve_literal_suffix (range_lower)),
  	      range_lower_locus, true));
  	case FLOAT_LITERAL:
  	  lexer.skip_token (1);
  	  rust_debug ("warning: used deprecated float range pattern bound");
  	  return std::unique_ptr<AST::RangePatternBoundLiteral> (
  	    new AST::RangePatternBoundLiteral (
! 	      AST::Literal (
! 		LiteralResolve::evaluate_float_literal (range_lower),
! 		AST::Literal::FLOAT,
! 		LiteralResolve::resolve_literal_suffix (range_lower)),
  	      range_lower_locus, true));
  	default:
  	  add_error (Error (range_lower->get_locus (),
diff -Nrcpad gcc-17-20260531/gcc/rust/parse/rust-parse-impl.hxx gcc-17-20260607/gcc/rust/parse/rust-parse-impl.hxx
*** gcc-17-20260531/gcc/rust/parse/rust-parse-impl.hxx	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/parse/rust-parse-impl.hxx	Sun Jun  7 22:32:07 2026
*************** Parser<ManagedTokenSource>::parse_stmt_o
*** 7284,7289 ****
--- 7284,7298 ----
      case DOLLAR_SIGN:
        {
  	AST::PathInExpression path = parse_path_in_expression ();
+ 	if (path.is_error ())
+ 	  {
+ 	    Error error (t->get_locus (), "expected identifier");
+ 	    add_error (std::move (error));
+ 	    skip_after_semicolon ();
+ 	    return tl::unexpected<Parse::Error::Node> (
+ 	      Parse::Error::Node::CHILD_ERROR);
+ 	  }
+ 
  	tl::expected<std::unique_ptr<AST::Expr>, Parse::Error::Expr>
  	  null_denotation;
  
diff -Nrcpad gcc-17-20260531/gcc/rust/parse/rust-parse.cc gcc-17-20260607/gcc/rust/parse/rust-parse.cc
*** gcc-17-20260531/gcc/rust/parse/rust-parse.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/parse/rust-parse.cc	Sun Jun  7 22:32:07 2026
*************** is_match_compatible (const AST::MacroMat
*** 374,377 ****
--- 374,519 ----
    // FIXME: Does expansion depth/limit matter here?
    return is_match_compatible (*new_last, match);
  }
+ 
+ namespace LiteralResolve {
+ 
+ PrimitiveCoreType
+ resolve_literal_suffix (const_TokenPtr token)
+ {
+   const std::string &raw_str = token->get_str ();
+   uint16_t start = token->get_suffix_start ();
+ 
+   if (start >= raw_str.length ())
+     {
+       return token->is_pure_decimal () ? CORETYPE_PURE_DECIMAL
+ 				       : CORETYPE_UNKNOWN;
+     }
+ 
+   std::string suffix = raw_str.substr (start);
+ 
+   if (suffix == "f32" || suffix == "f64")
+     {
+       auto base = token->get_literal_base ();
+       if (base == IntegerLiteralBase::Hex || base == IntegerLiteralBase::Octal
+ 	  || base == IntegerLiteralBase::Binary)
+ 	{
+ 	  rust_error_at (token->get_locus (),
+ 			 "invalid type suffix %qs for integer (%s) literal",
+ 			 suffix.c_str (),
+ 			 base == IntegerLiteralBase::Hex
+ 			   ? "hex"
+ 			   : (base == IntegerLiteralBase::Octal
+ 				? "octal"
+ 				: (base == IntegerLiteralBase::Binary
+ 				     ? "binary"
+ 				     : "<insert unknown base>")));
+ 	  return CORETYPE_UNKNOWN;
+ 	}
+       return suffix == "f32" ? CORETYPE_F32 : CORETYPE_F64;
+     }
+   else if (suffix == "i8")
+     {
+       return CORETYPE_I8;
+     }
+   else if (suffix == "i16")
+     {
+       return CORETYPE_I16;
+     }
+   else if (suffix == "i32")
+     {
+       return CORETYPE_I32;
+     }
+   else if (suffix == "i64")
+     {
+       return CORETYPE_I64;
+     }
+   else if (suffix == "i128")
+     {
+       return CORETYPE_I128;
+     }
+   else if (suffix == "isize")
+     {
+       return CORETYPE_ISIZE;
+     }
+   else if (suffix == "u8")
+     {
+       return CORETYPE_U8;
+     }
+   else if (suffix == "u16")
+     {
+       return CORETYPE_U16;
+     }
+   else if (suffix == "u32")
+     {
+       return CORETYPE_U32;
+     }
+   else if (suffix == "u64")
+     {
+       return CORETYPE_U64;
+     }
+   else if (suffix == "u128")
+     {
+       return CORETYPE_U128;
+     }
+   else if (suffix == "usize")
+     {
+       return CORETYPE_USIZE;
+     }
+   else
+ 
+     rust_error_at (token->get_locus (), "invalid suffix %qs for number literal",
+ 		   suffix.c_str ());
+ 
+   return CORETYPE_UNKNOWN;
+ }
+ 
+ std::string
+ evaluate_integer_literal (const_TokenPtr token)
+ {
+   const std::string &raw_str = token->get_str ();
+   uint16_t suffix_start = token->get_suffix_start ();
+ 
+   std::string num_str = raw_str.substr (0, suffix_start);
+ 
+   num_str.erase (std::remove (num_str.begin (), num_str.end (), '_'),
+ 		 num_str.end ());
+ 
+   auto base = token->get_literal_base ();
+ 
+   if (base == IntegerLiteralBase::Decimal || base == IntegerLiteralBase::None)
+     return num_str;
+ 
+   num_str = num_str.substr (2);
+ 
+   int base_int = 10;
+   if (base == IntegerLiteralBase::Hex)
+     base_int = 16;
+   else if (base == IntegerLiteralBase::Octal)
+     base_int = 8;
+   else if (base == IntegerLiteralBase::Binary)
+     base_int = 2;
+ 
+   mpz_t dec_num;
+   mpz_init (dec_num);
+   mpz_set_str (dec_num, num_str.c_str (), base_int);
+   char *s = mpz_get_str (NULL, 10, dec_num);
+   std::string dec_str = s;
+   free (s);
+   mpz_clear (dec_num);
+ 
+   return dec_str;
+ }
+ 
+ std::string
+ evaluate_float_literal (const_TokenPtr token)
+ {
+   std::string raw_str
+     = token->get_str ().substr (0, token->get_suffix_start ());
+   raw_str.erase (std::remove (raw_str.begin (), raw_str.end (), '_'),
+ 		 raw_str.end ());
+ 
+   return raw_str;
+ }
+ 
+ } // namespace LiteralResolve
  } // namespace Rust
diff -Nrcpad gcc-17-20260531/gcc/rust/parse/rust-parse.h gcc-17-20260607/gcc/rust/parse/rust-parse.h
*** gcc-17-20260531/gcc/rust/parse/rust-parse.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/parse/rust-parse.h	Sun Jun  7 22:32:07 2026
*************** std::string extract_module_path (const A
*** 948,953 ****
--- 948,966 ----
   */
  bool is_match_compatible (const AST::MacroMatch &last_match,
  			  const AST::MacroMatch &current_match);
+ 
+ namespace LiteralResolve {
+ 
+ // Converts a raw string to a decimal number string.
+ std::string evaluate_integer_literal (const_TokenPtr token);
+ 
+ // Converts a raw float string to a decimal float number string.
+ std::string evaluate_float_literal (const_TokenPtr token);
+ 
+ // Evaluates the suffix of the raw string, if it exists, and returns coretype.
+ PrimitiveCoreType resolve_literal_suffix (const_TokenPtr token);
+ 
+ } // namespace LiteralResolve
  } // namespace Rust
  
  #endif // RUST_PARSE_H
diff -Nrcpad gcc-17-20260531/gcc/rust/resolve/rust-forever-stack.h gcc-17-20260607/gcc/rust/resolve/rust-forever-stack.h
*** gcc-17-20260531/gcc/rust/resolve/rust-forever-stack.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/resolve/rust-forever-stack.h	Sun Jun  7 22:32:07 2026
*************** public:
*** 749,771 ****
    tl::optional<Rib::Definition> get_from_prelude (NodeId prelude,
  						  const Identifier &name);
  
-   /**
-    * Resolve a path to its definition in the current `ForeverStack`
-    *
-    * // TODO: Add documentation for `segments`
-    *
-    * @return a valid option with the Definition if the path is present in the
-    *         current map, an empty one otherwise.
-    */
-   tl::optional<Rib::Definition> resolve_path (
-     const ResolutionPath &path, ResolutionMode mode,
-     std::function<void (Usage, Definition)> insert_segment_resolution,
-     std::vector<Error> &collect_errors);
-   tl::optional<Rib::Definition> resolve_path (
-     const ResolutionPath &path, ResolutionMode mode,
-     std::function<void (Usage, Definition)> insert_segment_resolution,
-     std::vector<Error> &collect_errors, NodeId starting_point_id);
- 
    // FIXME: Documentation
    tl::optional<Rib &> to_rib (NodeId rib_id);
    tl::optional<const Rib &> to_rib (NodeId rib_id) const;
--- 749,754 ----
*************** public:
*** 778,784 ****
     */
    bool is_module_descendant (NodeId parent, NodeId child) const;
  
- private:
    /**
     * A link between two Nodes in our trie data structure. This class represents
     * the edges of the graph
--- 761,766 ----
*************** private:
*** 826,843 ****
      tl::optional<Node &> parent; // `None` only if the node is a root
    };
  
-   /**
-    * Private overloads which allow specifying a starting point
-    */
- 
    tl::optional<Rib::Definition> get (Node &start, const Identifier &name);
  
-   tl::optional<Rib::Definition> resolve_path (
-     const ResolutionPath &path, ResolutionMode mode,
-     std::function<void (Usage, Definition)> insert_segment_resolution,
-     std::vector<Error> &collect_errors,
-     std::reference_wrapper<Node> starting_point);
- 
    /* Should we keep going upon seeing a Rib? */
    enum class KeepGoing
    {
--- 808,815 ----
*************** private:
*** 859,864 ****
--- 831,837 ----
  
    Node &cursor ();
    const Node &cursor () const;
+ 
    void update_cursor (Node &new_cursor);
  
    /* The forever stack's actual nodes */
*************** private:
*** 930,936 ****
    tl::optional<const Node &> dfs_node (const Node &starting_point,
  				       NodeId to_find) const;
  
- public:
    bool forward_declared (NodeId definition, NodeId usage)
    {
      if (peek ().kind != Rib::Kind::ForwardTypeParamBan)
--- 903,908 ----
diff -Nrcpad gcc-17-20260531/gcc/rust/resolve/rust-forever-stack.hxx gcc-17-20260607/gcc/rust/resolve/rust-forever-stack.hxx
*** gcc-17-20260531/gcc/rust/resolve/rust-forever-stack.hxx	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/resolve/rust-forever-stack.hxx	Sun Jun  7 22:32:07 2026
*************** ForeverStack<N>::resolve_final_segment (
*** 668,887 ****
  }
  
  template <Namespace N>
- tl::optional<Rib::Definition>
- ForeverStack<N>::resolve_path (
-   const ResolutionPath &path, ResolutionMode mode,
-   std::function<void (Usage, Definition)> insert_segment_resolution,
-   std::vector<Error> &collect_errors, NodeId starting_point_id)
- {
-   auto starting_point = dfs_node (root, starting_point_id);
- 
-   // We may have a prelude, but haven't visited it yet and thus it's not in our
-   // nodes
-   if (!starting_point)
-     return tl::nullopt;
- 
-   return resolve_path (path, mode, insert_segment_resolution, collect_errors,
- 		       *starting_point);
- }
- 
- template <Namespace N>
- tl::optional<Rib::Definition>
- ForeverStack<N>::resolve_path (
-   const ResolutionPath &path, ResolutionMode mode,
-   std::function<void (Usage, Definition)> insert_segment_resolution,
-   std::vector<Error> &collect_errors)
- {
-   std::reference_wrapper<Node> starting_point = cursor ();
- 
-   return resolve_path (path, mode, insert_segment_resolution, collect_errors,
- 		       starting_point);
- }
- 
- template <Namespace N>
- tl::optional<Rib::Definition>
- ForeverStack<N>::resolve_path (
-   const ResolutionPath &path, ResolutionMode mode,
-   std::function<void (Usage, Definition)> insert_segment_resolution,
-   std::vector<Error> &collect_errors,
-   std::reference_wrapper<Node> starting_point)
- {
-   bool can_descend = true;
- 
-   rust_debug ("resolving %s", path.as_string ().c_str ());
- 
-   if (auto lang_item = path.get_lang_prefix ())
-     {
-       NodeId seg_id
- 	= Analysis::Mappings::get ().get_lang_item_node (lang_item->first);
- 
-       insert_segment_resolution (Usage (lang_item->second),
- 				 Definition (seg_id));
- 
-       if (path.get_segments ().empty ())
- 	return Rib::Definition::NonShadowable (seg_id);
- 
-       auto new_start = dfs_node (root, seg_id);
-       rust_assert (new_start.has_value ());
-       starting_point = new_start.value ();
- 
-       can_descend = false;
-     }
-   else
-     {
-       switch (mode)
- 	{
- 	case ResolutionMode::Normal:
- 	  break; // default
- 	case ResolutionMode::FromRoot:
- 	  starting_point = root;
- 	  break;
- 	case ResolutionMode::FromExtern:
- 	  starting_point = extern_prelude;
- 	  break;
- 	default:
- 	  rust_unreachable ();
- 	}
-     }
- 
-   if (path.get_segments ().empty ())
-     {
-       return Rib::Definition::NonShadowable (starting_point.get ().id);
-     }
- 
-   auto &segments = path.get_segments ();
- 
-   // if there's only one segment, we just use `get`
-   if (can_descend && segments.size () == 1)
-     {
-       auto &seg = segments.front ();
- 
-       tl::optional<Rib::Definition> res = get (starting_point.get (), seg.name);
- 
-       if (!res)
- 	res = get_lang_prelude (seg.name);
- 
-       if (N == Namespace::Types && !res)
- 	{
- 	  if (seg.is_crate_path_seg ())
- 	    {
- 	      insert_segment_resolution (Usage (seg.node_id),
- 					 Definition (root.id));
- 	      // TODO: does NonShadowable matter?
- 	      return Rib::Definition::NonShadowable (root.id);
- 	    }
- 	  else if (seg.is_lower_self_seg ())
- 	    {
- 	      NodeId id = find_closest_module (starting_point.get ()).id;
- 	      insert_segment_resolution (Usage (seg.node_id), Definition (id));
- 	      // TODO: does NonShadowable matter?
- 	      return Rib::Definition::NonShadowable (id);
- 	    }
- 	  else if (seg.is_super_path_seg ())
- 	    {
- 	      Node &closest_module
- 		= find_closest_module (starting_point.get ());
- 	      if (closest_module.is_root ())
- 		{
- 		  rust_error_at (seg.locus, ErrorCode::E0433,
- 				 "too many leading %<super%> keywords");
- 		  return tl::nullopt;
- 		}
- 
- 	      NodeId id
- 		= find_closest_module (closest_module.parent.value ()).id;
- 	      insert_segment_resolution (Usage (seg.node_id), Definition (id));
- 	      // TODO: does NonShadowable matter?
- 	      return Rib::Definition::NonShadowable (id);
- 	    }
- 	  else
- 	    {
- 	      // HACK: check for a module after we check the language prelude
- 	      for (auto &kv :
- 		   find_closest_module (starting_point.get ()).children)
- 		{
- 		  auto &link = kv.first;
- 
- 		  if (link.path.map_or (
- 			[&seg] (Identifier path) {
- 			  auto &path_str = path.as_string ();
- 			  return path_str == seg.name;
- 			},
- 			false))
- 		    {
- 		      insert_segment_resolution (Usage (seg.node_id),
- 						 Definition (kv.second.id));
- 		      return Rib::Definition::NonShadowable (kv.second.id);
- 		    }
- 		}
- 	    }
- 	}
- 
-       if (res && !res->is_ambiguous ())
- 	insert_segment_resolution (Usage (seg.node_id),
- 				   Definition (res->get_node_id ()));
-       return res;
-     }
- 
-   auto iterator = segments.begin ();
-   if (can_descend)
-     {
-       if (auto res
- 	  = find_starting_point (segments, starting_point,
- 				 insert_segment_resolution, collect_errors))
- 	iterator = *res;
-       else
- 	return tl::nullopt;
-     }
- 
-   return resolve_segments (starting_point.get (), segments, iterator,
- 			   insert_segment_resolution, collect_errors)
-     .and_then ([this, &segments, &insert_segment_resolution] (
- 		 Node &final_node) -> tl::optional<Rib::Definition> {
-       // leave resolution within impl blocks to type checker
-       if (final_node.rib.kind == Rib::Kind::TraitOrImpl)
- 	return tl::nullopt;
- 
-       auto &seg = segments.back ();
-       std::string seg_name = seg.name;
- 
-       tl::optional<Rib::Definition> res
- 	= resolve_final_segment (final_node, seg_name,
- 				 seg.is_lower_self_seg ());
-       // Ok we didn't find it in the rib, Lets try the prelude...
-       if (!res)
- 	res = get_lang_prelude (seg_name);
- 
-       if (N == Namespace::Types && !res)
- 	{
- 	  // HACK: check for a module after we check the language prelude
- 	  for (auto &kv : final_node.children)
- 	    {
- 	      auto &link = kv.first;
- 
- 	      if (link.path.map_or (
- 		    [&seg_name] (Identifier path) {
- 		      auto &path_str = path.as_string ();
- 		      return path_str == seg_name;
- 		    },
- 		    false))
- 		{
- 		  insert_segment_resolution (Usage (seg.node_id),
- 					     Definition (kv.second.id));
- 		  return Rib::Definition::NonShadowable (kv.second.id);
- 		}
- 	    }
- 	}
- 
-       if (res && !res->is_ambiguous ())
- 	insert_segment_resolution (Usage (seg.node_id),
- 				   Definition (res->get_node_id ()));
- 
-       return res;
-     });
- }
- 
- template <Namespace N>
  tl::optional<typename ForeverStack<N>::DfsResult>
  ForeverStack<N>::dfs (ForeverStack<N>::Node &starting_point, NodeId to_find)
  {
--- 668,673 ----
diff -Nrcpad gcc-17-20260531/gcc/rust/resolve/rust-late-name-resolver-2.0.cc gcc-17-20260607/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
*** gcc-17-20260531/gcc/rust/resolve/rust-late-name-resolver-2.0.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/resolve/rust-late-name-resolver-2.0.cc	Sun Jun  7 22:32:07 2026
*************** Late::visit (AST::BreakExpr &expr)
*** 299,304 ****
--- 299,307 ----
  void
  Late::visit (AST::LoopLabel &label)
  {
+   auto resolved = ctx.lookup (label.get_lifetime ().get_node_id ());
+   if (resolved.has_value ())
+     return;
    auto &lifetime = label.get_lifetime ();
    ctx.labels.insert (Identifier (lifetime.as_string (), lifetime.get_locus ()),
  		     lifetime.get_node_id ());
diff -Nrcpad gcc-17-20260531/gcc/rust/resolve/rust-name-resolution-context.h gcc-17-20260607/gcc/rust/resolve/rust-name-resolution-context.h
*** gcc-17-20260531/gcc/rust/resolve/rust-name-resolution-context.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/resolve/rust-name-resolution-context.h	Sun Jun  7 22:32:07 2026
*************** public:
*** 543,562 ****
      switch (ns)
        {
        case Namespace::Values:
! 	resolved = values.resolve_path (path, mode, insert_segment_resolution,
! 					collect_errors);
  	break;
        case Namespace::Types:
! 	resolved = types.resolve_path (path, mode, insert_segment_resolution,
! 				       collect_errors);
  	break;
        case Namespace::Macros:
! 	resolved = macros.resolve_path (path, mode, insert_segment_resolution,
! 					collect_errors);
  	break;
        case Namespace::Labels:
! 	resolved = labels.resolve_path (path, mode, insert_segment_resolution,
! 					collect_errors);
  	break;
        default:
  	rust_unreachable ();
--- 543,562 ----
      switch (ns)
        {
        case Namespace::Values:
! 	resolved = resolve_path (values, path, mode, insert_segment_resolution,
! 				 collect_errors);
  	break;
        case Namespace::Types:
! 	resolved = resolve_path (types, path, mode, insert_segment_resolution,
! 				 collect_errors);
  	break;
        case Namespace::Macros:
! 	resolved = resolve_path (macros, path, mode, insert_segment_resolution,
! 				 collect_errors);
  	break;
        case Namespace::Labels:
! 	resolved = resolve_path (labels, path, mode, insert_segment_resolution,
! 				 collect_errors);
  	break;
        default:
  	rust_unreachable ();
*************** public:
*** 569,585 ****
  	switch (ns)
  	  {
  	  case Namespace::Values:
! 	    return values.resolve_path (path, mode, insert_segment_resolution,
! 					collect_errors, *prelude);
  	  case Namespace::Types:
! 	    return types.resolve_path (path, mode, insert_segment_resolution,
! 				       collect_errors, *prelude);
  	  case Namespace::Macros:
! 	    return macros.resolve_path (path, mode, insert_segment_resolution,
! 					collect_errors, *prelude);
  	  case Namespace::Labels:
! 	    return labels.resolve_path (path, mode, insert_segment_resolution,
! 					collect_errors, *prelude);
  	  default:
  	    rust_unreachable ();
  	  }
--- 569,585 ----
  	switch (ns)
  	  {
  	  case Namespace::Values:
! 	    return resolve_path (values, path, mode, insert_segment_resolution,
! 				 collect_errors, *prelude);
  	  case Namespace::Types:
! 	    return resolve_path (types, path, mode, insert_segment_resolution,
! 				 collect_errors, *prelude);
  	  case Namespace::Macros:
! 	    return resolve_path (macros, path, mode, insert_segment_resolution,
! 				 collect_errors, *prelude);
  	  case Namespace::Labels:
! 	    return resolve_path (labels, path, mode, insert_segment_resolution,
! 				 collect_errors, *prelude);
  	  default:
  	    rust_unreachable ();
  	  }
*************** public:
*** 774,779 ****
--- 774,807 ----
  			 std::forward<Args> (args)...);
    }
  
+   /**
+    * Resolve a path to its definition in the current `ForeverStack`
+    *
+    * // TODO: Add documentation for `segments`
+    *
+    * @return a valid option with the Definition if the path is present in the
+    *         current map, an empty one otherwise.
+    */
+   template <Namespace N>
+   tl::optional<Rib::Definition> resolve_path (
+     ForeverStack<N> &stack, const ResolutionPath &path, ResolutionMode mode,
+     std::function<void (Usage, Definition)> insert_segment_resolution,
+     std::vector<Error> &collect_errors);
+ 
+   template <Namespace N>
+   tl::optional<Rib::Definition> resolve_path (
+     ForeverStack<N> &stack, const ResolutionPath &path, ResolutionMode mode,
+     std::function<void (Usage, Definition)> insert_segment_resolution,
+     std::vector<Error> &collect_errors, NodeId starting_point_id);
+ 
+   /* TODO: Make private? */
+   template <Namespace N>
+   tl::optional<Rib::Definition> resolve_path (
+     ForeverStack<N> &stack, const ResolutionPath &path, ResolutionMode mode,
+     std::function<void (Usage, Definition)> insert_segment_resolution,
+     std::vector<Error> &collect_errors,
+     std::reference_wrapper<typename ForeverStack<N>::Node> starting_point);
+ 
    /* If declared with #[prelude_import], the current standard library module */
    tl::optional<NodeId> prelude;
  
*************** private:
*** 785,788 ****
--- 813,818 ----
  } // namespace Resolver2_0
  } // namespace Rust
  
+ #include "rust-name-resolution-context.hxx"
+ 
  #endif // ! RUST_NAME_RESOLVER_2_0_CTX_H
diff -Nrcpad gcc-17-20260531/gcc/rust/resolve/rust-name-resolution-context.hxx gcc-17-20260607/gcc/rust/resolve/rust-name-resolution-context.hxx
*** gcc-17-20260531/gcc/rust/resolve/rust-name-resolution-context.hxx	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/rust/resolve/rust-name-resolution-context.hxx	Sun Jun  7 22:32:07 2026
***************
*** 0 ****
--- 1,269 ----
+ // Copyright (C) 2026 Free Software Foundation, Inc.
+ 
+ // This file is part of GCC.
+ 
+ // GCC is free software; you can redistribute it and/or modify it under
+ // the terms of the GNU General Public License as published by the Free
+ // Software Foundation; either version 3, or (at your option) any later
+ // version.
+ 
+ // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ // WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ // for more details.
+ 
+ // You should have received a copy of the GNU General Public License
+ // along with GCC; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include "optional.h"
+ #include "rust-name-resolution-context.h"
+ 
+ /**
+  * Split the actual path resolution logic in its own file because it's a lot,
+  * and it could get even worse for certain edge cases.
+  */
+ 
+ namespace Rust {
+ namespace Resolver2_0 {
+ 
+ template <Namespace N>
+ tl::optional<Rib::Definition>
+ NameResolutionContext::resolve_path (
+   ForeverStack<N> &stack, const ResolutionPath &path, ResolutionMode mode,
+   std::function<void (Usage, Definition)> insert_segment_resolution,
+   std::vector<Error> &collect_errors)
+ {
+   std::reference_wrapper<typename ForeverStack<N>::Node> starting_point
+     = stack.cursor ();
+ 
+   return NameResolutionContext::resolve_path (stack, path, mode,
+ 					      insert_segment_resolution,
+ 					      collect_errors, starting_point);
+ }
+ 
+ template <Namespace N>
+ tl::optional<Rib::Definition>
+ NameResolutionContext::resolve_path (
+   ForeverStack<N> &stack, const ResolutionPath &path, ResolutionMode mode,
+   std::function<void (Usage, Definition)> insert_segment_resolution,
+   std::vector<Error> &collect_errors, NodeId starting_point_id)
+ 
+ {
+   auto starting_point = stack.dfs_node (stack.root, starting_point_id);
+ 
+   // We may have a prelude, but haven't visited it yet and thus it's not in
+   // our nodes
+   if (!starting_point)
+     return tl::nullopt;
+ 
+   return NameResolutionContext::resolve_path (stack, path, mode,
+ 					      insert_segment_resolution,
+ 					      collect_errors, *starting_point);
+ }
+ 
+ template <Namespace N>
+ tl::optional<Rib::Definition>
+ NameResolutionContext::resolve_path (
+   ForeverStack<N> &stack, const ResolutionPath &path, ResolutionMode mode,
+   std::function<void (Usage, Definition)> insert_segment_resolution,
+   std::vector<Error> &collect_errors,
+   std::reference_wrapper<typename ForeverStack<N>::Node> starting_point)
+ {
+   bool can_descend = true;
+ 
+   rust_debug ("resolving %s", path.as_string ().c_str ());
+ 
+   if (auto lang_item = path.get_lang_prefix ())
+     {
+       NodeId seg_id
+ 	= Analysis::Mappings::get ().get_lang_item_node (lang_item->first);
+ 
+       insert_segment_resolution (Usage (lang_item->second),
+ 				 Definition (seg_id));
+ 
+       if (path.get_segments ().empty ())
+ 	return Rib::Definition::NonShadowable (seg_id);
+ 
+       auto new_start = stack.dfs_node (stack.root, seg_id);
+       rust_assert (new_start.has_value ());
+       starting_point = new_start.value ();
+ 
+       can_descend = false;
+     }
+   else
+     {
+       switch (mode)
+ 	{
+ 	case ResolutionMode::Normal:
+ 	  break; // default
+ 	case ResolutionMode::FromRoot:
+ 	  starting_point = stack.root;
+ 	  break;
+ 	case ResolutionMode::FromExtern:
+ 	  starting_point = stack.extern_prelude;
+ 	  break;
+ 	default:
+ 	  rust_unreachable ();
+ 	}
+     }
+ 
+   if (path.get_segments ().empty ())
+     return Rib::Definition::NonShadowable (starting_point.get ().id);
+ 
+   auto &segments = path.get_segments ();
+ 
+   // if there's only one segment, we just use `get`
+   if (can_descend && segments.size () == 1)
+     {
+       auto &seg = segments.front ();
+ 
+       tl::optional<Rib::Definition> res
+ 	= stack.get (starting_point.get (), seg.name);
+ 
+       if (!res)
+ 	res = stack.get_lang_prelude (seg.name);
+ 
+       if (N == Namespace::Types && !res)
+ 	{
+ 	  if (seg.is_crate_path_seg ())
+ 	    {
+ 	      insert_segment_resolution (Usage (seg.node_id),
+ 					 Definition (stack.root.id));
+ 	      // TODO: does NonShadowable matter?
+ 	      return Rib::Definition::NonShadowable (stack.root.id);
+ 	    }
+ 	  else if (seg.is_lower_self_seg ())
+ 	    {
+ 	      NodeId id = stack.find_closest_module (starting_point.get ()).id;
+ 	      insert_segment_resolution (Usage (seg.node_id), Definition (id));
+ 	      // TODO: does NonShadowable matter?
+ 	      return Rib::Definition::NonShadowable (id);
+ 	    }
+ 	  else if (seg.is_super_path_seg ())
+ 	    {
+ 	      auto &closest_module
+ 		= stack.find_closest_module (starting_point.get ());
+ 	      if (closest_module.is_root ())
+ 		{
+ 		  rust_error_at (seg.locus, ErrorCode::E0433,
+ 				 "too many leading %<super%> keywords");
+ 		  return tl::nullopt;
+ 		}
+ 
+ 	      NodeId id
+ 		= stack.find_closest_module (closest_module.parent.value ()).id;
+ 	      insert_segment_resolution (Usage (seg.node_id), Definition (id));
+ 	      // TODO: does NonShadowable matter?
+ 	      return Rib::Definition::NonShadowable (id);
+ 	    }
+ 	  else
+ 	    {
+ 	      // HACK: check for a module after we check the language prelude
+ 	      for (auto &kv :
+ 		   stack.find_closest_module (starting_point.get ()).children)
+ 		{
+ 		  auto &link = kv.first;
+ 
+ 		  if (link.path.map_or (
+ 			[&seg] (Identifier path) {
+ 			  auto &path_str = path.as_string ();
+ 			  return path_str == seg.name;
+ 			},
+ 			false))
+ 		    {
+ 		      insert_segment_resolution (Usage (seg.node_id),
+ 						 Definition (kv.second.id));
+ 		      return Rib::Definition::NonShadowable (kv.second.id);
+ 		    }
+ 		}
+ 	    }
+ 	}
+ 
+       if (res && !res->is_ambiguous ())
+ 	insert_segment_resolution (Usage (seg.node_id),
+ 				   Definition (res->get_node_id ()));
+       return res;
+     }
+ 
+   auto iterator = segments.begin ();
+   if (can_descend)
+     {
+       if (auto res = stack.find_starting_point (segments, starting_point,
+ 						insert_segment_resolution,
+ 						collect_errors))
+ 	iterator = *res;
+       else
+ 	return tl::nullopt;
+     }
+ 
+   // We do the first part of path resolution exclusively in the types NS - this
+   // gives us a node in which to resolve the last segment of the path.
+ 
+   // We take our starting point and then get the equivalent Node from the Types
+   // NS - since it existed in whatever namespace we are right now, we assume it
+   // exists in the types NS.
+   auto types_starting_point
+     = types.dfs_node (types.root, starting_point.get ().id);
+ 
+   // TODO: Add a method for converting a node between namespaces? Make all of
+   // the starting point stuff return a NodeId rather than a Node&? And take a
+   // NodeId as a starting point rather than a Node?
+ 
+   auto node
+     = types.resolve_segments (types_starting_point.value (), segments, iterator,
+ 			      insert_segment_resolution, collect_errors);
+ 
+   if (!node)
+     return tl::nullopt;
+ 
+   // This node now represents the Node which *should* contain the definition
+   // used by the last segment. We now get the equivalent Node from this
+   // namespace after finding it in the types NS.
+   auto final_node_id = node.value ().id;
+   auto final_node = stack.dfs_node (stack.root, final_node_id).value ();
+ 
+   // leave resolution within impl blocks to type checker
+   if (final_node.rib.kind == Rib::Kind::TraitOrImpl)
+     return tl::nullopt;
+ 
+   auto &seg = segments.back ();
+   std::string seg_name = seg.name;
+ 
+   tl::optional<Rib::Definition> res
+     = stack.resolve_final_segment (final_node, seg_name,
+ 				   seg.is_lower_self_seg ());
+   // Ok we didn't find it in the rib, Lets try the prelude...
+   if (!res)
+     res = stack.get_lang_prelude (seg_name);
+ 
+   if (N == Namespace::Types && !res)
+     {
+       // HACK: check for a module after we check the language prelude
+       for (auto &kv : final_node.children)
+ 	{
+ 	  auto &link = kv.first;
+ 
+ 	  if (link.path.map_or (
+ 		[&seg_name] (Identifier path) {
+ 		  auto &path_str = path.as_string ();
+ 		  return path_str == seg_name;
+ 		},
+ 		false))
+ 	    {
+ 	      insert_segment_resolution (Usage (seg.node_id),
+ 					 Definition (kv.second.id));
+ 	      return Rib::Definition::NonShadowable (kv.second.id);
+ 	    }
+ 	}
+     }
+ 
+   if (res && !res->is_ambiguous ())
+     insert_segment_resolution (Usage (seg.node_id),
+ 			       Definition (res->get_node_id ()));
+ 
+   return res;
+ }
+ 
+ } // namespace Resolver2_0
+ } // namespace Rust
diff -Nrcpad gcc-17-20260531/gcc/rust/resolve/rust-name-resolver.cc gcc-17-20260607/gcc/rust/resolve/rust-name-resolver.cc
*** gcc-17-20260531/gcc/rust/resolve/rust-name-resolver.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/resolve/rust-name-resolver.cc	Sun Jun  7 22:32:07 2026
***************
*** 19,27 ****
  #include "rust-name-resolver.h"
  #include "rust-ast-full.h"
  
- // for flag_name_resolution_2_0
- #include "options.h"
- 
  namespace Rust {
  namespace Resolver {
  
--- 19,24 ----
diff -Nrcpad gcc-17-20260531/gcc/rust/util/rust-attributes.cc gcc-17-20260607/gcc/rust/util/rust-attributes.cc
*** gcc-17-20260531/gcc/rust/util/rust-attributes.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/util/rust-attributes.cc	Sun Jun  7 22:32:07 2026
*************** static const BuiltinAttrDefinition __def
*** 35,40 ****
--- 35,42 ----
       {Attrs::DERIVE_ATTR, EXPANSION},
       {Attrs::DEPRECATED, STATIC_ANALYSIS},
       {Attrs::ALLOW, STATIC_ANALYSIS},
+      {Attrs::WARN, STATIC_ANALYSIS},
+      {Attrs::DENY, STATIC_ANALYSIS},
       {Attrs::ALLOW_INTERNAL_UNSTABLE, STATIC_ANALYSIS},
       {Attrs::DOC, HIR_LOWERING},
       {Attrs::MUST_USE, STATIC_ANALYSIS},
diff -Nrcpad gcc-17-20260531/gcc/rust/util/rust-hir-map.cc gcc-17-20260607/gcc/rust/util/rust-hir-map.cc
*** gcc-17-20260531/gcc/rust/util/rust-hir-map.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/util/rust-hir-map.cc	Sun Jun  7 22:32:07 2026
*************** Mappings::Mappings ()
*** 105,111 ****
    builtinMarker
      = new HIR::ImplBlock (node, {}, {}, nullptr, nullptr, HIR::WhereClause ({}),
  			  BoundPolarity::RegularBound,
! 			  HIR::Visibility (HIR::Visibility::VisType::PUBLIC),
  			  {}, {}, UNDEF_LOCATION);
  }
  
--- 105,111 ----
    builtinMarker
      = new HIR::ImplBlock (node, {}, {}, nullptr, nullptr, HIR::WhereClause ({}),
  			  BoundPolarity::RegularBound,
! 			  HIR::Visibility (HIR::Visibility::VisType::Public),
  			  {}, {}, UNDEF_LOCATION);
  }
  
diff -Nrcpad gcc-17-20260531/gcc/rust/util/rust-lang-item.cc gcc-17-20260607/gcc/rust/util/rust-lang-item.cc
*** gcc-17-20260531/gcc/rust/util/rust-lang-item.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/util/rust-lang-item.cc	Sun Jun  7 22:32:07 2026
*************** const BiMap<std::string, LangItem::Kind>
*** 62,67 ****
--- 62,68 ----
    {"fn_once_output", Kind::FN_ONCE_OUTPUT},
    {"copy", Kind::COPY},
    {"clone", Kind::CLONE},
+   {"drop", Kind::DROP},
    {"sized", Kind::SIZED},
    {"sync", Kind::SYNC},
    {"slice_alloc", Kind::SLICE_ALLOC},
diff -Nrcpad gcc-17-20260531/gcc/rust/util/rust-lang-item.h gcc-17-20260607/gcc/rust/util/rust-lang-item.h
*** gcc-17-20260531/gcc/rust/util/rust-lang-item.h	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/util/rust-lang-item.h	Sun Jun  7 22:32:07 2026
*************** public:
*** 90,95 ****
--- 90,96 ----
      // markers
      COPY,
      CLONE,
+     DROP,
      SIZED,
      SYNC,
  
diff -Nrcpad gcc-17-20260531/gcc/rust/util/rust-token-converter.cc gcc-17-20260607/gcc/rust/util/rust-token-converter.cc
*** gcc-17-20260531/gcc/rust/util/rust-token-converter.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/rust/util/rust-token-converter.cc	Sun Jun  7 22:32:07 2026
*************** from_literal (const ProcMacro::Literal &
*** 297,303 ****
  {
    auto lookup = suffixes.lookup (literal.suffix.to_string ());
    auto loc = convert (literal.span);
!   auto suffix = lookup.value_or (CORETYPE_UNKNOWN);
    // FIXME: Add spans instead of empty locations
    switch (literal.kind.tag)
      {
--- 297,303 ----
  {
    auto lookup = suffixes.lookup (literal.suffix.to_string ());
    auto loc = convert (literal.span);
!   auto type_hint = lookup.value_or (CORETYPE_UNKNOWN);
    // FIXME: Add spans instead of empty locations
    switch (literal.kind.tag)
      {
*************** from_literal (const ProcMacro::Literal &
*** 309,321 ****
        result.push_back (Token::make_char (loc, literal.text.to_string ()[0]));
        break;
      case ProcMacro::INTEGER:
!       result.push_back (
! 	Token::make_int (loc, literal.text.to_string (), suffix));
!       break;
      case ProcMacro::FLOAT:
!       result.push_back (
! 	Token::make_float (loc, literal.text.to_string (), suffix));
!       break;
      case ProcMacro::STR:
        result.push_back (Token::make_string (loc, literal.text.to_string ()));
        break;
--- 309,374 ----
        result.push_back (Token::make_char (loc, literal.text.to_string ()[0]));
        break;
      case ProcMacro::INTEGER:
!       {
! 	std::string text = literal.text.to_string ();
! 	std::string suffix_str = literal.suffix.to_string ();
! 	int suffix_start = text.length ();
! 
! 	if (!suffix_str.empty ())
! 	  {
! 	    bool ends_with_suffix
! 	      = text.size () >= suffix_str.size ()
! 		&& text.compare (text.size () - suffix_str.size (),
! 				 suffix_str.size (), suffix_str)
! 		     == 0;
! 
! 	    if (!ends_with_suffix)
! 	      text += suffix_str;
! 	    else
! 	      suffix_start = text.length () - suffix_str.length ();
! 	  }
! 	auto base = IntegerLiteralBase::Decimal;
! 	if (suffix_start >= 2 && text[0] == '0')
! 	  {
! 	    if (text[1] == 'x' || text[1] == 'X')
! 	      base = Rust::IntegerLiteralBase::Hex;
! 	    else if (text[1] == 'o' || text[1] == 'O')
! 	      base = Rust::IntegerLiteralBase::Octal;
! 	    else if (text[1] == 'b' || text[1] == 'B')
! 	      base = Rust::IntegerLiteralBase::Binary;
! 	  }
! 
! 	result.push_back (
! 	  Token::make_int (loc, text, suffix_start, base, type_hint));
! 	break;
!       }
      case ProcMacro::FLOAT:
!       {
! 	std::string text = literal.text.to_string ();
! 	std::string suffix_str = literal.suffix.to_string ();
! 	auto suffix_start = text.length ();
! 	if (!suffix_str.empty ())
! 	  {
! 	    bool ends_with_suffix
! 	      = text.size () >= suffix_str.size ()
! 		&& text.compare (text.size () - suffix_str.size (),
! 				 suffix_str.size (), suffix_str)
! 		     == 0;
! 
! 	    if (!ends_with_suffix)
! 	      {
! 		text += suffix_str;
! 	      }
! 	    else
! 	      {
! 		suffix_start = text.length () - suffix_str.length ();
! 	      }
! 	  }
! 
! 	result.push_back (Token::make_float (loc, text, suffix_start, type_hint,
! 					     IntegerLiteralBase::Decimal));
! 	break;
!       }
      case ProcMacro::STR:
        result.push_back (Token::make_string (loc, literal.text.to_string ()));
        break;
*************** from_punct (const ProcMacro::Punct &punc
*** 357,364 ****
  }
  
  /**
!  * Iterate over a Group and append all inner tokens to a vector enclosed by its
!  * delimiters.
   *
   * @param g Reference to the Group to convert.
   * @param result Reference to the vector tokens should be appended to.
--- 410,417 ----
  }
  
  /**
!  * Iterate over a Group and append all inner tokens to a vector enclosed by
!  * its delimiters.
   *
   * @param g Reference to the Group to convert.
   * @param result Reference to the vector tokens should be appended to.
diff -Nrcpad gcc-17-20260531/gcc/sched-deps.cc gcc-17-20260607/gcc/sched-deps.cc
*** gcc-17-20260531/gcc/sched-deps.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/sched-deps.cc	Sun Jun  7 22:32:07 2026
*************** sched_analyze_insn (class deps_desc *dep
*** 3149,3170 ****
  	    }
  	}
  
!       for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
! 	if (TEST_HARD_REG_BIT (implicit_reg_pending_uses, i))
! 	  {
! 	    struct deps_reg *reg_last = &deps->reg_last[i];
! 	    add_dependence_list (insn, reg_last->sets, 0, REG_DEP_TRUE, false);
! 	    add_dependence_list (insn, reg_last->implicit_sets, 0,
! 				 REG_DEP_ANTI, false);
! 	    add_dependence_list (insn, reg_last->clobbers, 0, REG_DEP_TRUE,
! 				 false);
  
! 	    if (!deps->readonly)
! 	      {
! 		reg_last->uses = alloc_INSN_LIST (insn, reg_last->uses);
! 		reg_last->uses_length++;
! 	      }
! 	  }
  
        if (targetm.sched.exposed_pipeline)
  	{
--- 3149,3170 ----
  	    }
  	}
  
!       hard_reg_set_iterator hrsi;
!       EXECUTE_IF_SET_IN_HARD_REG_SET (implicit_reg_pending_uses, 0, i, hrsi)
! 	{
! 	  struct deps_reg *reg_last = &deps->reg_last[i];
! 	  add_dependence_list (insn, reg_last->sets, 0, REG_DEP_TRUE, false);
! 	  add_dependence_list (insn, reg_last->implicit_sets, 0,
! 			       REG_DEP_ANTI, false);
! 	  add_dependence_list (insn, reg_last->clobbers, 0, REG_DEP_TRUE,
! 			       false);
  
! 	  if (!deps->readonly)
! 	    {
! 	      reg_last->uses = alloc_INSN_LIST (insn, reg_last->uses);
! 	      reg_last->uses_length++;
! 	    }
! 	}
  
        if (targetm.sched.exposed_pipeline)
  	{
*************** sched_analyze_insn (class deps_desc *dep
*** 3309,3328 ****
  	}
      }
  
!   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
!     if (TEST_HARD_REG_BIT (implicit_reg_pending_clobbers, i))
!       {
! 	struct deps_reg *reg_last = &deps->reg_last[i];
! 	add_dependence_list (insn, reg_last->sets, 0, REG_DEP_ANTI, false);
! 	add_dependence_list (insn, reg_last->clobbers, 0, REG_DEP_ANTI, false);
! 	add_dependence_list (insn, reg_last->uses, 0, REG_DEP_ANTI, false);
! 	add_dependence_list (insn, reg_last->control_uses, 0, REG_DEP_ANTI,
! 			     false);
  
  	if (!deps->readonly)
  	  reg_last->implicit_sets
  	    = alloc_INSN_LIST (insn, reg_last->implicit_sets);
!       }
  
    if (!deps->readonly)
      {
--- 3309,3328 ----
  	}
      }
  
!   hard_reg_set_iterator hrsi;
!   EXECUTE_IF_SET_IN_HARD_REG_SET (implicit_reg_pending_clobbers, 0, i, hrsi)
!     {
!       struct deps_reg *reg_last = &deps->reg_last[i];
!       add_dependence_list (insn, reg_last->sets, 0, REG_DEP_ANTI, false);
!       add_dependence_list (insn, reg_last->clobbers, 0, REG_DEP_ANTI, false);
!       add_dependence_list (insn, reg_last->uses, 0, REG_DEP_ANTI, false);
!       add_dependence_list (insn, reg_last->control_uses, 0, REG_DEP_ANTI,
! 			   false);
  
  	if (!deps->readonly)
  	  reg_last->implicit_sets
  	    = alloc_INSN_LIST (insn, reg_last->implicit_sets);
!     }
  
    if (!deps->readonly)
      {
diff -Nrcpad gcc-17-20260531/gcc/sel-sched-dump.cc gcc-17-20260607/gcc/sel-sched-dump.cc
*** gcc-17-20260531/gcc/sel-sched-dump.cc	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/sel-sched-dump.cc	Sun Jun  7 22:32:07 2026
*************** dump_insn_vector (rtx_vec_t succs)
*** 539,552 ****
  static void
  print_hard_reg_set (FILE *file, const char *prefix, HARD_REG_SET set)
  {
!   int i;
  
    fprintf (file, "%s{ ", prefix);
!   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
!     {
!       if (TEST_HARD_REG_BIT (set, i))
! 	fprintf (file, "%d ", i);
!     }
    fprintf (file, "}\n");
  }
  
--- 539,552 ----
  static void
  print_hard_reg_set (FILE *file, const char *prefix, HARD_REG_SET set)
  {
!   unsigned int i;
  
    fprintf (file, "%s{ ", prefix);
! 
!   hard_reg_set_iterator hrsi;
!   EXECUTE_IF_SET_IN_HARD_REG_SET (set, 0, i, hrsi)
!     fprintf (file, "%d ", i);
! 
    fprintf (file, "}\n");
  }
  
diff -Nrcpad gcc-17-20260531/gcc/target.def gcc-17-20260607/gcc/target.def
*** gcc-17-20260531/gcc/target.def	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/target.def	Sun Jun  7 22:32:07 2026
*************** documentation.",
*** 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.  */
--- 5211,5216 ----
*************** interoperability between several ABIs in
*** 5498,5516 ****
   const predefined_function_abi &, (const_tree type),
   NULL)
  
- DEFHOOK
- (insn_callee_abi,
-  "This hook returns a description of the ABI used by the target of\n\
- call instruction @var{insn}; see the definition of\n\
- @code{predefined_function_abi} for details of the ABI descriptor.\n\
- Only the global function @code{insn_callee_abi} should call this hook\n\
- directly.\n\
- \n\
- Targets only need to define this hook if they support\n\
- interoperability between several ABIs in the same translation unit.",
-  const predefined_function_abi &, (const rtx_insn *insn),
-  NULL)
- 
  /* ??? Documenting this hook requires a GFDL license grant.  */
  DEFHOOK_UNDOC
  (internal_arg_pointer,
--- 5486,5491 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/ChangeLog gcc-17-20260607/gcc/testsuite/ChangeLog
*** gcc-17-20260531/gcc/testsuite/ChangeLog	Sun May 31 22:32:06 2026
--- gcc-17-20260607/gcc/testsuite/ChangeLog	Sun Jun  7 22:32:07 2026
***************
*** 1,3 ****
--- 1,470 ----
+ 2026-06-04  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+ 
+ 	PR target/106895
+ 	* gcc.target/powerpc/pr106895-1.c: New test.
+ 	* gcc.target/powerpc/pr106895-2.c: New test.
+ 
+ 2026-06-04  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/125588
+ 	* gcc.dg/pr125588-1.c: New test.
+ 
+ 2026-06-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/125378
+ 	* g++.dg/lookup/operator-8b.C: New test.
+ 	* g++.dg/lookup/operator-8c.C: New test.
+ 	* g++.dg/lookup/operator-9a.C: New test.
+ 	* g++.dg/lookup/operator-9b.C: New test.
+ 
+ 2026-06-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/125490
+ 	* g++.dg/cpp2a/concepts-pr125490.C: New test.
+ 	* g++.dg/cpp2a/concepts-pr125490a.C: New test.
+ 
+ 2026-06-03  Henri Menke  <henri@henrimenke.de>
+ 
+ 	* gfortran.dg/always_inline_1.f90: New test.
+ 	* gfortran.dg/always_inline_2.f90: New test.
+ 	* gfortran.dg/inline_1.f90: New test.
+ 	* gfortran.dg/inline_2.f90: New test.
+ 
+ 2026-06-03  Pengxuan Zheng  <pengxuan.zheng@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/124405
+ 	* gcc.dg/tree-ssa/pr124405.c: New test.
+ 
+ 2026-06-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125252
+ 	* gcc.dg/pr125252.c
+ 
+ 2026-06-03  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/107124
+ 	* g++.dg/template/deduce11.C: New test.
+ 	* g++.dg/template/deduce12.C: New test.
+ 
+ 2026-06-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/123569
+ 	* gcc.dg/pr123569.c: New test.
+ 
+ 2026-06-03  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+ 
+ 	* gcc.dg/tree-ssa/sccp-loop-phi.c: New test.
+ 	* gcc.dg/tree-ssa/sccp-loop-phi-not-optimized.c: New test.
+ 
+ 2026-06-03  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/103221
+ 	* gcc.dg/tree-ssa/dse-points-to.c: Disable sccopy1.
+ 	* gcc.dg/tree-ssa/pr45397.c: Remove the xfail.
+ 	* gcc.dg/ubsan/pr81981.c: Swap around which one is xfailed.
+ 
+ 2026-06-03  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/sat/sat_arith.h: Add test helper macros.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u16-from-u128.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u16-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u32-from-u128.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u64-from-u128.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u128.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u16.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u128.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u128.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u64-from-u128.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u128.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u16.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u64.c: New test.
+ 
+ 2026-06-03  feedable  <feedabl3@gmail.com>
+ 
+ 	PR c++/124794
+ 	PR c++/125069
+ 	* g++.dg/reflect/member19.C: Enable tests.
+ 	* g++.dg/reflect/splice15.C: New test.
+ 	* g++.dg/reflect/splice16.C: New test.
+ 
+ 2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* gcc.dg/rtl/x86_64/different-structs.c: Initialize CALL_INSN_ABI_ID.
+ 	* selftests/x86_64/call-insn.rtl: Likewise.
+ 
+ 2026-06-03  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/105594
+ 	* gfortran.dg/pr105594.f90: New test.
+ 
+ 2026-06-03  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* gcc.target/aarch64/sme/inline-asm.c: New test.
+ 
+ 2026-06-03  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	PR tree-optimization/125579
+ 	* gcc.dg/pr125579.c: New test.
+ 
+ 2026-06-03  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/125581
+ 	* gnat.dg/atomic9.adb (NVIC_STIR): Add alignment clause.
+ 
+ 2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125431
+ 	* gfortran.dg/vect/pr125431.f90: New test.
+ 
+ 2026-06-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125509
+ 	* gcc.dg/vect/pr125509.c: New test.
+ 
+ 2026-06-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* g++.dg/modules/pr120458-1_a.C: Skip on non-UCN targets.
+ 	* g++.dg/modules/pr120458-2_a.C: Likewise.
+ 
+ 2026-06-03  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/125512
+ 	* gm2.dg/spell/iso/fail/badmodule.mod: New test.
+ 	* gm2.dg/spell/iso/fail/badrecord.mod: New test.
+ 	* gm2.dg/spell/iso/fail/color.def: New test.
+ 
+ 2026-06-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125477
+ 	* gcc.dg/torture/pr125477.c: New testcase.
+ 
+ 2026-06-03  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	PR target/111037
+ 	PR target/113248
+ 	* gcc.target/riscv/rvv/vsetvl/pr111037-1.c: Update vsetvl
+ 	patterns to match post-reorder asm sequence.
+ 	* gcc.target/riscv/rvv/vsetvl/pr111037-4.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/pr113248.c: Likewise.
+ 
+ 2026-06-02  Richard Sandiford  <rdsandiford@googlemail.com>
+ 
+ 	* gcc.dg/tree-ssa/backprop-7.c: New test.
+ 
+ 2026-06-02  Jose E. Marchesi  <jemarch@gnu.org>
+ 
+ 	* algol68/compile/malformed-mode-1.a68: New test.
+ 	* algol68/compile/malformed-mode-2.a68: Likewise.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125545
+ 	* gcc.dg/torture/pr125545.c: New testcase.
+ 
+ 2026-06-02  Lino Hsing-Yu Peng  <linopeng@andestech.com>
+ 
+ 	* gcc.target/riscv/arch-61.c: New test.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125553
+ 	* gcc.dg/torture/pr125553.c: New testcase.
+ 
+ 2026-06-02  Wang Yaduo  <wangyaduo@linux.alibaba.com>
+ 
+ 	* gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-stmt-cost.c:
+ 	New test.
+ 	* gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-ldst-cost.c:
+ 	New test.
+ 	* gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-unordered.c:
+ 	New test.
+ 	* gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-ordered.c:
+ 	New test.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125250
+ 	* gcc.dg/torture/pr125250.c: Declare g0 as _Bool.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/125502
+ 	* gcc.dg/torture/pr125502.c: New testcase.
+ 
+ 2026-06-02  Christopher Bazley  <chris.bazley@arm.com>
+ 
+ 	* gcc.target/powerpc/pr125327.c: New test.
+ 
+ 2026-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/120702
+ 	* gcc.dg/tree-ssa/pr120702.c: New testcase.
+ 
+ 2026-06-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/125517
+ 	* gcc.dg/builtin-bitreverse-9.c: New test.
+ 
+ 2026-06-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gfortran.dg/gomp/allocate-6.f90: Adjust dg-error wording after
+ 	recent spelling fixes.
+ 	* gfortran.dg/gomp/allocate-7.f90: Likewise.
+ 	* gfortran.dg/gomp/allocate-14.f90: Likewise.
+ 	* gcc.target/sparc/struct-ret-check-1.c: Fix comment spelling,
+ 	specificed -> specified.
+ 
+ 2026-06-02  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/88632
+ 	PR fortran/104630
+ 	* gfortran.dg/submodule_35.f90: New test.
+ 	* gfortran.dg/submodule_35_aux.f90: Submodule and program for
+ 	for the new test.
+ 	Assisted by: Claude Sonnet 4.6
+ 
+ 2026-06-02  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c/121911
+ 	* gcc.dg/Wnested-externs-1.c: Add -mstack-protector-guard=global
+ 	for x86.
+ 
+ 2026-06-02  Tianle Shi  <shitianle@hygon.cn>
+ 
+ 	* gcc.target/i386/avx512_avoid_vec_perm-1.c: New test.
+ 	* gcc.target/i386/avx512_avoid_vec_perm-2.c: New test.
+ 	* gcc.target/i386/avx512_avoid_vec_perm-3.c: New test.
+ 
+ 2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125527
+ 	* gfortran.dg/submodule_host_assoc_1.f90: New test.
+ 	* gfortran.dg/submodule_host_assoc_1_aux.f90: New test.
+ 
+ 2026-06-01  Joe Natter  <johannes.natter@outlook.at>
+ 
+ 	PR c++/125422
+ 	* g++.dg/warn/Wduplicated-branches10.C: New test.
+ 
+ 2026-06-01  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/98539
+ 	* gcc.dg/pr98539.c: New test.
+ 
+ 2026-06-01  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* g++.dg/opt/shrink-wrapping-vector-1.C: xfail for C++17down.
+ 
+ 2026-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125481
+ 	* gfortran.dg/generic_37.f90: New test.
+ 	* gfortran.dg/generic_38.f90: New test.
+ 
+ 2026-06-01  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/122827
+ 	* gcc.target/aarch64/sve/pr122827.c: New test.
+ 
+ 2026-06-01  Eczbek  <eczbek.void@gmail.com>
+ 
+ 	PR c++/125317
+ 	* g++.dg/cpp2a/concepts-requires42.C: New test.
+ 
+ 2026-06-01  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* gcc.dg/lto/toplevel-simple-asm-1_0.c: Adjust inline assembler
+ 	for arm-none-eabi.
+ 
+ 2026-06-01  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* rust/compile/empty_path.rs: New file.
+ 
+ 2026-06-01  lishin  <lishin1008@gmail.com>
+ 
+ 	* rust/compile/drop-lang-item.rs: New test.
+ 
+ 2026-06-01  Jean-Christian CÎRSTEA  <jean-christian.cirstea@tuta.com>
+ 
+ 	* rust/compile/bswap.rs: Update error location.
+ 	* rust/compile/ctlz.rs: Likewise.
+ 	* rust/compile/ctlz_nonzero.rs: Likewise.
+ 	* rust/compile/cttz.rs: Likewise.
+ 	* rust/compile/cttz_nonzero.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-5.rs: Likewise.
+ 	* rust/compile/torture/intrinsics-7.rs: Likewise.
+ 
+ 2026-06-01  Islam-Imad  <islamimad404@gmail.com>
+ 
+ 	* rust/execute/cf-labeled-block.rs: New test.
+ 
+ 2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* rust/compile/issue-4159.rs: New test
+ 
+ 2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* rust/compile/issue-4158.rs: New test.
+ 
+ 2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* rust/compile/issue-3537.rs: New test.
+ 
+ 2026-06-01  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* rust/compile/const-issue1440.rs: Enable staged_api feature.
+ 	* rust/compile/for-loop1.rs: Likewise.
+ 	* rust/compile/for-loop2.rs: Likewise.
+ 	* rust/compile/issue-1031.rs: Likewise.
+ 	* rust/compile/issue-1289.rs: Likewise.
+ 	* rust/compile/iterators1.rs: Likewise.
+ 	* rust/compile/rustc_const_stable.rs: Likewise.
+ 	* rust/compile/torture/issue-1075.rs: Likewise.
+ 	* rust/compile/torture/issue-1432.rs: Likewise.
+ 	* rust/execute/torture/const-generics-7.rs: Likewise.
+ 	* rust/execute/torture/for-loop1.rs: Likewise.
+ 	* rust/execute/torture/for-loop2.rs: Likewise.
+ 	* rust/execute/torture/issue-1120.rs: Likewise.
+ 	* rust/execute/torture/issue-1133.rs: Likewise.
+ 	* rust/execute/torture/issue-1232.rs: Likewise.
+ 	* rust/execute/torture/issue-1436.rs: Likewise.
+ 	* rust/execute/torture/iter1.rs: Likewise.
+ 	* rust/execute/torture/slice-magic.rs: Likewise.
+ 	* rust/execute/torture/slice-magic2.rs: Likewise.
+ 	* rust/execute/torture/str-layout1.rs: Likewise.
+ 	* rust/compile/missing_staged_api.rs: New test.
+ 
+ 2026-06-01  Enes Cevik  <nsvke@proton.me>
+ 
+ 	* rust/compile/empty-non-decimal.rs: New test.
+ 
+ 2026-06-01  Enes Cevik  <nsvke@proton.me>
+ 
+ 	* rust/compile/deferred-suffix-validation.rs: New test.
+ 	* rust/compile/evaluate-integer-or-float.rs: New test.
+ 	* rust/compile/tuple-index.rs: New test.
+ 
+ 2026-06-01  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
+ 
+ 	* rust/compile/assert_missing_panic.rs: New test.
+ 
+ 2026-06-01  lishin  <lishin1008@gmail.com>
+ 
+ 	* rust/compile/issue-3972.rs: New test.
+ 
+ 2026-06-01  Harishankar  <harishankarpp7@gmail.com>
+ 
+ 	* rust/compile/issue-4167.rs: New test.
+ 
+ 2026-06-01  Islam-Imad  <islamimad404@gmail.com>
+ 
+ 	* rust/compile/const-compound-assignment.rs: New test.
+ 	* rust/execute/const-compound-assignment.rs: New test.
+ 
+ 2026-06-01  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* gcc.target/i386/apx-ndd-2.c: Add -mtune-ctrl=enable_ndd_mem.
+ 	* gcc.target/i386/apx-ndd-adc.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-base-index-1.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-cmov.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-no-seg-global-1.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-sbb.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-seg-1.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-seg-2.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-seg-3.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-seg-4.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-seg-5.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-shld-shrd.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-tls-1a.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-tls-1b.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-tls-2.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-tls-3.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-tls-4.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-x32-1.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-x32-2a.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-x32-2b.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-x32-2c.c: Likewise.
+ 	* gcc.target/i386/apx-ndd-x32-2d.c: Likewise.
+ 	* gcc.target/i386/apx-ndd.c: Likewise.
+ 	* gcc.target/i386/pr113729.c: Likewise.
+ 	* gcc.target/i386/pr113729-adc-sbb.c: Likewise.
+ 	* gcc.target/i386/pr79173-13.c: Likewise.
+ 	* gcc.target/i386/pr79173-14.c: Likewise.
+ 	* gcc.target/i386/pr79173-15.c: Likewise.
+ 	* gcc.target/i386/pr79173-16.c: Likewise.
+ 
+ 2026-06-01  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* gcc.target/i386/apx-zu-4.c: New test.
+ 
+ 2026-05-31  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/23471
+ 	PR tree-optimization/125513
+ 	* gcc.dg/tree-ssa/vrp-mult-nonneg-1.c: New test.
+ 	* gcc.dg/tree-ssa/vrp-mult-nonneg-2.c: New test.
+ 
+ 2026-05-31  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	PR rtl-optimization/123313
+ 	* gcc.target/riscv/pr123313.c: New test.
+ 	* gcc.target/riscv/pr124009.c: Adjust expected output.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* gcc.dg/opts-1.c: Removed Wnostrict-overflow option test.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* gcc.dg/pr81592.c: Removed strict-overflow options.
+ 	* gcc.dg/pragma-diag-3.c: Removed Wstrict-overflow option, along
+ 	with a reference and tests for PR66098 ("[5 regression] #pragma
+ 	diagnostic 'ignored' not fullyundone by pop for
+ 	strict-overflow").
+ 	* gcc.dg/pr36227.c: Removed.
+ 	* gcc.dg/pr48022-1.c: Removed.
+ 	* gcc.dg/pr48022-2.c: Removed.
+ 	* gcc.dg/pr49705.c: Removed.
+ 	* gcc.dg/pr52904.c: Removed.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* gcc.dg/Wstrict-overflow-10.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-11.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-12.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-13.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-14.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-15.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-16.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-17.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-18.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-19.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-2.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-20.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-21.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-23.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-26.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-27.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-4.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-6.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-7.c: Removed.
+ 	* gcc.dg/Wstrict-overflow-8.c: Removed.
+ 
+ 2026-05-31  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	* gcc.dg/Wstrict-overflow-25.c: Removed.
+ 
  2026-05-30  Artemiy Volkov  <artemiy.volkov@arm.com>
  
  	* gcc.target/aarch64/sve2/acle/general/firstp.c: Adjust testcases.
diff -Nrcpad gcc-17-20260531/gcc/testsuite/algol68/compile/malformed-mode-1.a68 gcc-17-20260607/gcc/testsuite/algol68/compile/malformed-mode-1.a68
*** gcc-17-20260531/gcc/testsuite/algol68/compile/malformed-mode-1.a68	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/algol68/compile/malformed-mode-1.a68	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,6 ----
+ begin mode Set = ref[]Elem, { dg-error "" }
+                             { dg-message "coercible to itself" "" { target *-*-* } .-1 }
+            Elem = union (int,Set); { dg-error "" }
+                                    { dg-message "coercible to itself" "" { target *-*-* } .-1 }
+       skip
+ end
diff -Nrcpad gcc-17-20260531/gcc/testsuite/algol68/compile/malformed-mode-2.a68 gcc-17-20260607/gcc/testsuite/algol68/compile/malformed-mode-2.a68
*** gcc-17-20260531/gcc/testsuite/algol68/compile/malformed-mode-2.a68	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/algol68/compile/malformed-mode-2.a68	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,5 ----
+ begin mode Node = struct (int i, Node n); { dg-error "" }
+                                           { dg-message "infinite" "" { target *-*-* } .-1 }
+       skip
+ end
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c
*** gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bitreverseg-1.c	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,164 ----
+ /* Test __builtin_bitreverseg.  */
+ /* { dg-do run { target { c || c++11 } } } */
+ /* { dg-options "-O2" } */
+ 
+ #if __CHAR_BIT__ == 8
+ #if __SIZEOF_INT__ == 4
+ static_assert (__builtin_bitreverseg (0x2fa889a7U) == 0xe59115f4U, "");
+ #endif
+ #if __SIZEOF_LONG_LONG__ == 8
+ static_assert (__builtin_bitreverseg (0xd7632f428bdccb94ULL) == 0x29d33bd142f4c6ebULL, "");
+ #endif
+ static_assert (__builtin_bitreverseg ((unsigned char) 0xac) == (unsigned char) 0x35, "");
+ #if __SIZEOF_SHORT__ == 2
+ static_assert (__builtin_bitreverseg ((unsigned short) 0xc4f0) == (unsigned short) 0x0f23, "");
+ #endif
+ #if __SIZEOF_INT128__ == 16
+ static_assert (__builtin_bitreverseg ((((unsigned __int128) 0x398773ddb9250c54ULL) << 64)
+ 				 | 0x26933639cdf63ea6ULL)
+ 				 == ((((unsigned __int128) 0x657c6fb39c6cc964ULL) << 64)
+ 				     | 0x2a30a49dbbcee19cULL), "");
+ #endif
+ #endif
+ #if __BITINT_MAXWIDTH__ >= 856
+ static_assert (__builtin_bitreverseg (0xb75774uwb) == 0x2eeaeduwb, "");
+ static_assert (__builtin_bitreverseg (0xd55668c010uwb) == 0x0803166aabuwb, "");
+ static_assert (__builtin_bitreverseg ((unsigned _BitInt(129)) 0x01cc4426458663d6c35ad6f0c7117fc2b7uwb)
+ 	       == 0x01da87fd11c61ed6b586d78cc344c84467uwb, "");
+ static_assert (__builtin_bitreverseg ((unsigned _BitInt(136)) 0xc73210faaad84376ebd396f82a166ac5f9uwb)
+ 	       == 0x9fa35668541f69cbd76ec21b555f084ce3uwb, "");
+ static_assert (__builtin_bitreverseg ((unsigned _BitInt(832)) 0x09d2702b49ac2e9b1010df028451dceaf2cf9938035fa708921fb53a5d509d66220d916bb9bf07c9cfe6cc5437a83e2977d7617a360882c82838038588a0ecaaae7d16673d1d310c03fd603aa59f631c76c497adcc1975f451787ad9196684c7e39a2e20b75f2dbauwb)
+ 	       == 0x5db4faed047459c7e32166989b5e1e8a2fae9833b5e9236e38c6f9a55c06bfc0308cb8bce668be7555370511a1c01c141341106c5e86ebee947c15ec2a3367f393e0fd9dd689b04466b90aba5cadf84910e5fac01c99f34f573b8a2140fb0808d9743592d40e4b90uwb, "");
+ static_assert (__builtin_bitreverseg ((unsigned _BitInt(833)) 0x0054078b08ef56720bb2a2cc52ddac983838de381c548c346e0b4274d51635f36b3c7e732bd4e536868702d864ae709ce74fd403a36037116c79854190bb34fbf7b26e238654590cdb5ce4400a54dcf1a3b1f546112c587da6ddbe3698f23190a49fb32af30c36cf68uwb)
+ 	       == 0x002de6d8619ea99bf24a13189e32d8fb76cb7c346910c55f1b8b1e7654a0044e75b6613454c388ec9bdfbe59ba1305433c6d11d80d8b8057e5ce721cea4c3681c2c2d94e57a99cfc79ad9f58d1565c85a0ec5862547038f63838326b7694668a9ba09cd5ee21a3c054uwb, "");
+ static_assert (__builtin_bitreverseg ((unsigned _BitInt(856)) 0x6aa3d211688a1bc275204e2e83f7ecacfdc42aecdc1ae8093b901c207dc089e8645bf9cce6148e5b34dc89b7d47563d13a8ebd16a8a51fe3353b04b3fc8d9b60e9942ccfa8bb2adc97b4936b29f63c6384f9792c9f9810d4d41487d0a122308ab65c595e17843aaf38cd1auwb)
+ 	       == 0x58b31cf55c21e87a9a3a6d510c44850be1282b2b0819f9349e9f21c63c6f94d6c92de93b54dd15f334299706d9b13fcd20dcacc7f8a51568bd715c8bc6ae2bed913b2cda712867339fda26179103be043809dc9017583b375423bf3537efc1747204ae43d85116884bc556uwb, "");
+ #endif
+ 
+ #if __CHAR_BIT__ == 8
+ #if __SIZEOF_INT__ == 4
+ [[gnu::noipa]] unsigned
+ bitreverse32 (unsigned x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ #endif
+ #if __SIZEOF_LONG_LONG__ == 8
+ [[gnu::noipa]] unsigned long long
+ bitreverse64 (unsigned long long x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ #endif
+ [[gnu::noipa]] unsigned char
+ bitreverse8 (unsigned char x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ #if __SIZEOF_SHORT__ == 2
+ [[gnu::noipa]] unsigned short
+ bitreverse16 (unsigned short x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ #endif
+ #if __SIZEOF_INT128__ == 16
+ [[gnu::noipa]] unsigned __int128
+ bitreverse128 (unsigned __int128 x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ #endif
+ #endif
+ #if __BITINT_MAXWIDTH__ >= 856
+ [[gnu::noipa]] unsigned _BitInt(24)
+ bitreverse24 (unsigned _BitInt(24) x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(40)
+ bitreverse40 (unsigned _BitInt(40) x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(129)
+ bitreverse129 (unsigned _BitInt(129) x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(136)
+ bitreverse136 (unsigned _BitInt(136) x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(832)
+ bitreverse832 (unsigned _BitInt(832) x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(833)
+ bitreverse833 (unsigned _BitInt(833) x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(856)
+ bitreverse856 (unsigned _BitInt(856) x)
+ {
+   return __builtin_bitreverseg (x);
+ }
+ #endif
+ 
+ int
+ main ()
+ {
+ #if __CHAR_BIT__ == 8
+ #if __SIZEOF_INT__ == 4
+   if (bitreverse32 (0x2fa889a7U) != 0xe59115f4U)
+     __builtin_abort ();
+ #endif
+ #if __SIZEOF_LONG_LONG__ == 8
+   if (bitreverse64 (0xd7632f428bdccb94ULL) != 0x29d33bd142f4c6ebULL)
+     __builtin_abort ();
+ #endif
+   if (bitreverse8 ((unsigned char) 0xac) != (unsigned char) 0x35)
+     __builtin_abort ();
+ #if __SIZEOF_SHORT__ == 2
+   if (bitreverse16 ((unsigned short) 0xc4f0) != (unsigned short) 0x0f23)
+     __builtin_abort ();
+ #endif
+ #if __SIZEOF_INT128__ == 16
+   if (bitreverse128 ((((unsigned __int128) 0x398773ddb9250c54ULL) << 64)
+ 		| 0x26933639cdf63ea6ULL)
+       != ((((unsigned __int128) 0x657c6fb39c6cc964ULL) << 64)
+ 	  | 0x2a30a49dbbcee19cULL))
+     __builtin_abort ();
+ #endif
+ #endif
+ #if __BITINT_MAXWIDTH__ >= 856
+   if (bitreverse24 (0xb75774uwb) != 0x2eeaed)
+     __builtin_abort ();
+   if (bitreverse40 (0xd55668c010uwb) != 0x0803166aabuwb)
+     __builtin_abort ();
+   if (bitreverse129 (0x01cc4426458663d6c35ad6f0c7117fc2b7uwb)
+ 	       != 0x01da87fd11c61ed6b586d78cc344c84467uwb)
+     __builtin_abort ();
+   if (bitreverse136 (0xc73210faaad84376ebd396f82a166ac5f9uwb)
+       != 0x9fa35668541f69cbd76ec21b555f084ce3uwb)
+     __builtin_abort ();
+   if (bitreverse832 (0x09d2702b49ac2e9b1010df028451dceaf2cf9938035fa708921fb53a5d509d66220d916bb9bf07c9cfe6cc5437a83e2977d7617a360882c82838038588a0ecaaae7d16673d1d310c03fd603aa59f631c76c497adcc1975f451787ad9196684c7e39a2e20b75f2dbauwb)
+       != 0x5db4faed047459c7e32166989b5e1e8a2fae9833b5e9236e38c6f9a55c06bfc0308cb8bce668be7555370511a1c01c141341106c5e86ebee947c15ec2a3367f393e0fd9dd689b04466b90aba5cadf84910e5fac01c99f34f573b8a2140fb0808d9743592d40e4b90uwb)
+     __builtin_abort ();
+   if (bitreverse833 (0x0054078b08ef56720bb2a2cc52ddac983838de381c548c346e0b4274d51635f36b3c7e732bd4e536868702d864ae709ce74fd403a36037116c79854190bb34fbf7b26e238654590cdb5ce4400a54dcf1a3b1f546112c587da6ddbe3698f23190a49fb32af30c36cf68uwb)
+       != 0x002de6d8619ea99bf24a13189e32d8fb76cb7c346910c55f1b8b1e7654a0044e75b6613454c388ec9bdfbe59ba1305433c6d11d80d8b8057e5ce721cea4c3681c2c2d94e57a99cfc79ad9f58d1565c85a0ec5862547038f63838326b7694668a9ba09cd5ee21a3c054uwb)
+     __builtin_abort ();
+   if (bitreverse856 (0x6aa3d211688a1bc275204e2e83f7ecacfdc42aecdc1ae8093b901c207dc089e8645bf9cce6148e5b34dc89b7d47563d13a8ebd16a8a51fe3353b04b3fc8d9b60e9942ccfa8bb2adc97b4936b29f63c6384f9792c9f9810d4d41487d0a122308ab65c595e17843aaf38cd1auwb)
+       != 0x58b31cf55c21e87a9a3a6d510c44850be1282b2b0819f9349e9f21c63c6f94d6c92de93b54dd15f334299706d9b13fcd20dcacc7f8a51568bd715c8bc6ae2bed913b2cda712867339fda26179103be043809dc9017583b375423bf3537efc1747204ae43d85116884bc556uwb)
+     __builtin_abort ();
+ #endif
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bitreverseg-2.c gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bitreverseg-2.c
*** gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bitreverseg-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bitreverseg-2.c	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,29 ----
+ /* Test __builtin_bitreverseg.  */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ int
+ main ()
+ {
+   __builtin_bitreverseg ();		/* { dg-error "wrong number of arguments to '__builtin_bitreverseg'" } */
+   __builtin_bitreverseg (1U, 1U);	/* { dg-error "wrong number of arguments to '__builtin_bitreverseg'" } */
+   __builtin_bitreverseg (1.0);		/* { dg-error "'__builtin_bitreverseg' operand not an integral type" } */
+   __builtin_bitreverseg (1.0f);		/* { dg-error "'__builtin_bitreverseg' operand not an integral type" } */
+   __builtin_bitreverseg (1.0L);		/* { dg-error "'__builtin_bitreverseg' operand not an integral type" } */
+   struct S { int a; };
+   __builtin_bitreverseg ((struct S) { 42 });	/* { dg-error "'__builtin_bitreverseg' operand not an integral type" } */
+   enum E { E0, E1 } e;
+   __builtin_bitreverseg (E1);		/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has signed type" "" { target c } } */
+ 					/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has enumerated type" "" { target c++ } .-1 } */
+   __builtin_bitreverseg (e);		/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has enumerated type" } */
+   __builtin_bitreverseg ((enum E) 1);	/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has enumerated type" } */
+ #if !defined(__cplusplus) || __cplusplus >=  201103L
+   enum F : int { F0, F1 } f;
+   __builtin_bitreverseg (F1);		/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has enumerated type" "" { target { c || c++11 } } } */
+   __builtin_bitreverseg (f);		/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has enumerated type" "" { target { c || c++11 } } } */
+   __builtin_bitreverseg ((enum F) 1);	/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has enumerated type" "" { target { c || c++11 } } } */
+ #endif
+   __builtin_bitreverseg (false);	/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has boolean type" } */
+   __builtin_bitreverseg (1);		/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has signed type" } */
+   __builtin_bitreverseg ((char) 1);	/* { dg-error "argument 1 in call to function '__builtin_bitreverseg' has signed type" "" { target { ! unsigned_char } } } */
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bswapg-1.c gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-1.c
*** gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bswapg-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-1.c	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,153 ----
+ /* Test __builtin_bswapg.  */
+ /* { dg-do run { target { c || c++11 } } } */
+ /* { dg-options "-O2" } */
+ 
+ #if __CHAR_BIT__ == 8
+ #if __SIZEOF_INT__ == 4
+ static_assert (__builtin_bswapg (0x12345678U) == 0x78563412U, "");
+ #endif
+ #if __SIZEOF_LONG_LONG__ == 8
+ static_assert (__builtin_bswapg (0x123456789abcdef0ULL) == 0xf0debc9a78563412ULL, "");
+ #endif
+ static_assert (__builtin_bswapg ((unsigned char) 0x23) == (unsigned char) 0x23, "");
+ #if __SIZEOF_SHORT__ == 2
+ static_assert (__builtin_bswapg ((unsigned short) 0x2345) == (unsigned short) 0x4523, "");
+ #endif
+ #if __SIZEOF_INT128__ == 16
+ static_assert (__builtin_bswapg ((((unsigned __int128) 0x123456789abcdef0ULL) << 64)
+ 				 | 0x23456789abcdef01ULL)
+ 				 == ((((unsigned __int128) 0x01efcdab89674523ULL) << 64)
+ 				     | 0xf0debc9a78563412ULL), "");
+ #endif
+ #endif
+ #if __BITINT_MAXWIDTH__ >= 856
+ static_assert (__builtin_bswapg (0xabcdefuwb) == 0xefcdabuwb, "");
+ static_assert (__builtin_bswapg (0xabcdef8081uwb) == 0x8180efcdabuwb, "");
+ static_assert (__builtin_bswapg ((unsigned _BitInt(136)) 0x66b52574b5fd190b15a1b99858c27d0ac2uwb)
+ 	       == 0xc20a7dc25898b9a1150b19fdb57425b566uwb, "");
+ static_assert (__builtin_bswapg ((unsigned _BitInt(832)) 0x021256fc7a59ee4dab277edcadfdbfd45c0690f99249cf9e31ad0b16f91a0efb2d64f8a7bde6f4680d7244ba70038ecc091fc59c68943a994146b03a60be368d222e34e0142948229b8ddc0b906bd79a8a9c36f230708b71b63bac17f9e2a41c10d9fc240244469duwb)
+ 	       == 0x9d46440224fcd9101ca4e2f917ac3bb6718b7030f2369c8a9ad76b900bdc8d9b22482914e0342e228d36be603ab04641993a94689cc51f09cc8e0370ba44720d68f4e6bda7f8642dfb0e1af9160bad319ecf4992f990065cd4bffdaddc7e27ab4dee597afc561202uwb, "");
+ static_assert (__builtin_bswapg ((unsigned _BitInt(840)) 0x4c23edce0b5ffd538da2112c333d17f100a0db44f7c9cfb097538e995f3a5bab5d487969a776bc3518cd614b0a783d0b18184f10e11ec078714f11d0896c7be6b5f54f5c6b0c9184d9f3cfe46b0cef84243e94055d547dcea38f9f2cfb1a13b00f620d7b6e9eff4891uwb)
+ 	       == 0x9148ff9e6e7b0d620fb0131afb2c9f8fa3ce7d545d05943e2484ef0c6be4cff3d984910c6b5c4ff5b5e67b6c89d0114f7178c01ee1104f18180b3d780a4b61cd1835bc76a76979485dab5b3a5f998e5397b0cfc9f744dba000f1173d332c11a28d53fd5f0bceed234cuwb, "");
+ static_assert (__builtin_bswapg ((unsigned _BitInt(856)) 0x41c39e2f987be9c81688ecc08a4ded319e4010952ecb6e4ac738a6924d81668f4404bedd7fa7a5952f9156bade43eb7d83fb12b2c780fc8eb9a22006238695678a53440afbe99f2a7af5e45938cfd6bccbe86e92696a20220c41282fc7be965211db5c0cc4fb373ff11b98uwb)
+ 	       == 0x981bf13f37fbc40c5cdb115296bec72f28410c22206a69926ee8cbbcd6cf3859e4f57a2a9fe9fb0a44538a679586230620a2b98efc80c7b212fb837deb43deba56912f95a5a77fddbe04448f66814d92a638c74a6ecb2e9510409e31ed4d8ac0ec8816c8e97b982f9ec341uwb, "");
+ #endif
+ 
+ #if __CHAR_BIT__ == 8
+ #if __SIZEOF_INT__ == 4
+ [[gnu::noipa]] unsigned
+ bswap32 (unsigned x)
+ {
+   return __builtin_bswapg (x);
+ }
+ #endif
+ #if __SIZEOF_LONG_LONG__ == 8
+ [[gnu::noipa]] unsigned long long
+ bswap64 (unsigned long long x)
+ {
+   return __builtin_bswapg (x);
+ }
+ #endif
+ [[gnu::noipa]] unsigned char
+ bswap8 (unsigned char x)
+ {
+   return __builtin_bswapg (x);
+ }
+ #if __SIZEOF_SHORT__ == 2
+ [[gnu::noipa]] unsigned short
+ bswap16 (unsigned short x)
+ {
+   return __builtin_bswapg (x);
+ }
+ #endif
+ #if __SIZEOF_INT128__ == 16
+ [[gnu::noipa]] unsigned __int128
+ bswap128 (unsigned __int128 x)
+ {
+   return __builtin_bswapg (x);
+ }
+ #endif
+ #endif
+ #if __BITINT_MAXWIDTH__ >= 856
+ [[gnu::noipa]] unsigned _BitInt(24)
+ bswap24 (unsigned _BitInt(24) x)
+ {
+   return __builtin_bswapg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(40)
+ bswap40 (unsigned _BitInt(40) x)
+ {
+   return __builtin_bswapg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(136)
+ bswap136 (unsigned _BitInt(136) x)
+ {
+   return __builtin_bswapg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(832)
+ bswap832 (unsigned _BitInt(832) x)
+ {
+   return __builtin_bswapg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(840)
+ bswap840 (unsigned _BitInt(840) x)
+ {
+   return __builtin_bswapg (x);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(856)
+ bswap856 (unsigned _BitInt(856) x)
+ {
+   return __builtin_bswapg (x);
+ }
+ #endif
+ 
+ int
+ main ()
+ {
+ #if __CHAR_BIT__ == 8
+ #if __SIZEOF_INT__ == 4
+   if (bswap32 (0x12345678U) != 0x78563412U)
+     __builtin_abort ();
+ #endif
+ #if __SIZEOF_LONG_LONG__ == 8
+   if (bswap64 (0x123456789abcdef0ULL) != 0xf0debc9a78563412ULL)
+     __builtin_abort ();
+ #endif
+   if (bswap8 ((unsigned char) 0x23) != (unsigned char) 0x23)
+     __builtin_abort ();
+ #if __SIZEOF_SHORT__ == 2
+   if (bswap16 ((unsigned short) 0x2345) != (unsigned short) 0x4523)
+     __builtin_abort ();
+ #endif
+ #if __SIZEOF_INT128__ == 16
+   if (bswap128 ((((unsigned __int128) 0x123456789abcdef0ULL) << 64)
+ 		| 0x23456789abcdef01ULL)
+       != ((((unsigned __int128) 0x01efcdab89674523ULL) << 64)
+ 	  | 0xf0debc9a78563412ULL))
+     __builtin_abort ();
+ #endif
+ #endif
+ #if __BITINT_MAXWIDTH__ >= 856
+   if (bswap24 (0xabcdefuwb) != 0xefcdabuwb)
+     __builtin_abort ();
+   if (bswap40 (0xabcdef8081uwb) != 0x8180efcdabuwb)
+     __builtin_abort ();
+   if (bswap136 (0x66b52574b5fd190b15a1b99858c27d0ac2uwb)
+       != 0xc20a7dc25898b9a1150b19fdb57425b566uwb)
+     __builtin_abort ();
+   if (bswap832 (0x021256fc7a59ee4dab277edcadfdbfd45c0690f99249cf9e31ad0b16f91a0efb2d64f8a7bde6f4680d7244ba70038ecc091fc59c68943a994146b03a60be368d222e34e0142948229b8ddc0b906bd79a8a9c36f230708b71b63bac17f9e2a41c10d9fc240244469duwb)
+       != 0x9d46440224fcd9101ca4e2f917ac3bb6718b7030f2369c8a9ad76b900bdc8d9b22482914e0342e228d36be603ab04641993a94689cc51f09cc8e0370ba44720d68f4e6bda7f8642dfb0e1af9160bad319ecf4992f990065cd4bffdaddc7e27ab4dee597afc561202uwb)
+     __builtin_abort ();
+   if (bswap840 (0x4c23edce0b5ffd538da2112c333d17f100a0db44f7c9cfb097538e995f3a5bab5d487969a776bc3518cd614b0a783d0b18184f10e11ec078714f11d0896c7be6b5f54f5c6b0c9184d9f3cfe46b0cef84243e94055d547dcea38f9f2cfb1a13b00f620d7b6e9eff4891uwb)
+       != 0x9148ff9e6e7b0d620fb0131afb2c9f8fa3ce7d545d05943e2484ef0c6be4cff3d984910c6b5c4ff5b5e67b6c89d0114f7178c01ee1104f18180b3d780a4b61cd1835bc76a76979485dab5b3a5f998e5397b0cfc9f744dba000f1173d332c11a28d53fd5f0bceed234cuwb)
+     __builtin_abort ();
+   if (bswap856 (0x41c39e2f987be9c81688ecc08a4ded319e4010952ecb6e4ac738a6924d81668f4404bedd7fa7a5952f9156bade43eb7d83fb12b2c780fc8eb9a22006238695678a53440afbe99f2a7af5e45938cfd6bccbe86e92696a20220c41282fc7be965211db5c0cc4fb373ff11b98uwb)
+       != 0x981bf13f37fbc40c5cdb115296bec72f28410c22206a69926ee8cbbcd6cf3859e4f57a2a9fe9fb0a44538a679586230620a2b98efc80c7b212fb837deb43deba56912f95a5a77fddbe04448f66814d92a638c74a6ecb2e9510409e31ed4d8ac0ec8816c8e97b982f9ec341uwb)
+     __builtin_abort ();
+ #endif
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bswapg-2.c gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-2.c
*** gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bswapg-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-2.c	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,29 ----
+ /* Test __builtin_bswapg.  */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ int
+ main ()
+ {
+   __builtin_bswapg ();		/* { dg-error "wrong number of arguments to '__builtin_bswapg'" } */
+   __builtin_bswapg (1U, 1U);	/* { dg-error "wrong number of arguments to '__builtin_bswapg'" } */
+   __builtin_bswapg (1.0);	/* { dg-error "'__builtin_bswapg' operand not an integral type" } */
+   __builtin_bswapg (1.0f);	/* { dg-error "'__builtin_bswapg' operand not an integral type" } */
+   __builtin_bswapg (1.0L);	/* { dg-error "'__builtin_bswapg' operand not an integral type" } */
+   struct S { int a; };
+   __builtin_bswapg ((struct S) { 42 });	/* { dg-error "'__builtin_bswapg' operand not an integral type" } */
+   enum E { E0, E1 } e;
+   __builtin_bswapg (E1);	/* { dg-error "argument 1 in call to function '__builtin_bswapg' has signed type" "" { target c } } */
+ 				/* { dg-error "argument 1 in call to function '__builtin_bswapg' has enumerated type" "" { target c++ } .-1 } */
+   __builtin_bswapg (e);		/* { dg-error "argument 1 in call to function '__builtin_bswapg' has enumerated type" } */
+   __builtin_bswapg ((enum E) 1);/* { dg-error "argument 1 in call to function '__builtin_bswapg' has enumerated type" } */
+ #if !defined(__cplusplus) || __cplusplus >=  201103L
+   enum F : int { F0, F1 } f;
+   __builtin_bswapg (F1);	/* { dg-error "argument 1 in call to function '__builtin_bswapg' has enumerated type" "" { target { c || c++11 } } } */
+   __builtin_bswapg (f);		/* { dg-error "argument 1 in call to function '__builtin_bswapg' has enumerated type" "" { target { c || c++11 } } } */
+   __builtin_bswapg ((enum F) 1);/* { dg-error "argument 1 in call to function '__builtin_bswapg' has enumerated type" "" { target { c || c++11 } } } */
+ #endif
+   __builtin_bswapg (false);	/* { dg-error "argument 1 in call to function '__builtin_bswapg' has boolean type" } */
+   __builtin_bswapg (1);		/* { dg-error "argument 1 in call to function '__builtin_bswapg' has signed type" } */
+   __builtin_bswapg ((char) 1);	/* { dg-error "argument 1 in call to function '__builtin_bswapg' has signed type" "" { target { ! unsigned_char } } } */
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bswapg-3.c gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-3.c
*** gcc-17-20260531/gcc/testsuite/c-c++-common/builtin-bswapg-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/c-c++-common/builtin-bswapg-3.c	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,15 ----
+ /* Test __builtin_bswapg.  */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ int
+ main ()
+ {
+ #if __BITINT_MAXWIDTH__ >= 575
+   __builtin_bswapg (0x0uwb);	/* { dg-error "precision 1 of argument 1 to function '__builtin_bswapg' is not a multiple of 8" "" { target bitint575 } } */
+   __builtin_bswapg (0x3uwb);	/* { dg-error "precision 2 of argument 1 to function '__builtin_bswapg' is not a multiple of 8" "" { target bitint575 } } */
+   __builtin_bswapg (0x34938571398572uwb); /* { dg-error "precision 54 of argument 1 to function '__builtin_bswapg' is not a multiple of 8" "" { target bitint575 } } */
+   __builtin_bswapg (0x34938571398572abcd9837298dabef9187983uwb); /* { dg-error "precision 146 of argument 1 to function '__builtin_bswapg' is not a multiple of 8" "" { target bitint575 } } */
+   __builtin_bswapg (0x34938571398572abcd9837298dabef918798329387987abef98792837549857983745983475329847uwb); /* { dg-error "precision 322 of argument 1 to function '__builtin_bswapg' is not a multiple of 8" "" { target bitint575 } } */
+ #endif
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/c-c++-common/gomp/target-map-iterators-2.c gcc-17-20260607/gcc/testsuite/c-c++-common/gomp/target-map-iterators-2.c
*** gcc-17-20260531/gcc/testsuite/c-c++-common/gomp/target-map-iterators-2.c	Sun May 31 22:32:07 2026
--- gcc-17-20260607/gcc/testsuite/c-c++-common/gomp/target-map-iterators-2.c	Sun Jun  7 22:32:08 2026
***************
*** 3,20 ****
  
  void f (int *x, float *y, double *z)
  {
!   #pragma omp target map(iterator(i=0:10), to: x) /* { dg-warning "iterator variable 'i' not used in clause expression" } */
      /* Add a reference to x to ensure that the 'to' clause does not get
         dropped.  */
      x[0] = 0;
  
!   #pragma omp target map(iterator(i2=0:10, j2=0:20), from: x[i2]) /* { dg-warning "iterator variable 'j2' not used in clause expression" } */
      ;
  
    #pragma omp target map(iterator(i3=0:10, j3=0:20, k3=0:30), to: x[i3+j3], y[j3+k3], z[k3+i3])
-   /* { dg-warning "iterator variable 'i3' not used in clause expression" "" { target *-*-* } .-1 } */
-   /* { dg-warning "iterator variable 'j3' not used in clause expression" "" { target *-*-* } .-2 } */
-   /* { dg-warning "iterator variable 'k3' not used in clause expression" "" { target *-*-* } .-3 } */
      ;
  
    /* Test iterator with zero iterations.  */
--- 3,17 ----
  
  void f (int *x, float *y, double *z)
  {
!   #pragma omp target map(iterator(i=0:10), to: x)
      /* Add a reference to x to ensure that the 'to' clause does not get
         dropped.  */
      x[0] = 0;
  
!   #pragma omp target map(iterator(i2=0:10, j2=0:20), from: x[i2])
      ;
  
    #pragma omp target map(iterator(i3=0:10, j3=0:20, k3=0:30), to: x[i3+j3], y[j3+k3], z[k3+i3])
      ;
  
    /* Test iterator with zero iterations.  */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/c-c++-common/gomp/target-update-iterators-2.c gcc-17-20260607/gcc/testsuite/c-c++-common/gomp/target-update-iterators-2.c
*** gcc-17-20260531/gcc/testsuite/c-c++-common/gomp/target-update-iterators-2.c	Sun May 31 22:32:07 2026
--- gcc-17-20260607/gcc/testsuite/c-c++-common/gomp/target-update-iterators-2.c	Sun Jun  7 22:32:08 2026
***************
*** 3,18 ****
  
  void f (int *x, float *y, double *z)
  {
!   #pragma omp target update to(iterator(i=0:10): x) /* { dg-warning "iterator variable 'i' not used in clause expression" }*/
      ;
  
!   #pragma omp target update from(iterator(i2=0:10, j2=0:20): x[i2]) /* { dg-warning "iterator variable 'j2' not used in clause expression" }*/
      ;
  
    #pragma omp target update to(iterator(i3=0:10, j3=0:20, k3=0:30): x[i3+j3], y[j3+k3], z[k3+i3])
-   /* { dg-warning "iterator variable 'i3' not used in clause expression" "" { target *-*-* } .-1 } */
-   /* { dg-warning "iterator variable 'j3' not used in clause expression" "" { target *-*-* } .-2 } */
-   /* { dg-warning "iterator variable 'k3' not used in clause expression" "" { target *-*-* } .-3 } */
      ;
  }
  
--- 3,15 ----
  
  void f (int *x, float *y, double *z)
  {
!   #pragma omp target update to(iterator(i=0:10): x)
      ;
  
!   #pragma omp target update from(iterator(i2=0:10, j2=0:20): x[i2])
      ;
  
    #pragma omp target update to(iterator(i3=0:10, j3=0:20, k3=0:30): x[i3+j3], y[j3+k3], z[k3+i3])
      ;
  }
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/c-c++-common/pr111309-2.c gcc-17-20260607/gcc/testsuite/c-c++-common/pr111309-2.c
*** gcc-17-20260531/gcc/testsuite/c-c++-common/pr111309-2.c	Sun May 31 22:32:07 2026
--- gcc-17-20260607/gcc/testsuite/c-c++-common/pr111309-2.c	Sun Jun  7 22:32:08 2026
***************
*** 11,17 ****
  void
  foo (void)
  {
!   enum E { E0 = 0 };
    struct S { int s; } s;
    __builtin_clzg ();		/* { dg-error "too few arguments" } */
    __builtin_clzg (0U, 1, 2);	/* { dg-error "too many arguments" } */
--- 11,17 ----
  void
  foo (void)
  {
!   enum E { E0 = 0 } e;
    struct S { int s; } s;
    __builtin_clzg ();		/* { dg-error "too few arguments" } */
    __builtin_clzg (0U, 1, 2);	/* { dg-error "too many arguments" } */
*************** foo (void)
*** 21,32 ****
--- 21,36 ----
    __builtin_clzg (true);	/* { dg-error "has boolean type" } */
    __builtin_clzg (E0);		/* { dg-error "has signed type" "" { target c } } */
  				/* { dg-error "has enumerated type" "" { target c++ } .-1 } */
+   __builtin_clzg (e);		/* { dg-error "has enumerated type" } */
+   __builtin_clzg ((enum E) 0);	/* { dg-error "has enumerated type" } */
    __builtin_clzg (0, 0);	/* { dg-error "has signed type" } */
    __builtin_clzg (0.0, 0);	/* { dg-error "does not have integral type" } */
    __builtin_clzg (s, 0);	/* { dg-error "does not have integral type" } */
    __builtin_clzg (true, 0);	/* { dg-error "has boolean type" } */
    __builtin_clzg (E0, 0);	/* { dg-error "has signed type" "" { target c } } */
  				/* { dg-error "has enumerated type" "" { target c++ } .-1 } */
+   __builtin_clzg (e, 0);	/* { dg-error "has enumerated type" } */
+   __builtin_clzg ((enum E) 0, 0);/* { dg-error "has enumerated type" } */
    __builtin_clzg (0U, 2.0);	/* { dg-error "does not have integral type" } */
    __builtin_clzg (0U, s);	/* { dg-error "does not have integral type" } */
    __builtin_clzg (0U, 2LL);	/* { dg-error "does not have 'int' type" } */
*************** foo (void)
*** 41,52 ****
--- 45,60 ----
    __builtin_ctzg (true);	/* { dg-error "has boolean type" } */
    __builtin_ctzg (E0);		/* { dg-error "has signed type" "" { target c } } */
  				/* { dg-error "has enumerated type" "" { target c++ } .-1 } */
+   __builtin_ctzg (e);		/* { dg-error "has enumerated type" } */
+   __builtin_ctzg ((enum E) 0);	/* { dg-error "has enumerated type" } */
    __builtin_ctzg (0, 0);	/* { dg-error "has signed type" } */
    __builtin_ctzg (0.0, 0);	/* { dg-error "does not have integral type" } */
    __builtin_ctzg (s, 0);	/* { dg-error "does not have integral type" } */
    __builtin_ctzg (true, 0);	/* { dg-error "has boolean type" } */
    __builtin_ctzg (E0, 0);	/* { dg-error "has signed type" "" { target c } } */
  				/* { dg-error "has enumerated type" "" { target c++ } .-1 } */
+   __builtin_ctzg (e, 0);	/* { dg-error "has enumerated type" } */
+   __builtin_ctzg ((enum E) 0, 0);/* { dg-error "has enumerated type" } */
    __builtin_ctzg (0U, 2.0);	/* { dg-error "does not have integral type" } */
    __builtin_ctzg (0U, 2LL);	/* { dg-error "does not have 'int' type" } */
    __builtin_ctzg (0U, 2U);	/* { dg-error "does not have 'int' type" } */
*************** foo (void)
*** 59,64 ****
--- 67,74 ----
    __builtin_clrsbg (s);		/* { dg-error "does not have integral type" } */
    __builtin_clrsbg (true);	/* { dg-error "has boolean type" } */
    __builtin_clrsbg (E0);	/* { dg-error "has enumerated type" "" { target c++ } } */
+   __builtin_clrsbg (e);		/* { dg-error "has enumerated type" } */
+   __builtin_clrsbg ((enum E) 0);/* { dg-error "has enumerated type" } */
    __builtin_ffsg ();		/* { dg-error "too few arguments" } */
    __builtin_ffsg (0, 1);	/* { dg-error "too many arguments" } */
    __builtin_ffsg (0U);		/* { dg-error "has unsigned type" } */
*************** foo (void)
*** 66,71 ****
--- 76,83 ----
    __builtin_ffsg (s);		/* { dg-error "does not have integral type" } */
    __builtin_ffsg (true);	/* { dg-error "has boolean type" } */
    __builtin_ffsg (E0);		/* { dg-error "has enumerated type" "" { target c++ } } */
+   __builtin_ffsg (e);		/* { dg-error "has enumerated type" } */
+   __builtin_ffsg ((enum E) 0);	/* { dg-error "has enumerated type" } */
    __builtin_parityg ();		/* { dg-error "too few arguments" } */
    __builtin_parityg (0U, 1);	/* { dg-error "too many arguments" } */
    __builtin_parityg (0);	/* { dg-error "has signed type" } */
*************** foo (void)
*** 74,79 ****
--- 86,93 ----
    __builtin_parityg (true);	/* { dg-error "has boolean type" } */
    __builtin_parityg (E0);	/* { dg-error "has signed type" "" { target c } } */
  				/* { dg-error "has enumerated type" "" { target c++ } .-1 } */
+   __builtin_parityg (e);	/* { dg-error "has enumerated type" } */
+   __builtin_parityg ((enum E) 0);/* { dg-error "has enumerated type" } */
    __builtin_popcountg ();	/* { dg-error "too few arguments" } */
    __builtin_popcountg (0U, 1);	/* { dg-error "too many arguments" } */
    __builtin_popcountg (0);	/* { dg-error "has signed type" } */
*************** foo (void)
*** 82,85 ****
--- 96,101 ----
    __builtin_popcountg (true);	/* { dg-error "has boolean type" } */
    __builtin_popcountg (E0);	/* { dg-error "has signed type" "" { target c } } */
  				/* { dg-error "has enumerated type" "" { target c++ } .-1 } */
+   __builtin_popcountg (e);	/* { dg-error "has enumerated type" } */
+   __builtin_popcountg ((enum E) 0);/* { dg-error "has enumerated type" } */
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/c-c++-common/pr111309-3.c gcc-17-20260607/gcc/testsuite/c-c++-common/pr111309-3.c
*** gcc-17-20260531/gcc/testsuite/c-c++-common/pr111309-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/c-c++-common/pr111309-3.c	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,33 ----
+ /* PR c/111309 */
+ /* { dg-do compile { target { c || c++11 } } } */
+ /* { dg-additional-options "-std=c23" { target c } } */
+ 
+ void
+ foo (void)
+ {
+   enum E : int { E0 = 0 } e;
+   __builtin_clzg (E0);		/* { dg-error "has enumerated type" } */
+   __builtin_clzg (e);		/* { dg-error "has enumerated type" } */
+   __builtin_clzg ((enum E) 0);	/* { dg-error "has enumerated type" } */
+   __builtin_clzg (E0, 0);	/* { dg-error "has enumerated type" } */
+   __builtin_clzg (e, 0);	/* { dg-error "has enumerated type" } */
+   __builtin_clzg ((enum E) 0, 0);/* { dg-error "has enumerated type" } */
+   __builtin_ctzg (E0);		/* { dg-error "has enumerated type" } */
+   __builtin_ctzg (e);		/* { dg-error "has enumerated type" } */
+   __builtin_ctzg ((enum E) 0);	/* { dg-error "has enumerated type" } */
+   __builtin_ctzg (E0, 0);	/* { dg-error "has enumerated type" } */
+   __builtin_ctzg (e, 0);	/* { dg-error "has enumerated type" } */
+   __builtin_ctzg ((enum E) 0, 0);/* { dg-error "has enumerated type" } */
+   __builtin_clrsbg (E0);	/* { dg-error "has enumerated type" } */
+   __builtin_clrsbg (e);		/* { dg-error "has enumerated type" } */
+   __builtin_clrsbg ((enum E) 0);/* { dg-error "has enumerated type" } */
+   __builtin_ffsg (E0);		/* { dg-error "has enumerated type" } */
+   __builtin_ffsg (e);		/* { dg-error "has enumerated type" } */
+   __builtin_ffsg ((enum E) 0);	/* { dg-error "has enumerated type" } */
+   __builtin_parityg (E0);	/* { dg-error "has enumerated type" } */
+   __builtin_parityg (e);	/* { dg-error "has enumerated type" } */
+   __builtin_parityg ((enum E) 0);/* { dg-error "has enumerated type" } */
+   __builtin_popcountg (E0);	/* { dg-error "has enumerated type" } */
+   __builtin_popcountg (e);	/* { dg-error "has enumerated type" } */
+   __builtin_popcountg ((enum E) 0);/* { dg-error "has enumerated type" } */
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob gcc-17-20260607/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob
*** gcc-17-20260531/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.cob	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,45 ----
+        *> { dg-do run }
+        *> { dg-options "-dialect ibm" }
+        *> { dg-output-file "group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out" }
+       * gcobol bug reproducer: DISPLAY of a COMP-1 / COMP-2 (internal floating-point)
+       * item does not use the IBM external floating-point form.
+       *
+       * Per IBM Enterprise COBOL, DISPLAY of an internal floating-point item converts it
+       * to external floating-point: a COMP-1 displays "as if it had an external
+       * floating-point PICTURE clause of -.9(8)E-99", and a COMP-2 as -.9(17)E-99
+       * (Language Reference SC27-8713-04, "DISPLAY statement", p.340).  The value is shown as
+       *   <sign>.<mantissa>E<expsign><2-digit exponent>
+       * with the mantissa normalized to a leading non-zero digit, and the sign / exponent
+       * sign blank for non-negative.
+       *
+       * Observed (gcobol 15.2.0)        Expected (IBM LR external floating-point)
+       *   1.5                             " .15000000E 01"
+       *   0.1000000015                    " .10000000E 00"
+       *   -2.75                           "-.27500000E 01"
+       *   1500                            " .15000000E 04"
+       *   2.71828000000000003             " .27182800000000000E 01"
+       *
+       * gcobol prints the plain decimal value (with binary-float artifacts) instead of the
+       * documented external floating-point layout.  This reproduces with the default
+       * dialect and also with "-dialect ibm" specified explicitly:
+       *   gcobol -dialect ibm -o fltdisp float-display-not-external.cob && ./fltdisp
+       * produces the same (non-conforming) output.
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. FLTDISP.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        01  F1 COMP-1 VALUE 1.5.
+        01  F2 COMP-1 VALUE 0.1.
+        01  F3 COMP-1 VALUE -2.75.
+        01  F4 COMP-1 VALUE 1500.
+        01  D1 COMP-2 VALUE 2.71828.
+        01  D2 COMP-2 VALUE -.0000314159.
+        PROCEDURE DIVISION.
+            DISPLAY F1
+            DISPLAY F2
+            DISPLAY F3
+            DISPLAY F4
+            DISPLAY D1
+            DISPLAY D2
+            STOP RUN.
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out gcc-17-20260607/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out
*** gcc-17-20260531/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/cobol.dg/group2/DISPLAY_IBM-formatted_COMP-1_and_COMP-2.out	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,7 ----
+  .15000000E 01
+  .10000000E 00
+ -.27500000E 01
+  .15000000E 04
+  .27182800000000000E 01
+ -.31415900000000000E-04
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.cob gcc-17-20260607/gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.cob
*** gcc-17-20260531/gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.cob	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.cob	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,22 ----
+        *> { dg-do run }
+        *> { dg-output-file "group2/FUNCTION_TRIM_with_extra_characters.out" }
+         identification              division.
+         program-id.                 prog.
+         data                        division.
+         working-storage             section.
+         77 foo pic x(24).
+         77 b pic x value 'b'.
+         procedure                   division.
+             move '  """000Bobaaabbbccc     ' to foo
+             display ''''
+                  function trim(foo space quote zero 'c' b 'a')
+                     ''''
+             display ''''
+                  function trim(foo leading space quote zero 'c' b 'a')
+                     ''''
+             display ''''
+                  function trim(foo trailing space quote zero 'c' b 'a')
+                     ''''
+             goback.
+         end program                 prog.
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.out gcc-17-20260607/gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.out
*** gcc-17-20260531/gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.out	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/cobol.dg/group2/FUNCTION_TRIM_with_extra_characters.out	Sun Jun  7 22:32:08 2026
***************
*** 0 ****
--- 1,4 ----
+ 'Bob'
+ 'Bobaaabbbccc    '
+ '  """000Bob'
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/cobol.dg/group2/cbltypes.cpy gcc-17-20260607/gcc/testsuite/cobol.dg/group2/cbltypes.cpy
*** gcc-17-20260531/gcc/testsuite/cobol.dg/group2/cbltypes.cpy	Sun May 31 22:32:07 2026
--- gcc-17-20260607/gcc/testsuite/cobol.dg/group2/cbltypes.cpy	Thu Jan  1 00:00:00 1970
***************
*** 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
--- 0 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/asan/deep-thread-stack-1.C gcc-17-20260607/gcc/testsuite/g++.dg/asan/deep-thread-stack-1.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/asan/deep-thread-stack-1.C	Sun May 31 22:32:07 2026
--- gcc-17-20260607/gcc/testsuite/g++.dg/asan/deep-thread-stack-1.C	Sun Jun  7 22:32:08 2026
***************
*** 1,5 ****
  // { dg-do run { target pthread } }
! // { dg-options "-lasan -lpthread" }
  // { dg-shouldfail "asan" }
  
  #include <pthread.h>
--- 1,5 ----
  // { dg-do run { target pthread } }
! // { dg-options "-lasan -lpthread" { target { ! *-*-darwin* } } }
  // { dg-shouldfail "asan" }
  
  #include <pthread.h>
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/cpp1y/var-templ90.C gcc-17-20260607/gcc/testsuite/g++.dg/cpp1y/var-templ90.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/cpp1y/var-templ90.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/cpp1y/var-templ90.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,53 ----
+ // PR c++/125575
+ // { dg-do compile { target c++14 } }
+ 
+ template<typename T>
+ constexpr T v1 = 42;
+ template const int v1<int>;
+ 
+ template<typename T>
+ constexpr T v2 = 42;
+ template int v2<int>; // { dg-error "type .int. for explicit instantiation .v2. does not match declared type .const int." }
+ 
+ template<typename T>
+ constexpr T v3 = 42;
+ template int *v3<int>; // { dg-error "type .int\\*. for explicit instantiation .v3. does not match declared type .const int." }
+ 
+ template<typename T>
+ constexpr const T *const *v4 = nullptr;
+ template int *const *v4<int>; // { dg-error "type .int\\* const\\*. for explicit instantiation .v4. does not match declared type .const int\\* const\\* const." }
+ 
+ template<typename T>
+ constexpr T v5 = 42;
+ template float v5<int>; // { dg-error "type .float. for explicit instantiation .v5. does not match declared type .const int." }
+ 
+ template<typename T>
+ T v6 = 42;
+ template volatile int v6<int>; // { dg-error "type .volatile int. for explicit instantiation .v6. does not match declared type .int." }
+ 
+ template<typename>
+ constexpr auto v7 = 42;
+ template int v7<int>; // { dg-error "type .int. for explicit instantiation .v7. does not match declared type .const int." }
+ 
+ template<typename>
+ auto v8 = 42;
+ template const int v8<int>; // { dg-error "type .const int. for explicit instantiation .v8. does not match declared type .int." }
+ 
+ template<typename T>
+ T v9{};
+ template int v9<int[10]>[5]; // { dg-error "type .int \\\[5\\\]. for explicit instantiation .v9. does not match declared type .int \\\[10\\\]." }
+ 
+ template<typename T>
+ T v10{};
+ template int v10<int[10]>[10];
+ 
+ template<typename T>
+ T v11{};
+ template int v11<int[10][10]>[10][10];
+ 
+ template<typename T>
+ T v12{};
+ template int v12<int[10][10]>[][10];
+ 
+ template<typename T> int arr[sizeof(T)] = {};
+ template int arr<int>[];
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/cpp1y/var-templ91.C gcc-17-20260607/gcc/testsuite/g++.dg/cpp1y/var-templ91.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/cpp1y/var-templ91.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/cpp1y/var-templ91.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/125575
+ // CWG 1704, Type checking in explicit instantiation of variable templates
+ // { dg-do compile { target c++14 } }
+ // Test from [temp.explicit].
+ 
+ template<typename T> T var = {};
+ template float var<float>;      // OK, instantiated variable has type float
+ template int var<int[16]>[];    // OK, absence of major array bound is permitted
+ template int *var<int>;         // error: instantiated variable has type int
+ // { dg-error "type .int\\*. for explicit instantiation .var. does not match declared type .int." "" { target *-*-* } .-1 }
+ 
+ template<typename T> auto av = T();
+ template int av<int>;           // OK, variable with type auto can be redeclared with type int
+ 
+ template<typename T> auto f() {}
+ template void f<int>();         // error: function with deduced return type
+                                 // redeclared with non-deduced return type ([dcl.spec.auto])
+ // { dg-error "does not match any template declaration" "" { target *-*-* } .-2 }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/cpp1y/var-templ92.C gcc-17-20260607/gcc/testsuite/g++.dg/cpp1y/var-templ92.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/cpp1y/var-templ92.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/cpp1y/var-templ92.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/98524
+ // { dg-do compile { target c++14 } }
+ 
+ template<typename T> void (*f1)();
+ template void (*f1<int>)(int); // { dg-error "type .void \\(\\*\\)\\(int\\). for explicit instantiation .f1. does not match declared type .void \\(\\*\\)\\(\\)." }
+ 
+ template<typename T> void (*f2)(int) noexcept;
+ template void (*f2<int>)(int);  // { dg-error "type .void \\(\\*\\)\\(int\\). for explicit instantiation .f2. does not match declared type .void \\(\\*\\)\\(int\\) noexcept." "" { target c++17 } }
+ 
+ template<typename T> void (*f3)(int) ;
+ template void (*f3<int>)(int) noexcept; // { dg-error "type .void \\(\\*\\)\\(int\\) noexcept. for explicit instantiation .f3. does not match declared type .void \\(\\*\\)\\(int\\)." "" { target c++17 } }
+ 
+ template<typename T> void (*f4)(int) noexcept;
+ template void (*f4<int>)(int) noexcept;
+ 
+ template<typename T> void (*f5)(int);
+ template void (*f5<int>)(int);
+ 
+ template<typename T> void (*f6)(int);
+ template int (*f6<int>)(int); // { dg-error "type .int \\(\\*\\)\\(int\\). for explicit instantiation .f6. does not match declared type .void \\(\\*\\)\\(int\\)." }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/cpp1y/var-templ93.C gcc-17-20260607/gcc/testsuite/g++.dg/cpp1y/var-templ93.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/cpp1y/var-templ93.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/cpp1y/var-templ93.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/125575
+ // CWG 1728, Type of an explicit instantiation of a variable template
+ // { dg-do compile { target c++14 } }
+ 
+ template<typename T> T var = T();
+ template float var<float>;
+ template int* var<int>;	  // { dg-error "type .int\\*. for explicit instantiation .var. does not match declared type .int." }
+ template auto var<char>;  // { dg-error "has no initializer" }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/cpp2a/concepts-pr125490.C gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/concepts-pr125490.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/cpp2a/concepts-pr125490.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/concepts-pr125490.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/125490
+ // { dg-do compile { target c++20 } }
+ 
+ void f();
+ 
+ template<class T>
+ concept C = f() == 42; // { dg-error "invalid operands" }
+ 
+ template<class T>
+ concept D = requires { requires f() == 42; }; // { dg-error "invalid operands" }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/cpp2a/concepts-pr125490a.C gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/concepts-pr125490a.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/cpp2a/concepts-pr125490a.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/concepts-pr125490a.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/125490
+ // { dg-do compile { target c++20 } }
+ 
+ namespace N {
+   struct A { };
+ }
+ 
+ constexpr bool operator==(N::A, auto) { return true; } // #1
+ 
+ template<class T>
+ concept C = T{} == T{};
+ 
+ constexpr bool operator==(N::A, N::A) { return false; } // #2
+ 
+ static_assert(C<N::A>); // must only consider #1
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/cpp2a/concepts-requires42.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,4 ----
+ // PR c++/125317
+ // { dg-do compile { target c++20 } }
+ 
+ template<bool = requires { 0 > 0; }> int x;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/lookup/operator-8b.C gcc-17-20260607/gcc/testsuite/g++.dg/lookup/operator-8b.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/lookup/operator-8b.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/lookup/operator-8b.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,40 ----
+ // PR c++/125378
+ // A version of operator-8a.C where the operator<=> returns char instead of int.
+ 
+ // { dg-do compile { target c++20 } }
+ 
+ struct A {
+   bool operator==(int);
+   char operator<=>(int);
+ };
+ 
+ template<class T>
+ void f() {
+   A a;
+   (void)(a != 0);
+   (void)(0 != a);
+   (void)(a < 0);
+   (void)(0 < a);
+   (void)(a <= 0);
+   (void)(0 <= a);
+   (void)(a > 0);
+   (void)(0 > a);
+   (void)(a >= 0);
+   (void)(0 >= a);
+ }
+ 
+ // These later-declared namespace-scope overloads shouldn't be considered
+ // when instantiating f<int>.
+ bool operator!=(A, int) = delete;
+ bool operator<(A, int) = delete;
+ bool operator<=(A, int) = delete;
+ bool operator>(A, int) = delete;
+ bool operator>=(A, int) = delete;
+ 
+ bool operator!=(int, A) = delete;
+ bool operator<(int, A) = delete;
+ bool operator<=(int, A) = delete;
+ bool operator>(int, A) = delete;
+ bool operator>=(int, A) = delete;
+ 
+ template void f<int>();
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/lookup/operator-8c.C gcc-17-20260607/gcc/testsuite/g++.dg/lookup/operator-8c.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/lookup/operator-8c.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/lookup/operator-8c.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,40 ----
+ // PR c++/125378
+ // A version of operator-8a.C where the operator<=> returns long instead of int.
+ 
+ // { dg-do compile { target c++20 } }
+ 
+ struct A {
+   bool operator==(int);
+   long operator<=>(int);
+ };
+ 
+ template<class T>
+ void f() {
+   A a;
+   (void)(a != 0);
+   (void)(0 != a);
+   (void)(a < 0);
+   (void)(0 < a);
+   (void)(a <= 0);
+   (void)(0 <= a);
+   (void)(a > 0);
+   (void)(0 > a);
+   (void)(a >= 0);
+   (void)(0 >= a);
+ }
+ 
+ // These later-declared namespace-scope overloads shouldn't be considered
+ // when instantiating f<int>.
+ bool operator!=(A, int) = delete;
+ bool operator<(A, int) = delete;
+ bool operator<=(A, int) = delete;
+ bool operator>(A, int) = delete;
+ bool operator>=(A, int) = delete;
+ 
+ bool operator!=(int, A) = delete;
+ bool operator<(int, A) = delete;
+ bool operator<=(int, A) = delete;
+ bool operator>(int, A) = delete;
+ bool operator>=(int, A) = delete;
+ 
+ template void f<int>();
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/lookup/operator-9a.C gcc-17-20260607/gcc/testsuite/g++.dg/lookup/operator-9a.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/lookup/operator-9a.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/lookup/operator-9a.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/125378
+ // A version of operator-9.C where the operator<=> returns char instead of int.
+ 
+ // { dg-do compile { target c++20 } }
+ 
+ #include <compare>
+ 
+ struct A {
+   bool operator==(int);
+   char operator<=>(int);
+ };
+ 
+ template<class T>
+ void f() {
+   A a;
+   (void)(0 <=> a);
+ }
+ 
+ template void f<int>();
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/lookup/operator-9b.C gcc-17-20260607/gcc/testsuite/g++.dg/lookup/operator-9b.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/lookup/operator-9b.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/lookup/operator-9b.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/125378
+ // A version of operator-9.C where the operator<=> returns long instead of int.
+ 
+ // { dg-do compile { target c++20 } }
+ 
+ #include <compare>
+ 
+ struct A {
+   bool operator==(int);
+   long operator<=>(int);
+ };
+ 
+ template<class T>
+ void f() {
+   A a;
+   (void)(0 <=> a);
+ }
+ 
+ template void f<int>();
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-1_a.C gcc-17-20260607/gcc/testsuite/g++.dg/modules/pr120458-1_a.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-1_a.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.dg/modules/pr120458-1_a.C	Sun Jun  7 22:32:09 2026
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-module-do link }
  // { dg-additional-options "-fmodules -finput-charset=UTF-8" }
+ // { dg-skip-if "" { ! ucn } }
  
  export module 영혼;
  // { dg-module-cmi }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-2_a.C gcc-17-20260607/gcc/testsuite/g++.dg/modules/pr120458-2_a.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/modules/pr120458-2_a.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.dg/modules/pr120458-2_a.C	Sun Jun  7 22:32:09 2026
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-module-do link }
  // { dg-additional-options "-fmodules -fmodule-mapper=[srcdir]/pr120458-2.map " }
  // { dg-additional-options "-finput-charset=UTF-8 " }
+ // { dg-skip-if "" { ! ucn } }
  // { dg-additional-files "pr120458-2.map" }
  
  export module 灵魂;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C gcc-17-20260607/gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.dg/opt/shrink-wrapping-vector-1.C	Sun Jun  7 22:32:09 2026
*************** void push_back(std::vector<int>& xs, uns
*** 14,17 ****
      xs.push_back(x);
  }
  
! /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue" } } */
--- 14,17 ----
      xs.push_back(x);
  }
  
! /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue" { xfail c++17_down } } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/reflect/member19.C gcc-17-20260607/gcc/testsuite/g++.dg/reflect/member19.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/reflect/member19.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.dg/reflect/member19.C	Sun Jun  7 22:32:09 2026
*************** baz ()
*** 92,119 ****
    static_assert (s.a <43> == 43);
    static_assert (s.template [:members_of (^^A, uctx)[0]:] <44> == 44);
    static_assert (s.template [:members_of (^^A, uctx)[0]:] <45> == 45);
- #if 0
-   // TODO: This doesn't work yet.
    static_assert (s.template [:^^A::a:] <44> == 44);
    static_assert (s.template [:^^A::a:] <45> == 45);
- #endif
    constexpr T t;
    static_assert (t.a <42> == 142);
    static_assert (t.a <43> == 143);
    static_assert (t.template [:members_of (^^A, uctx)[0]:] <44> == 44);
    static_assert (t.template [:members_of (^^A, uctx)[0]:] <45> == 45);
- #if 0
-   // TODO: This doesn't work yet.
    static_assert (t.template [:^^A::a:] <44> == 44);
    static_assert (t.template [:^^A::a:] <45> == 45);
- #endif
    static_assert (t.template [:members_of (^^B, uctx)[0]:] <44> == 144);
    static_assert (t.template [:members_of (^^B, uctx)[0]:] <45> == 145);
- #if 0
-   // TODO: This doesn't work yet.
    static_assert (t.template [:^^B::a:] <44> == 144);
    static_assert (t.template [:^^B::a:] <45> == 145);
- #endif
  }
  
  template <typename A, typename B>
--- 92,110 ----
*************** qux ()
*** 125,152 ****
    static_assert (s.template a <43> == 43);
    static_assert (s.template [:members_of (^^A, uctx)[0]:] <44> == 44);
    static_assert (s.template [:members_of (^^A, uctx)[0]:] <45> == 45);
- #if 0
-   // TODO: This doesn't work yet.
    static_assert (s.template [:^^A::a:] <44> == 44);
    static_assert (s.template [:^^A::a:] <45> == 45);
- #endif
    constexpr B t;
    static_assert (t.template a <42> == 142);
    static_assert (t.template a <43> == 143);
    static_assert (t.template [:members_of (^^A, uctx)[0]:] <44> == 44);
    static_assert (t.template [:members_of (^^A, uctx)[0]:] <45> == 45);
- #if 0
-   // TODO: This doesn't work yet.
    static_assert (t.template [:^^A::a:] <44> == 44);
    static_assert (t.template [:^^A::a:] <45> == 45);
- #endif
    static_assert (t.template [:members_of (^^B, uctx)[0]:] <44> == 144);
    static_assert (t.template [:members_of (^^B, uctx)[0]:] <45> == 145);
- #if 0
-   // TODO: This doesn't work yet.
    static_assert (t.template [:^^B::a:] <44> == 144);
    static_assert (t.template [:^^B::a:] <45> == 145);
- #endif
  }
  
  void
--- 116,134 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/reflect/splice15.C gcc-17-20260607/gcc/testsuite/g++.dg/reflect/splice15.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/reflect/splice15.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/reflect/splice15.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,70 ----
+ // PR c++/124794
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection -Wno-error=missing-template-keyword" }
+ 
+ struct C{
+   template <class T> void f(T);
+   void g(int);
+ };
+ 
+ void (C::*p0)(int) = &template[:^^C::f:]<int>;
+ void (C::*p1)(int) = template[:^^C::f:]<int>; // { dg-error "cannot implicitly reference a class member" }
+ void (C::*p2)(int) = &template[:^^C::f:];
+ void (C::*p3)(int) = template[:^^C::f:]; // { dg-error "cannot implicitly reference a class member" }
+ void (C::*p4)(int) = &[:^^C::f:]<int>; // { dg-warning "keyword before dependent template name" }
+ void (C::*p5)(int) = [:^^C::f:]<int>; // { dg-error "cannot implicitly reference a class member" }
+ void (C::*p6)(int) = &[:^^C::f:]; // { dg-warning "keyword before dependent template name" }
+ void (C::*p7)(int) = [:^^C::f:]; // { dg-error "cannot implicitly reference a class member" }
+ 
+ template <auto r> void (C::*tp0)(int) = &template[:r:]<int>;
+ template <auto r> void (C::*tp1)(int) = template[:r:]<int>; // { dg-error "cannot implicitly reference a class member" }
+ template <auto r> void (C::*tp2)(int) = &template[:r:];
+ template <auto r> void (C::*tp3)(int) = template[:r:]; // { dg-error "cannot implicitly reference a class member" }
+ /* tp4 and tp5 intentionally omitted as they are not applicable in a template context */
+ template <auto r> void (C::*tp6)(int) = &[:r:];
+ template <auto r> void (C::*tp7)(int) = [:r:]; // { dg-error "cannot implicitly reference a class member" }
+ template <auto r> void (C::*tp0n)(int) = &template[:r:]<int>; // { dg-error "no matches converting function" }
+ template <auto r> void (C::*tp1n)(int) = template[:r:]<int>; // { dg-error "cannot implicitly reference a class member" }
+ template <auto r> void (C::*tp2n)(int) = &template[:r:]; // { dg-error "expected a reflection of a function template" }
+ template <auto r> void (C::*tp3n)(int) = template[:r:]; // { dg-error "cannot implicitly reference a class member" }
+ /* tp4u and tp5u intentionally omitted as they are not applicable in a template context */
+ template <auto r> void (C::*tp6n)(int) = &[:r:];
+ template <auto r> void (C::*tp7n)(int) = [:r:]; // { dg-error "cannot implicitly reference a class member" }
+ 
+ static_assert((
+     tp0<^^C::f>,
+     tp1<^^C::f>,
+     tp2<^^C::f>,
+     tp3<^^C::f>,
+     tp6<^^C::f>,
+     tp7<^^C::f>,
+     tp0n<^^C::g>,
+     tp1n<^^C::g>,
+     tp2n<^^C::g>,
+     tp3n<^^C::g>,
+     tp6n<^^C::g>,
+     tp7n<^^C::g>,
+     true));
+ 
+ struct Base1{
+   template<class T>
+   constexpr T f(T x) {
+     return x;
+   }
+ };
+ struct Base2: Base1 {
+   template<class T>
+   constexpr T g(T x) {
+     return x;
+   }
+ };
+ struct Base3: Base1, Base2 {}; // { dg-warning "inaccessible" }
+ 
+ static_assert(Base1{}.[:^^Base1::f:](4) == 4); // { dg-warning "keyword before dependent template name" }
+ static_assert(Base1{}.[:^^Base1::f:]<int>(13) == 13); // { dg-warning "keyword before dependent template name" }
+ static_assert(Base3{}.[:^^Base2::g:](42) == 42); // { dg-warning "keyword before dependent template name" }
+ static_assert(Base3{}.[:^^Base2::g:]<int>(67) == 67); // { dg-warning "keyword before dependent template name" }
+ constexpr int invalid1 = Base3{}.[:^^Base2::f:]; // { dg-error "cannot resolve overloaded function" }
+ // { dg-warning "keyword before dependent template name" "" { target *-*-* } .-1 }
+ constexpr int invalid2 = Base3{}.[:^^Base1::f:]; // { dg-error "cannot resolve overloaded function" }
+ // { dg-warning "keyword before dependent template name" "" { target *-*-* } .-1 }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/reflect/splice16.C gcc-17-20260607/gcc/testsuite/g++.dg/reflect/splice16.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/reflect/splice16.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/reflect/splice16.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,34 ----
+ // PR c++/125069
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection -Wno-error=missing-template-keyword" }
+ 
+ #include <meta>
+ struct x{ x(auto); };
+ 
+ constexpr auto ac = std::meta::access_context::unchecked();
+ 
+ template<auto r>
+ constexpr auto t = (
+   [:r:],  // { dg-error "cannot use constructor or destructor" }
+   &[:r:],  // { dg-error "cannot use constructor or destructor" }
+   template [:r:], // { dg-error "cannot use constructor or destructor" }
+   &template [:r:], // { dg-error "cannot use constructor or destructor" }
+   template [:r:]<int>, // { dg-error "cannot use constructor or destructor" }
+   &template [:r:]<int>, // { dg-error "cannot use constructor or destructor" }
+   1);
+ 
+ 
+ int main() {
+   constexpr auto r = members_of(^^x, ac)[0];
+ 
+   t<r>;
+ 
+   [:r:];  // { dg-error "cannot use constructor or destructor" }
+   &[:r:];  // { dg-error "cannot use constructor or destructor" }
+   [:r:]<int>; // { dg-error "cannot use constructor or destructor" }
+   &[:r:]<int>; // { dg-error "cannot use constructor or destructor" }
+   template [:r:]; // { dg-error "cannot use constructor or destructor" }
+   &template [:r:]; // { dg-error "cannot use constructor or destructor" }
+   template [:r:]<int>; // { dg-error "cannot use constructor or destructor" }
+   &template [:r:]<int>; // { dg-error "cannot use constructor or destructor" }
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/template/deduce11.C gcc-17-20260607/gcc/testsuite/g++.dg/template/deduce11.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/template/deduce11.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/template/deduce11.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/107124
+ // { dg-do compile { target c++11 } }
+ 
+ template<int>
+ struct A {};
+ 
+ template<const int &I>
+ constexpr int f (A<I>) { return 0; }
+ 
+ template<typename T>
+ constexpr int f (T) { return 1; }
+ 
+ const int a = 42;
+ static_assert (f (A<0>{}) == 1, "");
+ static_assert (f (A<a>{}) == 1, "");
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/template/deduce12.C gcc-17-20260607/gcc/testsuite/g++.dg/template/deduce12.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/template/deduce12.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/template/deduce12.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/107124
+ // { dg-do compile { target c++11 } }
+ 
+ template<int>
+ struct A {};
+ 
+ template<const int &I>
+ constexpr int f (A<I>) { return 0; }
+ 
+ constexpr int i = f (A<0>{}); // { dg-error "no matching function for call" }
+ // { dg-message "(candidate|does not bind directly|could not convert)" "candidate note" { target c++17 } .-1 }
+ // { dg-message "(candidate|not a valid template argument)" "candidate note" { target c++14_down } .-2 }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/torture/pr125599.C gcc-17-20260607/gcc/testsuite/g++.dg/torture/pr125599.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/torture/pr125599.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/torture/pr125599.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-additional-options "-w" } */
+ 
+ double tetallnormal_A[1][4];
+ struct tetgenmesh {
+   bool lu_decmp(double[][4], int *, double *, int);
+   void tetallnormal();
+ };
+ int lu_decmp_n;
+ bool tetgenmesh::lu_decmp(double[][4], int *, double *d, int) {
+   double biggest, pivotindex, k;
+   *d = 1.0;
+   for (; lu_decmp_n; k++)
+     if (biggest == pivotindex != k)
+       *d = -*d;
+ }
+ void tetgenmesh::tetallnormal() {
+   double D;
+   int indx[](lu_decmp(tetallnormal_A, indx, &D, 0));
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.dg/warn/Wduplicated-branches10.C gcc-17-20260607/gcc/testsuite/g++.dg/warn/Wduplicated-branches10.C
*** gcc-17-20260531/gcc/testsuite/g++.dg/warn/Wduplicated-branches10.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/g++.dg/warn/Wduplicated-branches10.C	Sun Jun  7 22:32:09 2026
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/125422
+ // { dg-do compile }
+ // { dg-options "-Wduplicated-branches" }
+ 
+ // new (nothrow) T[n] with a runtime variable must not trigger
+ // -Wduplicated-branches (false positive from compiler-generated COND_EXPR).
+ 
+ #include <new>
+ 
+ void
+ test_nothrow (int sz)
+ {
+   char *p = new (std::nothrow) char[sz];
+   delete[] p;
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.target/i386/cf_check-3.C gcc-17-20260607/gcc/testsuite/g++.target/i386/cf_check-3.C
*** gcc-17-20260531/gcc/testsuite/g++.target/i386/cf_check-3.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.target/i386/cf_check-3.C	Sun Jun  7 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { "i?86-*-* x86_64-*-*" } } } */
  /* { dg-options "-O2 -fcf-protection" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.target/i386/cf_check-4.C gcc-17-20260607/gcc/testsuite/g++.target/i386/cf_check-4.C
*** gcc-17-20260531/gcc/testsuite/g++.target/i386/cf_check-4.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.target/i386/cf_check-4.C	Sun Jun  7 22:32:10 2026
***************
*** 1,7 ****
  /* { dg-do compile { target { "i?86-*-* x86_64-*-*" } } } */
  /* { dg-require-weak "" } */
  /* { dg-options "-O2 -fcf-protection" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr101366-1.C gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr101366-1.C
*** gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr101366-1.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr101366-1.C	Sun Jun  7 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=x86-64-v2 -std=gnu++17" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr101366-2.C gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr101366-2.C
*** gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr101366-2.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr101366-2.C	Sun Jun  7 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=x86-64-v2 -std=gnu++17" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr108585-1a.C gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr108585-1a.C
*** gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr108585-1a.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr108585-1a.C	Sun Jun  7 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=x86-64 -std=c++20 -mno-stackrealign -fomit-frame-pointer -DUSE_CHAR -fno-stack-protector -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr108585-1b.C gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr108585-1b.C
*** gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr108585-1b.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr108585-1b.C	Sun Jun  7 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=x86-64 -std=c++20 -mno-stackrealign -fomit-frame-pointer -fno-stack-protector -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr118276-1a.C gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr118276-1a.C
*** gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr118276-1a.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr118276-1a.C	Sun Jun  7 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=x86-64 -std=c++17 -DMODE=0" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr118276-1b.C gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr118276-1b.C
*** gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr118276-1b.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr118276-1b.C	Sun Jun  7 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=x86-64 -std=c++17 -DMODE=1" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr118276-1c.C gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr118276-1c.C
*** gcc-17-20260531/gcc/testsuite/g++.target/i386/memset-pr118276-1c.C	Sun May 31 22:32:08 2026
--- gcc-17-20260607/gcc/testsuite/g++.target/i386/memset-pr118276-1c.C	Sun Jun  7 22:32:10 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=x86-64 -std=c++17 -DMODE=2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/Wnested-externs-1.c gcc-17-20260607/gcc/testsuite/gcc.dg/Wnested-externs-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/Wnested-externs-1.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/Wnested-externs-1.c	Sun Jun  7 22:32:10 2026
***************
*** 2,7 ****
--- 2,8 ----
  /* Origin: Joseph Myers <joseph@codesourcery.com> */
  /* { dg-do compile } */
  /* { dg-options "-Wnested-externs" } */
+ /* { dg-additional-options "-mstack-protector-guard=global" { target x86_64-*-* i?86-*-* } } */
  
  int a;
  static int b;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c gcc-17-20260607/gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/analyzer/mkdtemp-1.c	Sun Jun  7 22:32:10 2026
***************
*** 2,7 ****
--- 2,8 ----
  
  #include <stdio.h>
  #include <stdlib.h>
+ #include <unistd.h>
  #include <errno.h>
  #include "analyzer-decls.h"
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c gcc-17-20260607/gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/analyzer/mkstemps-1.c	Sun Jun  7 22:32:10 2026
***************
*** 3,8 ****
--- 3,9 ----
  
  #include <stdio.h>
  #include <stdlib.h>
+ #include <unistd.h>
  
  extern void populate (char *buf);
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/analyzer/mktemp-1.c gcc-17-20260607/gcc/testsuite/gcc.dg/analyzer/mktemp-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/analyzer/mktemp-1.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/analyzer/mktemp-1.c	Sun Jun  7 22:32:10 2026
***************
*** 3,9 ****
  /* TODO: mktemp is deprecated per MSC24-C
     (https://wiki.sei.cmu.edu/confluence/x/hNYxBQ).
     Once a warning for deprecated functions exists, mktemp should
!    also warn about its use.  */
  
  #include <stdio.h>
  #include <stdlib.h>
--- 3,9 ----
  /* TODO: mktemp is deprecated per MSC24-C
     (https://wiki.sei.cmu.edu/confluence/x/hNYxBQ).
     Once a warning for deprecated functions exists, mktemp should
!    also warn about its use.  Later versions of Darwin do warn here.  */
  
  #include <stdio.h>
  #include <stdlib.h>
*************** extern void populate (char *buf);
*** 15,54 ****
  void test_passthrough (char *s)
  {
    mktemp (s);
  }
  
  void test_string_literal_correct_placeholder (void)
  {
    mktemp ("/home/user/sessXXXXXX"); /* { dg-warning "'mktemp' on a string literal \\\[STR30-C\\\]" } */
!   /* { dg-message "use a writable character array" "fix suggestion" { target *-*-* } .-1 } */
  }
  
  void test_string_literal_missing_placeholder (void)
  {
    mktemp ("/home/user/sess"); /* { dg-warning "'mktemp' on a string literal \\\[STR30-C\\\]" } */
  }
  
  void test_string_literal_empty (void)
  {
    mktemp (""); /* { dg-warning "'mktemp' on a string literal \\\[STR30-C\\\]" } */
  }
  
  void test_correct (void)
  {
    char tmpl[] = "/var/run/sock.XXXXXX";
    mktemp (tmpl);
  }
  
  void test_correct_minimal (void)
  {
    char tmpl[] = "XXXXXX";
    mktemp (tmpl);
  }
  
  void test_correct_offset_into_buffer (void)
  {
    char buf[] = "////XXXXXX";
    mktemp (buf + 4);
  }
  
  void test_missing_placeholder_offset_into_buffer (void)
--- 15,61 ----
  void test_passthrough (char *s)
  {
    mktemp (s);
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_string_literal_correct_placeholder (void)
  {
    mktemp ("/home/user/sessXXXXXX"); /* { dg-warning "'mktemp' on a string literal \\\[STR30-C\\\]" } */
!   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
!   /* { dg-message "use a writable character array" "fix suggestion" { target *-*-* } .-2 } */
  }
  
  void test_string_literal_missing_placeholder (void)
  {
    mktemp ("/home/user/sess"); /* { dg-warning "'mktemp' on a string literal \\\[STR30-C\\\]" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_string_literal_empty (void)
  {
    mktemp (""); /* { dg-warning "'mktemp' on a string literal \\\[STR30-C\\\]" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_correct (void)
  {
    char tmpl[] = "/var/run/sock.XXXXXX";
    mktemp (tmpl);
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_correct_minimal (void)
  {
    char tmpl[] = "XXXXXX";
    mktemp (tmpl);
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_correct_offset_into_buffer (void)
  {
    char buf[] = "////XXXXXX";
    mktemp (buf + 4);
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_missing_placeholder_offset_into_buffer (void)
*************** void test_missing_placeholder_offset_int
*** 56,91 ****
--- 63,104 ----
    char buf[] = "////XXXXXX";
    /* Placeholder is incorrect from the pointer's perspective.  */
    mktemp (buf + 5); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_missing_placeholder (void)
  {
    char tmpl[] = "/var/run/sock";
    mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_too_short (void)
  {
    char tmpl[] = "XY";
    mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_empty_buffer (void)
  {
    char tmpl[] = "";
    mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_partial_placeholder (void)
  {
    char tmpl[] = "/var/run/sockXXXXX-";
    mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_four_xs (void)
  {
    char tmpl[] = "/var/run/sockXXXX";
    mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_populated_buf (void)
*************** void test_populated_buf (void)
*** 93,103 ****
--- 106,118 ----
    char tmpl[24];
    populate (tmpl);
    mktemp (tmpl);
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_NULL (void)
  {
    mktemp (NULL); /* possibly -Wanalyzer-null-argument */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
  }
  
  void test_errno_bad_template (void)
*************** void test_errno_bad_template (void)
*** 105,110 ****
--- 120,126 ----
    errno = 0;
    char tmpl[] = "/tmp/foo";
    char *result = mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
    __analyzer_eval (errno > 0); /* { dg-warning "TRUE" } */
  }
  
*************** void test_failure_nul_byte (void)
*** 112,117 ****
--- 128,134 ----
  {
    char tmpl[] = "/tmp/foo";
    char *result = mktemp (tmpl); /* { dg-warning "'mktemp' template string does not end with 'XXXXXX'" } */
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
    __analyzer_eval (result[0] == '\0'); /* { dg-warning "TRUE" } */
    __analyzer_eval (result == tmpl); /* { dg-warning "TRUE" } */
  }
*************** void test_success_path (void)
*** 120,125 ****
--- 137,143 ----
  {
    char tmpl[] = "/tmp/testXXXXXX";
    char *result = mktemp (tmpl);
+   /* { dg-warning {'mktemp' is deprecated:} "" { target *-*-darwin2* } .-1 } */
    if (result[0] != '\0')
      __analyzer_eval (result == tmpl); /* { dg-warning "TRUE" } */
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-137.c gcc-17-20260607/gcc/testsuite/gcc.dg/bitint-137.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/bitint-137.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/bitint-137.c	Sun Jun  7 22:32:10 2026
***************
*** 0 ****
--- 1,66 ----
+ /* { dg-do compile { target bitint575 } } */
+ /* { dg-options "-O2" } */
+ 
+ unsigned _BitInt(575) x, y;
+ signed _BitInt(575) z;
+ unsigned _BitInt(568) v, w;
+ 
+ int
+ foo ()
+ {
+   return __builtin_clzg (x, 575);
+ }
+ 
+ int
+ bar ()
+ {
+   return __builtin_ctzg (x, 575);
+ }
+ 
+ int
+ baz ()
+ {
+   return __builtin_clrsbg (z);
+ }
+ 
+ int
+ qux ()
+ {
+   return __builtin_ffsg (z);
+ }
+ 
+ int
+ corge ()
+ {
+   return __builtin_parityg (x);
+ }
+ 
+ int
+ garply ()
+ {
+   return __builtin_popcountg (x);
+ }
+ 
+ void
+ fred ()
+ {
+   v = __builtin_bswapg (v);
+ }
+ 
+ void
+ grault ()
+ {
+   w = __builtin_bswapg (v);
+ }
+ 
+ void
+ waldo ()
+ {
+   x = __builtin_bitreverseg (x);
+ }
+ 
+ void
+ xyzzy ()
+ {
+   y = __builtin_bitreverseg (x);
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/builtin-bitreverse-9.c gcc-17-20260607/gcc/testsuite/gcc.dg/builtin-bitreverse-9.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/builtin-bitreverse-9.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/builtin-bitreverse-9.c	Sun Jun  7 22:32:10 2026
***************
*** 0 ****
--- 1,17 ----
+ /* PR middle-end/125517 */
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-O2" } */
+ 
+ #if __SIZEOF_INT128__ == 16
+ static_assert (__builtin_bitreverse128 (((unsigned __int128)
+ 					 0x6132fc885cb8cf0cULL << 64)
+ 					| 0xeaa7649b043ae77bULL)
+ 	       == (((unsigned __int128) 0xdee75c20d926e557ULL << 64)
+ 		   | 0x30f31d3a113f4c86ULL), "bitreverse128 1");
+ static_assert (__builtin_bitreverse128 (0xeaa7649b043ae77bULL)
+ 	       == ((unsigned __int128) 0xdee75c20d926e557ULL << 64),
+ 	       "bitreverse128 2");
+ static_assert (__builtin_bitreverse128 (0xaa7649b043ae77bULL)
+ 	       == ((unsigned __int128) 0xdee75c20d926e550ULL << 64),
+ 	       "bitreverse128 3");
+ #endif
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-1_0.c gcc-17-20260607/gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-1_0.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-1_0.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/lto/toplevel-simple-asm-1_0.c	Sun Jun  7 22:32:10 2026
***************
*** 4,11 ****
--- 4,26 ----
  void asm_fn();
  void asm_fn_used();
  
+ #ifdef __ELF__
+ #ifdef __sparc__
+ #define TYPE_PFX "#"
+ #elif defined (__arm__) || defined (__aarch64__)
+ #define TYPE_PFX "%"
+ #else
+ #define TYPE_PFX "@"
+ #endif
+ #endif
+ 
+ #ifdef TYPE_PFX
+ asm(".global asm_fn\n.type asm_fn, " TYPE_PFX "function\nasm_fn:");
+ asm(".global asm_fn_used\n.type asm_fn_used, " TYPE_PFX "function\nasm_fn_used:");
+ #else
  asm(".global asm_fn\nasm_fn:");
  asm(".global asm_fn_used\nasm_fn_used:");
+ #endif
  
  
  __attribute__((noinline))
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/pr123569.c gcc-17-20260607/gcc/testsuite/gcc.dg/pr123569.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/pr123569.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/pr123569.c	Sun Jun  7 22:32:10 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-std=c99" } */
+ 
+ struct buffer {
+     int len;
+     char * ptr __attribute((counted_by(len)));
+ };
+ int ltrim(struct buffer * const buf) {
+     while (buf->len > 0 && *buf->ptr == ' ') {
+         buf->len--;
+         buf->ptr++;
+     }
+     return buf->len;
+ }
+ int main() {
+     struct buffer buf = {.ptr = " 123", .len = 4};
+     int ret = ltrim(&buf);
+     if (3 != ret)
+       __builtin_abort();
+     return 0;
+ }
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/pr125072.c gcc-17-20260607/gcc/testsuite/gcc.dg/pr125072.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/pr125072.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/pr125072.c	Sun Jun  7 22:32:10 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-fsanitize=alignment,bounds -fsanitize-trap" } */
+ 
+ 
+ struct sp {
+   unsigned int c;
+   int *a __attribute__ ((counted_by (c)));
+ };
+ 
+ int
+ main ()
+ {
+   struct sp y;
+   y.a = __builtin_malloc (30 * sizeof (int));
+   y.c = 30;
+   y.a[0] = 4;
+   y.a[29] = 77;
+   (void) &y;
+ 
+   return 0;
+ }
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/pr125252.c gcc-17-20260607/gcc/testsuite/gcc.dg/pr125252.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/pr125252.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/pr125252.c	Sun Jun  7 22:32:10 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do run } */
+ /* { dg-options "-std=gnu23 -O2" } */
+ 
+ 
+ int k;
+ struct S {};
+ 
+ #define T struct S
+ 
+ T *get_sender () {
+   k = 1;
+   return (void *)0;
+ }
+ 
+ T *get_cc () { }
+ 
+ void test () {
+         struct {
+                 T *(*get_header) (void);
+         } reply_to_map[] = {
+                 { get_sender },
+                 { get_cc },
+         };
+ 
+         for (int i = 0; i < 2; i++) {
+                 asm ("" ::"r"(reply_to_map[i].get_header ()));
+         }
+ }
+ 
+ int main() {
+         test ();
+ 
+         if (k != 1)
+             __builtin_abort();
+ }
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/pr125501.c gcc-17-20260607/gcc/testsuite/gcc.dg/pr125501.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/pr125501.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/pr125501.c	Sun Jun  7 22:32:10 2026
***************
*** 0 ****
--- 1,35 ----
+ // { dg-do run }
+ // { dg-options "-O3" }
+ 
+ #include <stdint.h>
+ int64_t g2, g27, g10;
+ static void *g13, *g24;
+ _Bool f11___trans_tmp_1, f11_c17;
+ void __attribute__((noinline)) f11(int64_t a0, void *a4, void *a5)
+ {
+     _Bool ob6;
+     int32_t v12;
+     int64_t v15;
+ lbl_entry:
+ lbl_sw_def4:
+     ob6 = g13 == a4;
+     if (ob6 || f11_c17) return;
+     if (f11___trans_tmp_1) v12 = g10;
+     a0 = (char *)a5 - (char *)a4;
+     ob6 = 0 == a0;
+     *(_Bool *)4 = 0;
+     if (ob6) goto lbl_b22;
+     __builtin_unreachable();
+ lbl_b22:
+     g27 = v12;
+     switch (v15)
+     {
+         case 6009053803839173278: goto lbl_sw_def4;
+         case 70689892217558167: goto lbl_entry;
+     }
+ }
+ 
+ int main()
+ {
+     f11(0, 0, g24);
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/pr125579.c gcc-17-20260607/gcc/testsuite/gcc.dg/pr125579.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/pr125579.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/pr125579.c	Sun Jun  7 22:32:10 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-options "-w -O3 -fno-tree-ccp -fno-inline" } */
+ 
+ int printf(const char *, ...);
+ int a;
+ void c(int d) {
+   unsigned e = 0;
+   if (a)
+     e = -(0 / (e * 0));
+   while (a) {
+     if (d)
+       continue;
+     printf("%d", e);
+     e++;
+   }
+ }
+ int main() { c(1); }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/pr125588-1.c gcc-17-20260607/gcc/testsuite/gcc.dg/pr125588-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/pr125588-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/pr125588-1.c	Sun Jun  7 22:32:10 2026
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-w" } */
+ /* PR middle-end/125588 */
+ void f() {
+ unsigned short a = 8 <= 0 % 0 |
+             7 >> (6 >> 48)  % 1  ^
+             6 >> 8 <= 0 &
+                 7 >> (6 >> 48) % 1;
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/pr98539.c gcc-17-20260607/gcc/testsuite/gcc.dg/pr98539.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/pr98539.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/pr98539.c	Sun Jun  7 22:32:10 2026
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-std=c99 -Wvla-parameter" } */
+ 
+ void foo(int n, double x[3][*]);
+ void foo(int n, double x[3][n]) { }
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c gcc-17-20260607/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c	Sun Jun  7 22:32:10 2026
*************** double __RTL test (struct foo *f, const
*** 66,72 ****
                          (const_int 0))) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23
                   (expr_list:REG_CALL_DECL (symbol_ref:DI ("sqrt") [flags 0x41]  <function_decl 0x7fa24e331d00 sqrt>)
                      (expr_list:REG_EH_REGION (const_int 0)))
!                 (expr_list:DF (use (reg:DF xmm0))))
        (edge-to exit (flags "ABNORMAL | SIBCALL"))
      ) ;; block 2
      (cbarrier 18)
--- 66,73 ----
                          (const_int 0))) "../../src/gcc/testsuite/gcc.dg/rtl/x86_64/different-structs.c":23
                   (expr_list:REG_CALL_DECL (symbol_ref:DI ("sqrt") [flags 0x41]  <function_decl 0x7fa24e331d00 sqrt>)
                      (expr_list:REG_EH_REGION (const_int 0)))
!                 (expr_list:DF (use (reg:DF xmm0)))
!                 0)
        (edge-to exit (flags "ABNORMAL | SIBCALL"))
      ) ;; block 2
      (cbarrier 18)
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125250.c gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125250.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125250.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125250.c	Sun Jun  7 22:32:11 2026
***************
*** 1,7 ****
  /* { dg-do run } */
  
! short g0, __chk, g9, g6;
! _Bool g1;
  void *g4;
  
  void __attribute__((noipa)) f5(_Bool a2, int a5)
--- 1,7 ----
  /* { dg-do run } */
  
! short __chk, g9, g6;
! _Bool g0, g1;
  void *g4;
  
  void __attribute__((noipa)) f5(_Bool a2, int a5)
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125477.c gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125477.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125477.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125477.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ 
+ void f123(void) __attribute__((__returns_twice__));
+ int c;
+ volatile int i;
+ void e(long *a, long *d, int f) {
+ g:
+   if (i)
+     return;
+   f123();
+   for (;;) {
+     __asm__ goto("" : : : : g);
+     c = 0;
+     for (; c < f; c++)
+       a[c] = d[c];
+   }
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125502.c gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125502.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125502.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125502.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ 
+ int f() __attribute__((returns_twice));
+ typedef short v16i16 __attribute__((vector_size(32)));
+ void f3(short);
+ void f4()
+ {
+     v16i16 vec6, vec11;
+     short v13;
+     vec6[0] = f();
+     vec11 = vec6;
+     f3(v13);
+     v13 = vec11[2];
+     f4();
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125545.c gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125545.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125545.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125545.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ 
+ int b(int c)
+ {
+   int a;
+   __asm__ goto("" : "=r"(a) : : : d);
+ d:
+   return c && a != 42 && a >= 42;
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125553.c gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125553.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125553.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125553.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ 
+ #include <stdint.h>
+ 
+ typedef int64_t v8i64 __attribute__((vector_size(64)));
+ int64_t g2, g17;
+ void *g24;
+ static v8i64 g25;
+ 
+ void hash()
+ {
+   v8i64 vec6;
+ lbl_b3:
+   *(v8i64 *)g24 = g25;
+   uint64_t __ov_tmp_g17 = __builtin_sub_overflow(g2, g2, &__ov_tmp_g17);
+   g17 = __ov_tmp_g17;
+   g25 = vec6;
+   vec6 = *(v8i64 *)g24;
+   g2 = vec6[0];
+   goto lbl_b3;
+   g25[7];
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125602.c gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125602.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/torture/pr125602.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/torture/pr125602.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fsanitize=undefined" } */
+ 
+ void f7()
+ {
+   signed char v10;
+ lbl_b1:
+   v10 = -86 - 42 + v10;
+   if (0 > v10) goto lbl_b1;
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/backprop-7.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/backprop-7.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/backprop-7.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/backprop-7.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target c99_runtime } */
+ /* { dg-options "-O -g -fdump-tree-backprop-details" }  */
+ 
+ #include <math.h>
+ #include <errno.h>
+ 
+ int errno_cache;
+ 
+ /* Test an update that includes vops.  */
+ #define TEST_FUNCTION(TYPE, SUFFIX)				\
+   TYPE								\
+   test##SUFFIX (TYPE x, int sel)				\
+   {								\
+     TYPE input = __builtin_fabs##SUFFIX (x);			\
+     TYPE res;							\
+     if (sel)							\
+       res = sin##SUFFIX (input);				\
+     else							\
+       res = sinh##SUFFIX (input);				\
+     errno_cache = errno;					\
+     return __builtin_fabs##SUFFIX (res);			\
+   }
+ 
+ TEST_FUNCTION (float, f)
+ TEST_FUNCTION (double, )
+ TEST_FUNCTION (long double, l)
+ 
+ /* { dg-final { scan-tree-dump-times {Deleting[^\n]* = ABS_EXPR <x} 3 "backprop" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c	Sun Jun  7 22:32:11 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-tree-ccp -fno-tree-forwprop -fno-tree-fre -fno-tree-vrp -fdump-tree-dse1-details" } */
  
  int
  f ()
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fno-tree-ccp -fno-tree-forwprop -fno-tree-fre -fno-tree-vrp -fdisable-tree-sccopy1 -fdump-tree-dse1-details" } */
  
  int
  f ()
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/pr120702.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr120702.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/pr120702.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr120702.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -fdump-tree-optimized" } */
+ 
+ extern void *memcpy(void *, const void *, __SIZE_TYPE__);
+ extern int memcmp(const void *, const void *, __SIZE_TYPE__);
+ 
+ static const unsigned char orig[10]
+   = { 'J', '2', 'O', 'Z', 'F', '5', '0', 'F', 'Y', 'L' };
+ 
+ static unsigned char test[10];
+ 
+ int
+ verify (void)
+ {
+   return 0 == memcmp (test, orig, 10 * sizeof (orig[0]));
+ }
+ 
+ int
+ benchmark (void)
+ {
+   memcpy (test, orig, 10 * sizeof (orig[0]));
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not " = \"J2OZF50FYL\";" "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/pr124405.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr124405.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/pr124405.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr124405.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-cselim-details" } */
+ 
+ void
+ f (int *a, int b)
+ {
+   *a &= ~3;
+   if (b)
+     *a |= 1;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Conditional store replacement happened" 1 "cselim"} } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/pr125612-1.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr125612-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/pr125612-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr125612-1.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fno-tree-dse -fno-tree-dce -fdump-tree-cselim-details" } */
+ /* PR tree-optimization/125612 */
+ 
+ /* The conditional store of `h[2000]` should not become unconditional since
+    it traps. */
+ 
+ int a, b, c = 2, d, e[4], f, i;
+ void g() {
+   int h[5];
+   e[0] = 2;
+   while (1) {
+     if (e[b]) {
+       if (!c)
+         h[2000] &= 1;
+       return;
+     }
+   }
+ }
+ int main() {
+   for (; i < 4; i++)
+     g();
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "Conditional store replacement happened" "cselim"} } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/pr45397.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr45397.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/pr45397.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/pr45397.c	Sun Jun  7 22:32:11 2026
*************** int foo_mul (const unsigned char *tmp, i
*** 18,29 ****
  
  /* All cases should end up using min/max for the saturated operations and
     have no control flow.  */
- /* EVRP leaves copies in the IL which confuses phiopt1 so we have
-    to rely on phiopt2 instead.  */
  /* { dg-final { scan-tree-dump-not " & 255;" "evrp" } } */
! /* { dg-final { scan-tree-dump-times "MAX_EXPR" 3 "phiopt1" { xfail *-*-* } } } */
! /* { dg-final { scan-tree-dump-times "MIN_EXPR" 3 "phiopt1" { xfail *-*-* } } } */
! /* { dg-final { scan-tree-dump-not "if " "phiopt1" { xfail *-*-* } } } */
  /* { dg-final { scan-tree-dump-times "MAX_EXPR" 3 "phiopt2" } } */
  /* { dg-final { scan-tree-dump-times "MIN_EXPR" 3 "phiopt2" } } */
  /* { dg-final { scan-tree-dump-not "if " "phiopt2" } } */
--- 18,27 ----
  
  /* All cases should end up using min/max for the saturated operations and
     have no control flow.  */
  /* { dg-final { scan-tree-dump-not " & 255;" "evrp" } } */
! /* { dg-final { scan-tree-dump-times "MAX_EXPR" 3 "phiopt1"  } } */
! /* { dg-final { scan-tree-dump-times "MIN_EXPR" 3 "phiopt1"  } } */
! /* { dg-final { scan-tree-dump-not "if " "phiopt1" } } */
  /* { dg-final { scan-tree-dump-times "MAX_EXPR" 3 "phiopt2" } } */
  /* { dg-final { scan-tree-dump-times "MIN_EXPR" 3 "phiopt2" } } */
  /* { dg-final { scan-tree-dump-not "if " "phiopt2" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi-not-optimized.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi-not-optimized.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi-not-optimized.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi-not-optimized.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,67 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-sccp-details" } */
+ 
+ int
+ nested_unused_phi1 (void)
+ {
+   int acc = 0;
+ 
+   for (int i = 0; i < 20; i++)
+     {
+       int x = 0;
+       for (int j = 0, y = 123; j != i; j++, y = i + 10)
+ 	x = y;
+       acc += x;
+     }
+ 
+   return acc;
+ }
+ 
+ int
+ nested_unused_phi2 (void)
+ {
+   int acc = 0;
+ 
+   for (int i = 0; i != 20; i++)
+     {
+       int x = 0;
+       for (int j = 0, y = 123; j != i + 1; j++, y = i + 10)
+ 	x = y;
+       acc += x;
+     }
+ 
+   return acc;
+ }
+ 
+ int
+ nested_unused_phi3 (void)
+ {
+   int acc = 0;
+ 
+   for (int i = 0; i != 20; i++)
+     {
+       int x = 0;
+       for (int j = 0, y = 123; j != i + 2; j++, y = i + 10)
+ 	x = y;
+       acc += x;
+     }
+ 
+   return acc;
+ }
+ 
+ /* Expected:
+    nested_unused_phi1 -> 123 + sum_{i=2}^{19} (i + 10) = 492
+    nested_unused_phi2 -> 123 + sum_{i=1}^{19} (i + 10) = 503
+    nested_unused_phi3 -> sum_{i=0}^{19} (i + 10)       = 390
+ 
+    These functions could be optimized by sccp, but currently are not because
+    they are not normal affine recurrence.
+    compute_final_value_from_loop_phi_latch tries to optimize these cases but
+    fails to do so for nested_unsed_phi1/2 as the niter in the inner loop might
+    be zero.
+    It should technically be able to optimized nested_unused_phi3 as we know
+    that niter > 0 for the inner loop but tree_expr_nonzero_p (niter) returns
+    false and we don't.
+ */
+ 
+ /* { dg-final { scan-tree-dump-times "not replacing:" 6 "sccp" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/sccp-loop-phi.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,55 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-sccp -fdump-tree-optimized" } */
+ 
+ int
+ const_init_unused_phi (void)
+ {
+   int x = 0;
+   for (int i = 0, y = 666; i != 19; i++, y = i * 10)
+     x = y;
+   return x;
+ }
+ 
+ int
+ conditional_init_unused_phi (int c)
+ {
+   int x = 0;
+   int y;
+ 
+   if (c != 0)
+     y = 20;
+   else
+     y = 30;
+ 
+   for (int i = 0; i != 19; i++, y = i * 10)
+     x = y;
+ 
+   return x;
+ }
+ 
+ int
+ nested_unused_phi (void)
+ {
+   int acc = 0;
+ 
+   for (int i = 0; i < 20; i++)
+     {
+       int x = 0;
+       for (int j = 0, y = 123; j != 19; j++, y = i + 10)
+ 	x = y;
+       acc += x;
+     }
+ 
+   return acc;
+ }
+ 
+ /* Expected:
+    const_init_unused_phi         -> 180
+    conditional_init_unused_phi   -> 180
+    nested_unused_phi             -> sum_{i=0}^{19} (i + 10) = 390
+    There should be no loop left in the optimized dump.
+ */
+ 
+ /* { dg-final { scan-tree-dump-times "return 180" 2 "sccp" } } */
+ /* { dg-final { scan-tree-dump "return 390" "sccp" } } */
+ /* { dg-final { scan-tree-dump-times "goto" 0 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-1.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-1.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized -fdump-tree-evrp-details" } */
+ /* PR tree-optimization/23471 */
+ 
+ int f(int a, int b)
+ {
+   if (a == b)
+   {
+     int t = a*b;
+     return t < 0; /* Should be optimized to 0. */
+   }
+   return 0;
+ }
+ 
+ 
+ /* { dg-final { scan-tree-dump-not "if " "optimized" } } */
+ /* { dg-final { scan-tree-dump "Global Exported: t_" "evrp" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-2.c gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/tree-ssa/vrp-mult-nonneg-2.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-tree-forwprop -fdump-tree-optimized -fdump-tree-evrp-details" } */
+ /* PR tree-optimization/125513 */
+ 
+ 
+ int f(int a)
+ {
+   int t = a*a;
+   return t < 0; /* Should be optimized to 0. */
+ }
+ 
+ 
+ /* { dg-final { scan-tree-dump "return 0" "optimized" } } */
+ /* { dg-final { scan-tree-dump "Global Exported: t_" "evrp" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c gcc-17-20260607/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c	Sun Jun  7 22:32:11 2026
*************** void __attribute__((__noinline__)) setup
*** 32,43 ****
  {
    p_array_annotated
      = (struct annotated *) malloc (sizeof (struct annotated));
!   p_array_annotated->c = (PTR_TYPE *) malloc (annotated_count * sizeof (PTR_TYPE));
    p_array_annotated->b = annotated_count;
  
    p_array_nested_annotated
      = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
!   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * annotated_count);
    p_array_nested_annotated->b = annotated_count;
  
    return;
--- 32,43 ----
  {
    p_array_annotated
      = (struct annotated *) malloc (sizeof (struct annotated));
!   p_array_annotated->c = (PTR_TYPE *) malloc ((annotated_count + 2) * sizeof (PTR_TYPE));
    p_array_annotated->b = annotated_count;
  
    p_array_nested_annotated
      = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
!   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * (annotated_count + 2));
    p_array_nested_annotated->b = annotated_count;
  
    return;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c gcc-17-20260607/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c	Sun Jun  7 22:32:11 2026
*************** void __attribute__((__noinline__)) setup
*** 30,41 ****
  {
    p_array_annotated
      = (struct annotated *) malloc (sizeof (struct annotated));
!   p_array_annotated->c = (PTR_TYPE *) malloc (annotated_count * sizeof (PTR_TYPE));
    p_array_annotated->b = annotated_count;
  
    p_array_nested_annotated
      = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
!   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * annotated_count);
    p_array_nested_annotated->b = annotated_count;
  
    return;
--- 30,41 ----
  {
    p_array_annotated
      = (struct annotated *) malloc (sizeof (struct annotated));
!   p_array_annotated->c = (PTR_TYPE *) malloc ((2 + annotated_count) * sizeof (PTR_TYPE));
    p_array_annotated->b = annotated_count;
  
    p_array_nested_annotated
      = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
!   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * (2 + annotated_count));
    p_array_nested_annotated->b = annotated_count;
  
    return;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/ubsan/pr81981.c gcc-17-20260607/gcc/testsuite/gcc.dg/ubsan/pr81981.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/ubsan/pr81981.c	Sun May 31 22:32:09 2026
--- gcc-17-20260607/gcc/testsuite/gcc.dg/ubsan/pr81981.c	Sun Jun  7 22:32:11 2026
*************** foo (int i)
*** 16,21 ****
        u[0] = i;
      }
  
!   v = u[0];		/* { dg-warning "may be used uninitialized" "" { xfail *-*-* } } */
!   return t[0];		/* { dg-warning "may be used uninitialized" } */
  }
--- 16,21 ----
        u[0] = i;
      }
  
!   v = u[0];		/* { dg-warning "may be used uninitialized" } */
!   return t[0];		/* { dg-warning "may be used uninitialized" "" { xfail *-*-* } } */
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-ordered.c gcc-17-20260607/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-ordered.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-ordered.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-ordered.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -mcpu=xt-c9501fdvt -O3 -mrvv-vector-bits=scalable -fvect-cost-model=unlimited -fdump-tree-vect-details" } */
+ 
+ #include <stdint-gcc.h>
+ 
+ #define DEF_REDUC_PLUS(TYPE)				\
+   TYPE __attribute__ ((noinline, noclone))		\
+   reduc_plus_##TYPE (TYPE *restrict a, int n)		\
+   {							\
+     TYPE r = 0;						\
+     for (int i = 0; i < n; ++i)				\
+       r += a[i];					\
+     return r;						\
+   }
+ 
+ DEF_REDUC_PLUS (_Float16)
+ DEF_REDUC_PLUS (float)
+ DEF_REDUC_PLUS (double)
+ 
+ /* { dg-final { scan-assembler {vfredosum\.vs\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} } } */
+ /* { dg-final { scan-tree-dump "vec_to_scalar costs 19 in body" "vect" } } */
+ /* { dg-final { scan-tree-dump "vec_to_scalar costs 18 in body" "vect" } } */
+ /* { dg-final { scan-tree-dump "vec_to_scalar costs 14 in body" "vect" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-unordered.c gcc-17-20260607/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-unordered.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-unordered.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-reduc-unordered.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -mcpu=xt-c9501fdvt -O3 -mrvv-vector-bits=scalable -ffast-math -fvect-cost-model=unlimited -fdump-tree-vect-details" } */
+ 
+ #include <stdint-gcc.h>
+ 
+ #define DEF_REDUC_PLUS(TYPE)			\
+ TYPE __attribute__ ((noinline, noclone))	\
+ reduc_plus_##TYPE (TYPE *restrict a, int n)	\
+ {						\
+   TYPE r = 0;					\
+   for (int i = 0; i < n; ++i)			\
+     r += a[i];					\
+   return r;					\
+ }
+ 
+ DEF_REDUC_PLUS (int8_t)
+ DEF_REDUC_PLUS (int16_t)
+ DEF_REDUC_PLUS (int32_t)
+ DEF_REDUC_PLUS (int64_t)
+ DEF_REDUC_PLUS (_Float16)
+ DEF_REDUC_PLUS (float)
+ DEF_REDUC_PLUS (double)
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 7 "vect" } } */
+ /* { dg-final { scan-assembler-times {vredsum\.vs\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 4 } } */
+ /* { dg-final { scan-assembler-times {vfredusum\.vs\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 3 } } */
+ /* { dg-final { scan-tree-dump "vec_to_scalar costs 8 in epilogue" "vect" } } */
+ /* { dg-final { scan-tree-dump "vec_to_scalar costs 13 in epilogue" "vect" } } */
+ /* { dg-final { scan-tree-dump "vec_to_scalar costs 11 in epilogue" "vect" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-ldst-cost.c gcc-17-20260607/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-ldst-cost.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-ldst-cost.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-ldst-cost.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -mcpu=xt-c9501fdvt -O3 -mrvv-vector-bits=scalable -fdump-tree-vect-details" } */
+ 
+ void
+ add1_i32 (int *restrict a, int *restrict b, int n)
+ {
+   /* b[i] + 1 prevents the loop from being recognised as memcpy.  */
+   for (int i = 0; i < n; ++i)
+     a[i] = b[i] + 1;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump "vector_load costs 6 in body" "vect" } } */
+ /* { dg-final { scan-tree-dump "vector_store costs 1 in body" "vect" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-stmt-cost.c gcc-17-20260607/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-stmt-cost.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-stmt-cost.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/xt-c9501fdvt-vect-stmt-cost.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -mcpu=xt-c9501fdvt -O3 -mrvv-vector-bits=scalable -fdump-tree-vect-details" } */
+ 
+ void
+ add_i32 (int *restrict a, int *restrict b, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     a[i] += b[i];
+ }
+ 
+ void
+ add_f32 (float *restrict a, float *restrict b, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     a[i] += b[i];
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 2 "vect" } } */
+ /* { dg-final { scan-tree-dump "vector_stmt costs 3 in body" "vect" } } */
+ /* { dg-final { scan-tree-dump "vector_stmt costs 4 in body" "vect" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.dg/vect/pr125509.c gcc-17-20260607/gcc/testsuite/gcc.dg/vect/pr125509.c
*** gcc-17-20260531/gcc/testsuite/gcc.dg/vect/pr125509.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.dg/vect/pr125509.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { 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 "-mavx512f" { target { i?86-*-* x86_64-*-* } } } */
+ 
+ struct a {
+   char *b;
+   long c;
+ } e;
+ long d;
+ char f;
+ static bool g(char *h, long j) {
+   auto i = h + j - 1;
+   for (; h != i; h++)
+     if (*h)
+       return false;
+   return f;
+ }
+ void k();
+ static void l(struct a h) {
+   if (!g(h.b, h.c))
+     if (d)
+       k();
+ }
+ void m() {
+   if (e.c != 1)
+     l(e);
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump "early break does not require epilog" "vect" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pr124713.c gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr124713.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pr124713.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr124713.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,24 ----
+ /* PR rtl-optimization/124713 */
+ /* { dg-do run } */
+ /* { dg-require-effective-target aarch64_little_endian } */
+ /* { dg-options "-Og -favoid-store-forwarding -fwrapv" } */
+ 
+ int x;
+ long y;
+ 
+ __attribute__((noipa)) long
+ foo (short m)
+ {
+   short b = m * 13;
+   __builtin_memset (1 + (char *) &b, x, 1);
+   long c = *(long *) __builtin_memset (&y, x, 4);
+   return c + b;
+ }
+ 
+ int
+ main ()
+ {
+   long x = foo (3840);
+   if (x)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pr125538.c gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr125538.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/pr125538.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/pr125538.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv9.5-a" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define vect16 __attribute__((vector_size(16)))
+ 
+ vect16 char fff(char _292, char _145, char _231)
+ {
+     return (vect16 char) {_292, _145, _145, _231, _292, _145, _145, _231, _292, _145, _145, _231, _292, _145, _145, _231};
+ }
+ 
+ /*
+ ** fff:
+ **	dup	v31\.8b, w1
+ **	fmov	w1, s31
+ **	bfi	w1, w0, 0, 8
+ **	bfi	w1, w2, 24, 8
+ **	dup	v0\.4s, w1
+ **	ret
+ */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme/inline-asm.c gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme/inline-asm.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sme/inline-asm.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sme/inline-asm.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,16 ----
+ /* This test checks the use of the Uc[ij] constraints in inline asm.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void ucj(unsigned v, void *p)
+ {
+   asm volatile ("str za[%w0, #0], [%1]" :: "Ucj"(v), "r"(p));
+ }
+ 
+ void uci(unsigned wv)
+ {
+   asm volatile ("mova { z0.d-z1.d }, za.d[%w0, #0, vgx2]" :: "Uci"(wv));
+ }
+ 
+ /* { dg-final { scan-assembler-times {str za\[w1[2-5], #0\], \[x1\]} 1 } } */
+ /* { dg-final { scan-assembler-times {mova { z0\.d-z1\.d }, za\.d\[w([89]|1[01]), #0, vgx2\]} 1 } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pr122827.c gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/pr122827.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/pr122827.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/pr122827.c	Sun Jun  7 22:32:11 2026
***************
*** 0 ****
--- 1,96 ----
+ /* PR target/122827.
+ 
+    With -msve-vector-bits=128 and SVE-only autovec, the inlined
+    madd_v3 calls are vectorised into SVE partial-mode FMLAs that share
+    a single vec_duplicate of the scalar FAC.
+    Before the fix, the register allocator placed the VNx2SF
+    broadcast in V14 across the call to clobber() because IRA thought
+    V14 was preserved (only the low 64 bits, D14, are callee-saved under
+    AAPCS64).  The SVE FMLA reads the full Z register, so the upper
+    lanes of the broadcast are corrupted by the call and the result of
+    the FMLA is wrong.  */
+ 
+ /* { dg-do run { target aarch64_sve128_hw } } */
+ /* { dg-options "-Ofast -msve-vector-bits=128 --param=aarch64-autovec-preference=sve-only" } */
+ /* { dg-require-effective-target aarch64_little_endian } */
+ 
+ struct R
+ {
+   float combined[3];
+   float spec[3];
+   float diff[3];
+   float diffshad[3];
+   float shad[3];
+ };
+ 
+ struct I
+ {
+   float fac;
+   int passflag;
+ };
+ 
+ /* AAPCS64 only requires callees to preserve the low 64 bits of V8-V15;
+    the upper lanes are caller-clobbered.  The buggy register allocator
+    in this test places the broadcast in V14 specifically, so clobbering
+    V14s upper bits here is sufficient to expose the miscompile.  The
+    asm clobber list lets GCC save/restore D14 around the write, so we
+    honour the ABI contract for the low half while leaving the upper
+    half trashed, what any normal callee is permitted to do.  */
+ __attribute__((noipa)) static void
+ clobber (struct I *si, struct R *r)
+ {
+   asm volatile ("movi v14.16b, #0xff" : : : "v14");
+ }
+ 
+ static inline __attribute__((always_inline)) void
+ madd_v3 (float r[3], const float a[3], float f)
+ {
+   r[0] += a[0] * f;
+   r[1] += a[1] * f;
+   r[2] += a[2] * f;
+ }
+ 
+ __attribute__((noipa)) void
+ test (struct I *si, struct R *r)
+ {
+   struct R t = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 },
+ 		 { 10, 11, 12 }, { 13, 14, 15 } };
+ 
+   clobber (si, r);
+   if (si->fac != 0.0f)
+     {
+       float fac = si->fac;
+       clobber (si, &t);
+       madd_v3 (r->combined, t.combined, fac);
+       if (si->passflag & 1)
+ 	madd_v3 (r->spec, t.spec, fac);
+       if (si->passflag & 2)
+ 	{
+ 	  madd_v3 (r->diff, t.diff, fac);
+ 	  madd_v3 (r->diffshad, t.diffshad, fac);
+ 	}
+       if (si->passflag & 4)
+ 	madd_v3 (r->shad, t.shad, fac);
+     }
+ }
+ 
+ int
+ main (void)
+ {
+   struct I si = { 2.0f, 7 };
+   struct R r = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
+ 		 { 0, 0, 0 }, { 0, 0, 0 } };
+   test (&si, &r);
+   if (r.combined[0] != 2.f || r.combined[1] != 4.f || r.combined[2] != 6.f)
+     __builtin_abort ();
+   if (r.spec[0] != 8.f || r.spec[1] != 10.f || r.spec[2] != 12.f)
+     __builtin_abort ();
+   if (r.diff[0] != 14.f || r.diff[1] != 16.f || r.diff[2] != 18.f)
+     __builtin_abort ();
+   if (r.diffshad[0] != 20.f || r.diffshad[1] != 22.f || r.diffshad[2] != 24.f)
+     __builtin_abort ();
+   if (r.shad[0] != 26.f || r.shad[1] != 28.f || r.shad[2] != 30.f)
+     __builtin_abort ();
+   return 0;
+ }
+ 
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/sve/vec_init_5.c	Sun Jun  7 22:32:11 2026
***************
*** 153,158 ****
--- 153,178 ----
  */
  
  /*
+ ** test_int8_14:
+ **	dup	v31\.8b, w1
+ **	fmov	w1, s31
+ **	bfi	w1, w0, 0, 8
+ **	bfi	w1, w2, 24, 8
+ **	mov	z0\.s, w1
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_15:
+ **	dup	v31\.8b, w1
+ **	fmov	w1, s31
+ **	bfi	w1, w0, 0, 8
+ **	bfi	w1, w2, 16, 8
+ **	mov	z0\.s, w1
+ **	ret
+ */
+ 
+ /*
  ** test_float16_1:
  **	fcvt	h0, s0
  **	mov	z0\.h, h0
***************
*** 237,242 ****
--- 257,289 ----
  */
  
  /*
+ ** test_float16_9:
+ **	fcvt	h1, s1
+ **	fcvt	h2, s2
+ **	fcvt	h0, s0
+ **	uzp1	v0\.4h, v0\.4h, v1\.4h
+ **	uzp1	v1\.4h, v1\.4h, v2\.4h
+ **	dup	v0\.2s, v0\.s\[0\]
+ **	dup	v1\.2s, v1\.s\[0\]
+ **	zip1	v0\.8h, v0\.8h, v1\.8h
+ **	dup	z0\.q, z0.q\[0\]
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_10:
+ **	fcvt	h2, s2
+ **	fcvt	h0, s0
+ **	fcvt	h1, s1
+ **	uzp1	v0\.4h, v0\.4h, v2\.4h
+ **	dup	v1\.4h, v1\.h\[0\]
+ **	dup	v0\.2s, v0\.s\[0\]
+ **	zip1	v0\.8h, v0\.8h, v1\.8h
+ **	dup	z0\.q, z0.q\[0\]
+ **	ret
+ */
+ 
+ /*
  ** test_int16_1:
  **	mov	z0\.h, w0
  **	ret
***************
*** 308,313 ****
--- 355,381 ----
  **	zip1	v31\.8h, v31\.8h, v30\.8h
  **	dup	z0\.q, z31\.q\[0\]
  **	ret
+ */
+ 
+ /*
+ ** test_int16_9:
+ **	bfi	w0, w1, 16, 16
+ **	bfi	w1, w2, 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_10:
+ **	bfi	w0, w2, 16, 16
+ **	dup	v30\.4h, w1
+ **	dup	v31\.2s, w0
+ **	zip1	v31\.8h, v31\.8h, v30\.8h
+ **	dup	z0\.q, z31\.q\[0\]
+ **	ret
  */
  
  /*
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vec-init-23.c gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/vec-init-23.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/aarch64/vec-init-23.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/aarch64/vec-init-23.c	Sun Jun  7 22:32:11 2026
***************
*** 41,47 ****
      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)\
--- 41,51 ----
      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) \
!     TESTCASE (TYPE, ETYPE, T, 8, 14, x16, x0, x1, x1, x2, x0, x1, x1, x2,\
! 			       x0, x1, x1, x2, x0, x1, x1, x2) \
!     TESTCASE (TYPE, ETYPE, T, 8, 15, x16, x0, x1, x2, x1, x0, x1, x2, x1,\
! 			       x0, x1, x2, x1, x0, x1, x2, x1)
  
  #define TEST_16(TYPE, ETYPE, T)\
      TESTCASE (TYPE, ETYPE, T, 16, 1, x8, x0, x0, x0, x0, x0, x0, x0, x0)\
***************
*** 52,57 ****
--- 56,63 ----
      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)\
+     TESTCASE (TYPE, ETYPE, T, 16, 9, x8, x0, x1, x1, x2, x0, x1, x1, x2)\
+     TESTCASE (TYPE, ETYPE, T, 16, 10, x8, x0, x1, x2, x1, x0, x1, x2, x1)
  
  #define TEST_32(TYPE, ETYPE, T)\
      TESTCASE (TYPE, ETYPE, T, 32, 1, x4, x0, x0, x0, x0)\
*************** TEST_64(int, int64_t, s)
*** 206,211 ****
--- 212,237 ----
  */
  
  /*
+ ** test_int8_14:
+ **	dup	v31\.8b, w1
+ **	fmov	w1, s31
+ **	bfi	w1, w0, 0, 8
+ **	bfi	w1, w2, 24, 8
+ **	dup	v0\.4s, w1
+ **	ret
+ */
+ 
+ /*
+ ** test_int8_15:
+ **	dup	v31\.8b, w1
+ **	fmov	w1, s31
+ **	bfi	w1, w0, 0, 8
+ **	bfi	w1, w2, 16, 8
+ **	dup	v0\.4s, w1
+ **	ret
+ */
+ 
+ /*
  ** test_float16_1:
  **	fcvt	h0, s0
  **	dup	v0\.8h, v0\.h\[0\]
*************** TEST_64(int, int64_t, s)
*** 287,292 ****
--- 313,343 ----
  */
  
  /*
+ ** test_float16_9:
+ **	fcvt	h1, s1
+ **	fcvt	h2, s2
+ **	fcvt	h0, s0
+ **	uzp1	v0\.4h, v0\.4h, v1\.4h
+ **	uzp1	v1\.4h, v1\.4h, v2\.4h
+ **	dup	v0\.2s, v0\.s\[0\]
+ **	dup	v1\.2s, v1\.s\[0\]
+ **	zip1	v0\.8h, v0\.8h, v1\.8h
+ **	ret
+ */
+ 
+ /*
+ ** test_float16_10:
+ **	fcvt	h2, s2
+ **	fcvt	h0, s0
+ **	fcvt	h1, s1
+ **	uzp1	v0\.4h, v0\.4h, v2\.4h
+ **	dup	v1\.4h, v1\.h\[0\]
+ **	dup	v0\.2s, v0\.s\[0\]
+ **	zip1	v0\.8h, v0\.8h, v1\.8h
+ **	ret
+ */
+ 
+ /*
  ** test_int16_1:
  **	dup	v0\.8h, w0
  **	ret
*************** TEST_64(int, int64_t, s)
*** 356,361 ****
--- 407,431 ----
  **	ret
  */
  
+ /*
+ ** test_int16_9:
+ **	bfi	w0, w1, 16, 16
+ **	bfi	w1, w2, 16, 16
+ **	dup	v31\.2s, w0
+ **	dup	v0\.2s, w1
+ **	zip1	v0\.8h, v31\.8h, v0\.8h
+ **	ret
+ */
+ 
+ /*
+ ** test_int16_10:
+ **	bfi	w0, w2, 16, 16
+ **	dup	v0\.4h, w1
+ **	dup	v31\.2s, w0
+ **	zip1	v0\.8h, v31\.8h, v0\.8h
+ **	ret
+ */
+ 
  /*
  ** test_float32_1:
  **	dup	v0\.4s, v0\.s\[0\]
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/20040112-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/20040112-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/20040112-1.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/20040112-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-2.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-2.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-2.c	Sun Jun  7 22:32:12 2026
***************
*** 1,5 ****
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -O3 -w" } */
  
  long a;
  int b, d, e;
--- 1,5 ----
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O3 -w" } */
  
  long a;
  int b, d, e;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-adc.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-adc.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-adc.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-adc.c	Sun Jun  7 22:32:12 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { int128 && { ! ia32 } } } } */
! /* { dg-options "-mapxf -O2" } */
  
  #include "pr91681-1.c"
  // *addti3_doubleword
--- 1,5 ----
  /* { dg-do compile { target { int128 && { ! ia32 } } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  #include "pr91681-1.c"
  // *addti3_doubleword
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-base-index-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-base-index-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-base-index-1.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-base-index-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/113711 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapxf -O2" } */
  
  #include <stdint.h>
  
--- 1,6 ----
  /* PR target/113711 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  #include <stdint.h>
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-cmov.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-cmov.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-cmov.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-cmov.c	Sun Jun  7 22:32:12 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -m64 -mapxf" } */
  /* { dg-final { scan-assembler-times "cmov(l\.)?e\[^\n\r]*, %eax" 1 } } */
  /* { dg-final { scan-assembler-times "cmov(l\.)?ge\[^\n\r]*, %eax" 1 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -m64 -mapxf -mtune-ctrl=enable_ndd_mem" } */
  /* { dg-final { scan-assembler-times "cmov(l\.)?e\[^\n\r]*, %eax" 1 } } */
  /* { dg-final { scan-assembler-times "cmov(l\.)?ge\[^\n\r]*, %eax" 1 } } */
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-no-seg-global-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-no-seg-global-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-no-seg-global-1.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-no-seg-global-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/113711 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapxf -O2" } */
  
  #include <stdint.h>
  
--- 1,6 ----
  /* PR target/113711 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  #include <stdint.h>
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-sbb.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-sbb.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-sbb.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-sbb.c	Sun Jun  7 22:32:12 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { int128 && { ! ia32 } } } } */
! /* { dg-options "-mapxf -O2" } */
  
  #include "pr91681-2.c"
  
--- 1,5 ----
  /* { dg-do compile { target { int128 && { ! ia32 } } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  #include "pr91681-2.c"
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-1.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -O2" } */
  
  #include <stdint.h>
  
--- 1,6 ----
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  #include <stdint.h>
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-2.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-2.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-2.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/113711 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapxf -O2" } */
  
  #include <stdint.h>
  
--- 1,6 ----
  /* PR target/113711 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  #include <stdint.h>
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-3.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-3.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-3.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-3.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -O2" } */
  
  typedef signed __int128 S;
  int o;
--- 1,6 ----
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  typedef signed __int128 S;
  int o;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-4.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-4.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-4.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-4.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -O2" } */
  
  unsigned __int128
  foo (void)
--- 1,6 ----
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  unsigned __int128
  foo (void)
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-5.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-5.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-seg-5.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-seg-5.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -O2" } */
  
  #include <stdint.h>
  
--- 1,6 ----
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  #include <stdint.h>
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-shld-shrd.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-shld-shrd.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-shld-shrd.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-shld-shrd.c	Sun Jun  7 22:32:12 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -Wno-shift-count-overflow -m64 -mapxf" } */
  /* { dg-final { scan-assembler-times {(?n)shld[ql]?[\t ]*\$2} 4 } } */
  /* { dg-final { scan-assembler-times {(?n)shrd[ql]?[\t ]*\$2} 4 } } */
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -Wno-shift-count-overflow -m64 -mapxf -mtune-ctrl=enable_ndd_mem" } */
  /* { dg-final { scan-assembler-times {(?n)shld[ql]?[\t ]*\$2} 4 } } */
  /* { dg-final { scan-assembler-times {(?n)shrd[ql]?[\t ]*\$2} 4 } } */
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1a.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* PR target/113733 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
! /* { dg-options "-std=gnu17 -mapxf -O3 -w" } */
  
  extern __thread int a, j;
  enum b
--- 1,7 ----
  /* PR target/113733 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
! /* { dg-options "-std=gnu17 -mapxf -mtune-ctrl=enable_ndd_mem -O3 -w" } */
  
  extern __thread int a, j;
  enum b
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-1b.c	Sun Jun  7 22:32:12 2026
***************
*** 2,8 ****
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
  /* { dg-require-effective-target code_6_gottpoff_reloc } */
! /* { dg-options "-save-temps -std=gnu17 -mapxf -O3 -w" } */
  /* The testcase is fragile, it's supposed to check the compiler
     ability of generating code_6_gottpoff_reloc instruction, but
     failed since there's a seg_prefixed memory
--- 2,8 ----
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
  /* { dg-require-effective-target code_6_gottpoff_reloc } */
! /* { dg-options "-save-temps -std=gnu17 -mapxf -mtune-ctrl=enable_ndd_mem -O3 -w" } */
  /* The testcase is fragile, it's supposed to check the compiler
     ability of generating code_6_gottpoff_reloc instruction, but
     failed since there's a seg_prefixed memory
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-2.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-2.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-2.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
! /* { dg-options "-mapxf -O2" } */
  
  #include <stdint.h>
  
--- 1,7 ----
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  #include <stdint.h>
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-3.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-3.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-3.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-3.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
! /* { dg-options "-mapxf -O2" } */
  
  typedef signed __int128 S;
  __thread S var;
--- 1,7 ----
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  typedef signed __int128 S;
  __thread S var;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-4.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-4.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-tls-4.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-tls-4.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
! /* { dg-options "-mapxf -O2" } */
  
  #define DECL(TYPE) \
  extern __thread TYPE TYPE##_a;
--- 1,6 ----
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target tls } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2" } */
  
  #define DECL(TYPE) \
  extern __thread TYPE TYPE##_a;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-1.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -O2 -mx32" } */
  
  typedef long long int64_t;
  
--- 1,7 ----
  /* PR target/113711 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2 -mx32" } */
  
  typedef long long int64_t;
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2a.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* PR target/114696 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -O0 -mx32" } */
  
  _Thread_local unsigned _BitInt(65) a;
  _BitInt(129) b;
--- 1,7 ----
  /* PR target/114696 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O0 -mx32" } */
  
  _Thread_local unsigned _BitInt(65) a;
  _BitInt(129) b;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2b.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/114696 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -O2 -mx32" } */
  
  #include "apx-ndd-x32-2a.c"
--- 1,6 ----
  /* PR target/114696 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2 -mx32" } */
  
  #include "apx-ndd-x32-2a.c"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2c.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2c.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2c.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2c.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/114696 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -O0 -mx32 -maddress-mode=long" } */
  
  #include "apx-ndd-x32-2a.c"
--- 1,6 ----
  /* PR target/114696 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O0 -mx32 -maddress-mode=long" } */
  
  #include "apx-ndd-x32-2a.c"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2d.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2d.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2d.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd-x32-2d.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR target/114696 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -O2 -mx32 -maddress-mode=long" } */
  
  #include "apx-ndd-x32-2a.c"
--- 1,6 ----
  /* PR target/114696 */
  /* { dg-do assemble { target { apxf && { ! ia32 } } } } */
  /* { dg-require-effective-target maybe_x32 } */
! /* { dg-options "-mapxf -mtune-ctrl=enable_ndd_mem -O2 -mx32 -maddress-mode=long" } */
  
  #include "apx-ndd-x32-2a.c"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-ndd.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-ndd.c	Sun Jun  7 22:32:12 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapx-features=egpr,push2pop2,ndd,ppx -march=x86-64 -O2" } */
  /* { dg-final { scan-assembler-not "movl"} } */
  
  #include <stdint.h>
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapx-features=egpr,push2pop2,ndd,ppx -march=x86-64 -O2 -mtune-ctrl=enable_ndd_mem" } */
  /* { dg-final { scan-assembler-not "movl"} } */
  
  #include <stdint.h>
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-zu-4.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-zu-4.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/apx-zu-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/apx-zu-4.c	Sun Jun  7 22:32:12 2026
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-mapxf -march=x86-64 -O2 -mtune-ctrl=disable_setzucc" } */
+ /* { dg-final { scan-assembler-not "setzu" } } */
+ 
+ #include "apx-zu-3.c"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-1.c	Sun Jun  7 22:32:12 2026
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=c86-4g-m7 -fdump-tree-vect-details" } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 32 byte vectors" "vect" } } */
+ 
+ int a[512], b[512];
+ 
+ void foo(void) {
+     int i;
+     for (i = 0; i < 32; ++i) {
+         b[i * 16 + 0] = a[i * 16 + 0];
+         b[i * 16 + 1] = a[i * 16 + 0];
+         b[i * 16 + 2] = a[i * 16 + 3];
+         b[i * 16 + 3] = a[i * 16 + 5];
+         b[i * 16 + 4] = a[i * 16 + 4];
+         b[i * 16 + 5] = a[i * 16 + 6];
+         b[i * 16 + 6] = a[i * 16 + 4];
+         b[i * 16 + 7] = a[i * 16 + 9];
+         b[i * 16 + 8] = a[i * 16 + 8];
+         b[i * 16 + 9] = a[i * 16 + 8];
+         b[i * 16 + 10] = a[i * 16 + 11];
+         b[i * 16 + 11] = a[i * 16 + 13];
+         b[i * 16 + 12] = a[i * 16 + 12];
+         b[i * 16 + 13] = a[i * 16 + 14];
+         b[i * 16 + 14] = a[i * 16 + 12];
+         b[i * 16 + 15] = a[i * 16 + 14];
+     }
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-2.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-2.c	Sun Jun  7 22:32:12 2026
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=c86-4g-m7 -O2 -fdump-tree-slp-details" } */
+ /* { dg-final { scan-tree-dump-times {(?n)Detected avx512 cross-lane permutation} 1 "slp2" } } */
+ 
+ void foo(double *a, double *__restrict b, int c, int n) {
+     a[0] = b[100] * b[4];
+     a[1] = b[100] * b[5];
+     a[2] = b[100] * b[6];
+     a[3] = b[100] * b[7];
+     a[4] = b[100] * b[0];
+     a[5] = b[100] * b[1];
+     a[6] = b[100] * b[2];
+     a[7] = b[100] * b[3];
+ }
+ 
+ void foo1(double *a, double *__restrict b, int c, int n) {
+     a[0] = b[100] * b[0];
+     a[1] = b[100] * b[1];
+     a[2] = b[100] * b[3];
+     a[3] = b[100] * b[2];
+     a[4] = b[100] * b[4];
+     a[5] = b[100] * b[5];
+     a[6] = b[100] * b[7];
+     a[7] = b[100] * b[6];
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-3.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-3.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/avx512_avoid_vec_perm-3.c	Sun Jun  7 22:32:12 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=c86-4g-m7 -fdump-tree-vect-details" } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 64 byte vectors" "vect" { xfail *-*-* } } } */
+ 
+ /* This case only has false cross-lane permutations, which should ideally be
+    excluded from the loop vectorizer cost downgrade.  The current loop-vect
+    handling does not distinguish false cross-lane permutations from real ones,
+    so the expected full-width vectorization is marked as xfail.  */
+ 
+ int a[512], b[512];
+ 
+ void foo(void) {
+     int i;
+     for (i = 0; i < 32; ++i) {
+         b[i * 16 + 0] = a[i * 16 + 0];
+         b[i * 16 + 1] = a[i * 16 + 0];
+         b[i * 16 + 2] = a[i * 16 + 3];
+         b[i * 16 + 3] = a[i * 16 + 3];
+         b[i * 16 + 4] = a[i * 16 + 4];
+         b[i * 16 + 5] = a[i * 16 + 6];
+         b[i * 16 + 6] = a[i * 16 + 4];
+         b[i * 16 + 7] = a[i * 16 + 6];
+         b[i * 16 + 8] = a[i * 16 + 8];
+         b[i * 16 + 9] = a[i * 16 + 8];
+         b[i * 16 + 10] = a[i * 16 + 11];
+         b[i * 16 + 11] = a[i * 16 + 11];
+         b[i * 16 + 12] = a[i * 16 + 12];
+         b[i * 16 + 13] = a[i * 16 + 14];
+         b[i * 16 + 14] = a[i * 16 + 12];
+         b[i * 16 + 15] = a[i * 16 + 14];
+     }
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-2.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-2.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-2.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-3.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-3.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-3.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-3.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-4.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-4.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-4.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-4.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-5.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-5.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-5.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-5.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-6.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-6.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-6.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-6.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-7.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-7.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-7.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-7.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-8b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-8b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-copysign-8b.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-copysign-8b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx512f -mavx -mtune=generic" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-fabs-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-fabs-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-fabs-1.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-fabs-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* PR target/122323 */
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-10.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-10.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-10.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-10.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-11a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-11a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-11a.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-11a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-11b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-11b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-11b.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-11b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx512f -march=x86-64-v3 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-11c.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-11c.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-11c.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-11c.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmove-max=512 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-12.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-12.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-12.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-12.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-13.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-14.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-14.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-14.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-14.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-15.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-15.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-15.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-15.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-1a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-1a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-1a.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-1a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-1b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-1b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-1b.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-1b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx512f -march=x86-64-v3 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-1c.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-1c.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-1c.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-1c.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmove-max=512 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-1d.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-1d.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-1d.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-1d.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mgeneral-regs-only -march=x86-64 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx512f -march=x86-64-v3 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmove-max=512 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mgeneral-regs-only -march=x86-64 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx512f -march=x86-64-v3 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmove-max=512 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx512f -march=x86-64-v3 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmove-max=512 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-5a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-5a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-5a.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-5a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx512f -march=x86-64-v3 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmove-max=512 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-6.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-6.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-6.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-6.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-7.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-7.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-7.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-7.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-8.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-8.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-8.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-8.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-9.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-9.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/builtin-memmove-9.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/builtin-memmove-9.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-avx -msse2 -mtune=generic -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { lp64 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/cf_check-11.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/cf_check-11.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/cf_check-11.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/cf_check-11.c	Sun Jun  7 22:32:12 2026
***************
*** 2,8 ****
  /* { dg-do compile { target { "i?86-*-* x86_64-*-*" } } } */
  /* { dg-require-weak "" } */
  /* { dg-options "-O2 -fcf-protection" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 2,7 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/cf_check-7.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/cf_check-7.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/cf_check-7.c	Sun May 31 22:32:10 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/cf_check-7.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* PR c/122427 */
  /* { dg-do compile { target { "i?86-*-* x86_64-*-*" } } } */
  /* { dg-options "-O2 -fcf-protection" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-sse -mmemcpy-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-2.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-2.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-2.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64 -mmemcpy-strategy=vector_loop:2048:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-3.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-3.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-3.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-3.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64 -mmemcpy-strategy=vector_loop:2048:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-4.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-4.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-4.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-4.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64-v3 -mmemcpy-strategy=vector_loop:2048:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-5.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-5.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-5.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-5.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64-v3 -mmemcpy-strategy=vector_loop:2048:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-6.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-6.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-6.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-6.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmemcpy-strategy=vector_loop:2048:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-7.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-7.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-pr120683-7.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-pr120683-7.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmemcpy-strategy=vector_loop:2048:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-strategy-12.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-strategy-12.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memcpy-strategy-12.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memcpy-strategy-12.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic -mno-sse" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-1.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-sse -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-11.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-11.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-11.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-11.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-sse -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-12.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-12.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-12.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-12.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mno-sse -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-13.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-13.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-13.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-13.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-14.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-14.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-14.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-14.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-15.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-15.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-15.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-15.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v3 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-16.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-16.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-16.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-16.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-17.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-17.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-17.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-17.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-18.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-18.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-18.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-18.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-19.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-19.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-19.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-19.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-2.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-2.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-2.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v3 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-20.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-21.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-22.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-22.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-22.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-22.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=rep_8byte:8192:align,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-23.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-23.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-23.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-23.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64 -minline-all-stringops -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -fno-pie" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-3.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-3.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-3.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-3.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-4.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-4.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-4.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-4.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-5.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-5.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-5.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-5.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v3 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-6.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-6.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-6.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-6.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-7.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-7.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-7.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-7.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-8.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-8.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-8.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-8.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v3 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-9.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-9.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr120683-9.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr120683-9.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v4 -mmemset-strategy=vector_loop:256:noalign,libcall:-1:noalign -minline-all-stringops" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr70308-1a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr70308-1a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr70308-1a.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr70308-1a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64 -fno-stack-protector" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr70308-1b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr70308-1b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-pr70308-1b.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-pr70308-1b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-skip-if "64b Darwin does not support non-PIC" *-*-darwin* } */
  /* { dg-options "-O2 -march=x86-64 -fomit-frame-pointer -DUSE_SCANF -fno-stack-protector" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-10.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-10.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-10.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-10.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-Os -march=x86-64 -mstringop-strategy=vector_loop" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-13.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-13.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-13.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-13.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-Os -mno-sse -mstringop-strategy=unrolled_loop" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-25.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-25.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-25.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-25.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic -mno-sse" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-28.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-28.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-28.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-28.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic -mno-sse" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-29.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-29.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-29.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-29.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic -mno-sse" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-30.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-30.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/memset-strategy-30.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/memset-strategy-30.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic -mno-sse" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr111673.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr111673.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr111673.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr111673.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-O2 -fdump-rtl-pro_and_epilogue" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr113729-adc-sbb.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr113729-adc-sbb.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr113729-adc-sbb.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr113729-adc-sbb.c	Sun Jun  7 22:32:12 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapx-features=ndd -march=x86-64 -O2" } */
  /* { dg-final { scan-assembler-not "movz"} } */
  
  #define FC(TYPE1, TYPE2, OP_NAME, OP)               \
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapx-features=ndd -march=x86-64 -O2 -mtune-ctrl=enable_ndd_mem" } */
  /* { dg-final { scan-assembler-not "movz"} } */
  
  #define FC(TYPE1, TYPE2, OP_NAME, OP)               \
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr113729.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr113729.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr113729.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr113729.c	Sun Jun  7 22:32:12 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapx-features=ndd -march=x86-64 -O2" } */
  /* { dg-final { scan-assembler-not "movz"} } */
  
  #include <stdint.h>
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-mapx-features=ndd -march=x86-64 -O2 -mtune-ctrl=enable_ndd_mem" } */
  /* { dg-final { scan-assembler-not "movz"} } */
  
  #include <stdint.h>
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-1.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { *-*-linux* && fpic } } } */
  /* { dg-options "-O2 -pg -mno-fentry -fno-pic -fno-shrink-wrap" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-11.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-11.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-11.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-11.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { { *-*-linux* && lp64 } && fpic } } } */
  /* { dg-options "-O2 -mrecord-mcount -mcmodel=large -pg -mno-fentry -fno-pic -fno-shrink-wrap" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^(1|\t?\.)} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-2.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-2.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-2.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { *-*-linux* && fpic } } } */
  /* { dg-options "-O2 -pg -mno-fentry -fpic -fno-shrink-wrap" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-4.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-4.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-4.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-4.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { *-*-linux* && fpic } } } */
  /* { dg-options "-O2 -pg -mno-fentry -mrecord-mcount -fno-pic -fno-shrink-wrap" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^(1|\t?\.)} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-5.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-5.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-5.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-5.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { *-*-linux* && fpic } } } */
  /* { dg-options "-O2 -pg -mrecord-mcount -mno-fentry -fpic -fno-shrink-wrap" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^(1|\t?\.)} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-9.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-9.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr120936-9.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr120936-9.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { { *-*-linux* && lp64 } && fpic } } } */
  /* { dg-options "-O2 -mcmodel=large -pg -mno-fentry -fno-pic -fno-shrink-wrap" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-1a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-1a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-1a.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-1a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-1b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-1b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-1b.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-1b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-2a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-2a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-2a.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-2a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-2b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-2b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-2b.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-2b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-3.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-3.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-3.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-3.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-4a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-4a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-4a.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-4a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-4b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-4b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-4b.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-4b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-5a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-5a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-5a.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-5a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-5b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-5b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-5b.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-5b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-6a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-6a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-6a.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-6a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { *-*-* } } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-6b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-6b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-6b.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-6b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-7.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-7.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122343-7.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122343-7.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -fomit-frame-pointer" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122675-1.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122675-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr122675-1.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr122675-1.c	Sun Jun  7 22:32:12 2026
***************
*** 1,7 ****
  /* Verify that the most likely BB edges are optimized as fallthroughs.  */
  /* { dg-do compile } */
  /* { dg-options "-O1 -fno-pic -march=x86-64 -mtune=generic -mgeneral-regs-only -fomit-frame-pointer" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,6 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr125100-4.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125100-4.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr125100-4.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125100-4.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { { ! ia32 } && fpic } } } */
  /* { dg-options "-O2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr125355-2.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125355-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr125355-2.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125355-2.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune=generic" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr125355.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125355.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr125355.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr125355.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-Os -mtune=generic" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.} } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr79173-13.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr79173-13.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr79173-13.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr79173-13.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR middle-end/79173 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-stack-protector -masm=att -mapxf" } */
  /* { dg-final { scan-assembler-times "addq\t%r\[^\n\r]*, \\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 8\\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 16\\\(%rdi\\\)" 1 { target lp64 } } } */
--- 1,6 ----
  /* PR middle-end/79173 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-stack-protector -masm=att -mapxf -mtune-ctrl=enable_ndd_mem" } */
  /* { dg-final { scan-assembler-times "addq\t%r\[^\n\r]*, \\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 8\\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 16\\\(%rdi\\\)" 1 { target lp64 } } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr79173-14.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr79173-14.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr79173-14.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr79173-14.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR middle-end/79173 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-stack-protector -masm=att -mapxf" } */
  /* { dg-final { scan-assembler-times "addq\t%r\[^\n\r]*, \\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 8\\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 16\\\(%rdi\\\)" 1 { target lp64 } } } */
--- 1,6 ----
  /* PR middle-end/79173 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-stack-protector -masm=att -mapxf -mtune-ctrl=enable_ndd_mem" } */
  /* { dg-final { scan-assembler-times "addq\t%r\[^\n\r]*, \\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 8\\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 16\\\(%rdi\\\)" 1 { target lp64 } } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr79173-15.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr79173-15.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr79173-15.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr79173-15.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR middle-end/79173 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-stack-protector -masm=att -mapxf" } */
  /* { dg-final { scan-assembler-times "addq\t%r\[^\n\r]*, \\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 8\\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 16\\\(%rdi\\\)" 1 { target lp64 } } } */
--- 1,6 ----
  /* PR middle-end/79173 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-stack-protector -masm=att -mapxf -mtune-ctrl=enable_ndd_mem" } */
  /* { dg-final { scan-assembler-times "addq\t%r\[^\n\r]*, \\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 8\\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 16\\\(%rdi\\\)" 1 { target lp64 } } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr79173-16.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr79173-16.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr79173-16.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr79173-16.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* PR middle-end/79173 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-stack-protector -masm=att -mapxf" } */
  /* { dg-final { scan-assembler-times "addq\t%r\[^\n\r]*, \\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 8\\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 16\\\(%rdi\\\)" 1 { target lp64 } } } */
--- 1,6 ----
  /* PR middle-end/79173 */
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -fno-stack-protector -masm=att -mapxf -mtune-ctrl=enable_ndd_mem" } */
  /* { dg-final { scan-assembler-times "addq\t%r\[^\n\r]*, \\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 8\\\(%rdi\\\)" 1 { target lp64 } } } */
  /* { dg-final { scan-assembler-times "adcq\t%r\[^\n\r]*, 16\\\(%rdi\\\)" 1 { target lp64 } } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr82142a.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr82142a.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr82142a.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr82142a.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-options "-O2 -mno-avx -msse2" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr82142b.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr82142b.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr82142b.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr82142b.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile { target ia32 } } */
  /* { dg-options "-O2 -mno-avx -msse2 -mno-stackrealign -fomit-frame-pointer" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr92080-17.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr92080-17.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/pr92080-17.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/pr92080-17.c	Sun Jun  7 22:32:12 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64-v3" } */
- /* { dg-add-options check_function_bodies } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.}  } } */
  
--- 1,5 ----
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/i386/ssse3-pr125611.c gcc-17-20260607/gcc/testsuite/gcc.target/i386/ssse3-pr125611.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/i386/ssse3-pr125611.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/i386/ssse3-pr125611.c	Sun Jun  7 22:32:12 2026
***************
*** 0 ****
--- 1,12 ----
+ /* PR target/125611 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mssse3 -mno-sse4.1" } */
+ 
+ typedef __attribute__((__vector_size__(16))) short V;
+ struct __attribute__((__packed__)) { V v[4]; } *u;
+ 
+ void
+ foo (void)
+ {
+   u->v[2] &= __builtin_ia32_pmulhrsw128 (u->v[0], u->v[1]);
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/powerpc/pr106895-1.c gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/pr106895-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/powerpc/pr106895-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/pr106895-1.c	Sun Jun  7 22:32:12 2026
***************
*** 0 ****
--- 1,16 ----
+ /* PR target/106895 */
+ /* { dg-do assemble } */
+ /* { dg-require-effective-target int128 } */
+ /* { dg-options "-O2 -save-temps" } */
+ 
+ /* Verify the following generates even/odd register pairs.  */
+ 
+ typedef __int128 pti __attribute__((mode(PTI)));
+ 
+ void
+ set128 (pti val, pti *mem)
+ {
+   asm ("stq %1,%0" : "=m" (*mem) : "r" (val));
+ }
+ 
+ /* { dg-final { scan-assembler {\mstq\M} } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/powerpc/pr106895-2.c gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/pr106895-2.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/powerpc/pr106895-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/pr106895-2.c	Sun Jun  7 22:32:12 2026
***************
*** 0 ****
--- 1,24 ----
+ /* PR target/106895 */
+ /* { dg-do run } */
+ /* { dg-require-effective-target int128 } */
+ /* { dg-options "-O2" } */
+ 
+ #include <stdlib.h>
+ 
+ typedef __int128 ti;
+ typedef __int128 pti __attribute__((mode(PTI)));
+ 
+ volatile ti  a = 140;
+ volatile pti b;
+ volatile ti  c;
+ 
+ int main(void)
+ {
+   b = (pti) a;
+   c = (ti) b;
+ 
+   if (c != a)
+     abort();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/powerpc/pr125327.c gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/pr125327.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/powerpc/pr125327.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/powerpc/pr125327.c	Sun Jun  7 22:32:12 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -mcpu=power8 -mno-vsx" } */
+ 
+ typedef double v2df __attribute__ ((vector_size (16)));
+ 
+ /* This is a test for preservation of target-specific options when optimization
+    options are changed.  If the optimize() attribute is not applied correctly,
+    then the values of any target-specific options already set by the target()
+    attribute can be lost.  The vector/scalar (VSX) instruction enablement flag
+    associated with foo() should be preserved when the optimization level is
+    changed from 1 to 2, because neither -mvsx nor -mno-vsx is implied by -O2;
+    however, an unrelated target-specific option, -munroll-only-small-loops, *is*
+    implied by -O2, which requires the function's target option node to be
+    rebuilt.  When that happens, the existing value of the VSX flag must be
+    preserved.
+  */
+ 
+ v2df __attribute__ ((target ("vsx"), optimize("O2")))
+ foo (double a, double b)
+ {
+   return (v2df){a, b};
+ }
+ 
+ /* { dg-final { scan-assembler {\txxpermdi } } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/arch-61.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/arch-61.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/arch-61.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/arch-61.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc_zvfofp8min -mabi=lp64" } */
+ int
+ foo ()
+ {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/pr123313.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/pr123313.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/pr123313.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/pr123313.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=rv64gcb_zicond -mabi=lp64d -mbranch-cost=4" { target rv64 } } */
+ /* { dg-additional-options "-march=rv32gcb_zicond -mabi=ilp32 -mbranch-cost=4" { target rv32 } } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-Os" "-Og" "-Oz" } } */
+ 
+ #define TEST(TYPE, NAME) TYPE f##NAME(TYPE a, TYPE b, TYPE c) { a = -1; if (c < 10) a = b; return a; }
+ 
+ TEST(signed char, sc)
+ TEST(signed short, ss)
+ TEST(signed int, si)
+ TEST(signed long, sl)
+ 
+ /* { dg-final { scan-assembler-times "slti\t" 4 } } */
+ /* { dg-final { scan-assembler-times "addi\t" 4 } } */
+ /* { dg-final { scan-assembler-times "or\t" 4 } } */
+ /* { dg-final { scan-assembler-not "czero" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/pr124009.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/pr124009.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/pr124009.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/pr124009.c	Sun Jun  7 22:32:13 2026
***************
*** 5,11 ****
  int foo(int x, int y) { return (y < x) ? 1 : -1; }
  
  
! /* { dg-final { scan-assembler-times {slli\t} 1 } } */
  /* { dg-final { scan-assembler-times {addi\t} 1 } } */
  /* { dg-final { scan-assembler-not {czero.eqz\t} } } */
  
--- 5,11 ----
  int foo(int x, int y) { return (y < x) ? 1 : -1; }
  
  
! /* { dg-final { scan-assembler-times {(slli|ori)\t} 1 } } */
  /* { dg-final { scan-assembler-times {addi\t} 1 } } */
  /* { dg-final { scan-assembler-not {czero.eqz\t} } } */
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/pr125387.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/pr125387.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/pr125387.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/pr125387.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile { target rv64} } */
+ /* { dg-additional-options "-mtune=tt-ascalon-d8 -march=rv64gc" } 
+ /* { dg-skip-if "" { *-*-* } { "-Os" "-Oz" } } */
+ 
+ long foo1 (long x) { return x / 10000L; }
+ long foo2 (long x) { return x / 30; }
+ 
+ /* { dg-final { scan-assembler-times "mulh" 2 } } */
+ /* { dg-final { scan-assembler-not "\tdiv\t" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-1.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-1.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-1.c	Sun Jun  7 22:32:13 2026
*************** void foo(_Float16 y, int64_t *i64p)
*** 11,15 ****
    asm volatile ("# use %0 %1" : : "vr"(vx), "vr" (vy));
  }
  
! /* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*1,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 1 } } */
! /* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*zero,\s*e64,\s*m1,\s*t[au],\s*m[au]} 1 } } */
--- 11,15 ----
    asm volatile ("# use %0 %1" : : "vr"(vx), "vr" (vy));
  }
  
! /* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*1,\s*e64,\s*m1,\s*t[au],\s*m[au]} 1 } } */
! /* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*1,\s*e16,\s*m1,\s*t[au],\s*m[au]} 1 } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-4.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-4.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-4.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-4.c	Sun Jun  7 22:32:13 2026
*************** void foo(_Float16 y, int16_t z, int64_t
*** 12,16 ****
    asm volatile ("# use %0 %1" : : "vr"(vx), "vr" (vy), "vr" (vz));
  }
  
! /* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*1,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 1 } } */
! /* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*zero,\s*e64,\s*m1,\s*t[au],\s*m[au]} 1 } } */
--- 12,16 ----
    asm volatile ("# use %0 %1" : : "vr"(vx), "vr" (vy), "vr" (vz));
  }
  
! /* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*1,\s*e64,\s*m1,\s*t[au],\s*m[au]} 1 } } */
! /* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*1,\s*e16,\s*m1,\s*t[au],\s*m[au]} 1 } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113248.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113248.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113248.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113248.c	Sun Jun  7 22:32:13 2026
*************** void foo(_Float16 y, int64_t *i64p)
*** 11,15 ****
    asm volatile ("# use %0 %1" : : "vr"(vx), "vr" (vy));
  }
  
! /* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*1,\s*e16,\s*mf4,\s*t[au],\s*m[au]} 1 } } */
! /* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*zero,\s*e64,\s*m1,\s*t[au],\s*m[au]} 1 } } */
--- 11,15 ----
    asm volatile ("# use %0 %1" : : "vr"(vx), "vr" (vy));
  }
  
! /* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*1,\s*e64,\s*m1,\s*t[au],\s*m[au]} 1 } } */
! /* { dg-final { scan-assembler-times {vsetivli\s+zero,\s*1,\s*e16,\s*m1,\s*t[au],\s*m[au]} 1 } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h	Sun Jun  7 22:32:13 2026
*************** sat_u_mul_##T##_fmt_10 (T a, T b)
*** 823,826 ****
--- 823,841 ----
  #define RUN_SAT_U_MUL_FMT_10(T, a, b) sat_u_mul_##T##_fmt_10(a, b)
  #define RUN_SAT_U_MUL_FMT_10_WRAP(T, a, b) RUN_SAT_U_MUL_FMT_10(T, a, b)
  
+ #define DEF_SAT_U_MUL_FMT_11(NT, WT)             \
+ NT __attribute__((noinline))                     \
+ sat_u_mul_##NT##_from_##WT##_fmt_11 (NT a, NT b) \
+ {                                                \
+   WT x = (WT)a * (WT)b;                          \
+   NT max = -1;                                   \
+   bool overflow_p = x >= (WT)(max);              \
+   return -(NT)(overflow_p) | (NT)x;              \
+ }
+ 
+ #define DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT) DEF_SAT_U_MUL_FMT_11(NT, WT)
+ #define RUN_SAT_U_MUL_FMT_11(NT, WT, a, b) \
+   sat_u_mul_##NT##_from_##WT##_fmt_11 (a, b)
+ #define RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, a, b) RUN_SAT_U_MUL_FMT_11(NT, WT, a, b)
+ 
  #endif
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u128.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u128.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u128.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u32.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u32.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u32.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint32_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv32.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv32.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv32.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv64.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv64.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u16-from-u64.rv64.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u128.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u128.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u128.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint32_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv32.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv32.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv32.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint32_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv64.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv64.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u32-from-u64.rv64.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint32_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u64-from-u128.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u64-from-u128.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u64-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u64-from-u128.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint64_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u128.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u128.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u128.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u16.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u16.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u16.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint16_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u32.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u32.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u32.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint32_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv32.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv32.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv32.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv64.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv64.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-12-u8-from-u64.rv64.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u128.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u128.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u128.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u32.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u32.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u32.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint16_t
+ #define WT               uint32_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u64.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u64.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u16-from-u64.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint16_t
+ #define WT               uint64_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u128.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u128.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u128.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint32_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u64.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u64.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u32-from-u64.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint32_t
+ #define WT               uint64_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u64-from-u128.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u64-from-u128.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u64-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u64-from-u128.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint64_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u128.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u128.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u128.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u16.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u16.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u16.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint16_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u32.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u32.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u32.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint32_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u64.c gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u64.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-12-u8-from-u64.c	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint64_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_11_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_11_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c gcc-17-20260607/gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c
*** gcc-17-20260531/gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c	Sun May 31 22:32:11 2026
--- gcc-17-20260607/gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c	Sun Jun  7 22:32:13 2026
***************
*** 3,9 ****
  
  /* Test that GCC follows the SPARC 32-bit psABI with regards to
     structure return checking in a callee. When -mstd-struct-return 
!    is specificed then gcc will emit code to skip the unimp insn. */ 
  
  /* Origin: Carlos O'Donell <carlos@codesourcery.com> */
  /* { dg-do run { target sparc*-*-solaris* sparc*-*-linux* sparc*-*-*bsd* } } */
--- 3,9 ----
  
  /* Test that GCC follows the SPARC 32-bit psABI with regards to
     structure return checking in a callee. When -mstd-struct-return 
!    is specified then gcc will emit code to skip the unimp insn. */ 
  
  /* Origin: Carlos O'Donell <carlos@codesourcery.com> */
  /* { dg-do run { target sparc*-*-solaris* sparc*-*-linux* sparc*-*-*bsd* } } */
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/always_inline_1.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/always_inline_1.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/always_inline_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/always_inline_1.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do compile }
+ ! { dg-options "-O -fdump-tree-optimized" }
+ !
+ ! Verify that !GCC$ ATTRIBUTES always_inline forces inlining: the helper
+ ! procedure is inlined into its caller and no standalone call remains.
+ 
+ subroutine caller(a, n)
+   implicit none
+   integer, intent(in) :: n
+   real, intent(inout) :: a(n)
+   call helper(a, n)
+   call helper(a, n)
+ contains
+   subroutine helper(x, m)
+     implicit none
+     integer, intent(in) :: m
+     real, intent(inout) :: x(m)
+ !GCC$ ATTRIBUTES always_inline :: helper
+     integer :: i
+     do i = 1, m
+       x(i) = x(i) + 1.0
+     end do
+   end subroutine helper
+ end subroutine caller
+ 
+ ! { dg-final { scan-tree-dump-not "helper" "optimized" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/always_inline_2.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/always_inline_2.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/always_inline_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/always_inline_2.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do compile }
+ !
+ ! ALWAYS_INLINE is incompatible with NOINLINE.  Specifying both for the same
+ ! procedure must warn and drop ALWAYS_INLINE, whether they appear in one
+ ! directive or in separate directives.
+ 
+ subroutine foo()
+ !GCC$ ATTRIBUTES always_inline, noinline :: foo  ! { dg-warning "ALWAYS_INLINE. at .1. is incompatible with .NOINLINE." }
+ end subroutine foo
+ 
+ subroutine bar()
+ !GCC$ ATTRIBUTES always_inline :: bar
+ !GCC$ ATTRIBUTES noinline :: bar  ! { dg-warning "ALWAYS_INLINE. at .1. is incompatible with .NOINLINE." }
+ end subroutine bar
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/asan/assumed_rank_26.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/60576
+ !
+ ! Stack buffer overflow when passing an assumed-rank type(T) dummy argument
+ ! to an assumed-rank class(T) dummy argument.  The caller only allocates
+ ! storage for dtype.rank dimensions in the descriptor; generating a full
+ ! GFC_MAX_DIMENSIONS copy caused a stack-buffer-overflow detected by ASan.
+ 
+ implicit none
+ type t
+   integer :: i
+ end type
+ 
+ type(T) :: at(2:3,2:4)
+ integer :: i = 0
+ 
+ call bar(at)
+ if (i /= 2) STOP 1
+ 
+ contains
+   subroutine bar(x)
+     type(t) :: x(..)
+     if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) STOP 2
+     if (size(x) /= 6) STOP 3
+     if (size(x,1) /= 2 .or. size(x,2) /= 3) STOP 4
+     if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) STOP 5
+     i = i + 1
+     call foo(x)
+   end subroutine
+   subroutine foo(x)
+     class(t) :: x(..)
+     if (lbound(x,1) /= 1 .or. lbound(x,2) /= 1) STOP 6
+     if (size(x) /= 6) STOP 7
+     if (size(x,1) /= 2 .or. size(x,2) /= 3) STOP 8
+     if (ubound(x,1) /= 2 .or. ubound(x,2) /= 3) STOP 9
+     i = i + 1
+   end subroutine
+ end
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/associate_80.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_80.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/associate_80.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_80.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,83 ----
+ ! { dg-do run }
+ !
+ ! Test ASSOCIATE selectors that are type-bound user-defined operators (UDOs),
+ ! including inherited operators and nested expressions such as
+ ! .div. (.grad. x).  PR fortran/125515
+ !
+ module associate_80_m
+   implicit none
+ 
+   type :: scalar_t
+     real :: val
+   contains
+     generic :: operator(.grad.) => do_grad
+     procedure, private :: do_grad
+     generic :: operator(.sq.)   => do_sq
+     procedure, private :: do_sq
+     generic :: get => get_val
+     procedure :: get_val
+   end type
+ 
+   type, extends(scalar_t) :: vector_t
+   contains
+     generic :: operator(.div.) => do_div
+     procedure, private :: do_div
+   end type
+ 
+ contains
+ 
+   ! .grad. on scalar_t -> vector_t
+   pure function do_grad (self) result (r)
+     class(scalar_t), intent(in) :: self
+     type(vector_t) :: r
+     r%val = self%val * 2.0
+   end function
+ 
+   ! .sq. on scalar_t -> scalar_t
+   pure function do_sq (self) result (r)
+     class(scalar_t), intent(in) :: self
+     type(scalar_t) :: r
+     r%val = self%val * self%val
+   end function
+ 
+   ! .div. on vector_t -> scalar_t
+   pure function do_div (self) result (r)
+     class(vector_t), intent(in) :: self
+     type(scalar_t) :: r
+     r%val = self%val / 2.0
+   end function
+ 
+   pure function get_val (self) result (r)
+     class(scalar_t), intent(in) :: self
+     real :: r
+     r = self%val
+   end function
+ 
+ end module associate_80_m
+ 
+ program associate_80
+   use associate_80_m
+   implicit none
+ 
+   type(scalar_t) :: s
+   s%val = 3.0
+ 
+   ! Case 1: direct type-bound UDO as ASSOCIATE selector
+   associate (g => .grad. s)
+     if (abs (g%val - 6.0) > 1.0e-6) stop 1
+     if (abs (g%get () - 6.0) > 1.0e-6) stop 2
+   end associate
+ 
+   ! Case 2: inherited UDO (.sq. defined on scalar_t, used via scalar_t)
+   associate (q => .sq. s)
+     if (abs (q%val - 9.0) > 1.0e-6) stop 3
+   end associate
+ 
+   ! Case 3: nested UDOs — .div. (.grad. s)
+   ! .grad. s gives vector_t with val=6, .div. gives scalar_t with val=3
+   associate (r => .div. (.grad. s))
+     if (abs (r%val - 3.0) > 1.0e-6) stop 4
+     if (abs (r%get () - 3.0) > 1.0e-6) stop 5
+   end associate
+ 
+ end program associate_80
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/associate_infer_program_type.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_infer_program_type.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/associate_infer_program_type.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/associate_infer_program_type.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do compile }
+ ! { dg-options "" }
+ !
+ ! PR fortran/125531
+ ! ASSOCIATE with a contained-function selector, using the result's data
+ ! components as arguments to another function (also from CONTAINS), where
+ ! the result type is defined in program scope.  This used to fail with
+ ! "Invalid association target".
+ !
+ program test
+   implicit none
+ 
+   type :: args_t
+     integer :: order_ = 4
+     integer :: cells_ = 20
+     double precision :: x_min_ = 0d0, x_max_ = 1d0
+   end type
+ 
+   associate(args => get_args())
+     associate(result => compute(args%order_, args%cells_))
+       print *, result
+     end associate
+   end associate
+ 
+ contains
+ 
+   function get_args() result(r)
+     type(args_t) :: r
+     r%order_ = 2
+     r%cells_ = 10
+   end function
+ 
+   function compute(order, cells) result(r)
+     integer, intent(in) :: order, cells
+     integer :: r
+     r = order * cells
+   end function
+ 
+ end program
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/do_concurrent_assoc_default_none.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f2018" }
+ !
+ ! PR fortran/125529
+ ! DO CONCURRENT with inline type-spec iterators and DEFAULT(NONE) inside an
+ ! ASSOCIATE block used to ICE (segfault in check_default_none_expr).  The
+ ! bug was that sym->ns->code was used instead of d->code to locate the
+ ! forall_iterator list; for symbols in an ASSOCIATE or enclosing procedure
+ ! namespace the wrong union member was read, giving a garbage pointer.
+ ! Additionally, shadow iterators store their name with a leading underscore
+ ! internally, so the comparison against user-visible names must strip it.
+ 
+ subroutine test_associate_default_none (a, b)
+   implicit none
+   integer, intent(in)  :: a(10,10)
+   integer, intent(out) :: b(10,10)
+   do concurrent (integer :: i = 1:10, j = 1:10) &
+       default(none) shared(a, b)
+     associate (tmp => a(i,j))
+       b(i,j) = tmp + 1
+     end associate
+   end do
+ end subroutine
+ 
+ ! Verify that a genuinely missing variable still gets an error.
+ subroutine test_missing_var (a, b, c)
+   implicit none
+   integer, intent(in)  :: a(10,10), c
+   integer, intent(out) :: b(10,10)
+   do concurrent (integer :: i = 1:10, j = 1:10) &
+       default(none) shared(a, b)
+     ! { dg-error "not specified in a locality spec" "" { target *-*-* } .-1 }
+     b(i,j) = a(i,j) + c   ! { dg-error "not specified in a locality spec" }
+   end do
+ end subroutine
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/do_concurrent_assoc_iter_1.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do run }
+ ! PR fortran/125532
+ ! DO CONCURRENT with inline type-spec iterator used inside an ASSOCIATE body
+ ! produced wrong values: replace_in_code_recursive lacked an EXEC_BLOCK case
+ ! so shadow iterator references were not replaced.
+ program do_concurrent_assoc_iter_1
+   implicit none
+   integer :: a(5), b(5)
+   a = 0
+   b = 0
+   ! Iterator k used in the ASSOCIATE selector and in the body.
+   do concurrent (integer :: k = 1:5)
+     associate (sq => k * k)
+       a(k) = sq
+     end associate
+   end do
+   ! Iterator k used only inside the body (not in selector).
+   do concurrent (integer :: k = 1:5)
+     associate (v => k)
+       b(v) = k + 10
+     end associate
+   end do
+   if (any (a /= [1, 4, 9, 16, 25])) stop 1
+   if (any (b /= [11, 12, 13, 14, 15])) stop 2
+ end program
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/generic_37.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/generic_37.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/generic_37.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/generic_37.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,70 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/125481
+ !
+ ! Wrong generic resolution when actual argument is a procedure pointer and
+ ! the generic has two specific procedures -- one with a procedure-pointer
+ ! dummy argument and one with a REAL(8) dummy argument.  gfortran was
+ ! selecting the REAL(8) specific (F23:15.5.2.5, para 2 violation).
+ 
+ module m
+   implicit none
+ 
+   abstract interface
+     pure function init_i (x) result (y)
+       real (8), intent (in) :: x(:)
+       real (8), allocatable :: y(:)
+     end function
+   end interface
+ 
+   type :: t
+     real (8), allocatable :: vals(:)
+   end type
+ 
+   interface make_t
+     module procedure make_t_from_func   ! first dummy: procedure pointer
+     module procedure make_t_constant    ! first dummy: real(8)
+   end interface
+ 
+ contains
+ 
+   function make_t_from_func (f, n) result (r)
+     procedure (init_i), pointer :: f
+     integer, intent (in) :: n
+     type (t) :: r
+     integer :: i
+     r%vals = f ([(real (i, 8), i = 1, n)])
+   end function
+ 
+   function make_t_constant (c, n) result (r)
+     real (8), intent (in) :: c
+     integer, intent (in) :: n
+     type (t) :: r
+     integer :: i
+     r%vals = [(c, i = 1, n)]
+   end function
+ 
+   pure function identity (x) result (y)
+     real (8), intent (in) :: x(:)
+     real (8), allocatable :: y(:)
+     y = x
+   end function
+ 
+ end module m
+ 
+ program test
+   use m
+   implicit none
+   procedure (init_i), pointer :: f => identity
+   type (t) :: x
+   integer :: i
+ 
+   x = make_t (f, 4)
+   do i = 1, 4
+     if (abs (x%vals(i) - real (i, 8)) > epsilon (x%vals(i))) STOP 1
+   end do
+ 
+   x = make_t (42.0d0, 4)
+   if (any (abs (x%vals - 42.0d0) > epsilon (x%vals(1)))) stop 2
+ 
+ end program test
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/generic_38.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/generic_38.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/generic_38.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/generic_38.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,44 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/125481
+ !
+ ! Verify that passing a procedure pointer actual argument to a plain
+ ! data-object dummy argument is rejected with a clear diagnostic
+ ! (F23:15.5.2.5, para 2).
+ 
+ module m_err
+   implicit none
+ 
+   abstract interface
+     function func_t (x) result (y)
+       real(8), intent(in) :: x
+       real(8) :: y
+     end function
+   end interface
+ 
+   type :: t
+     procedure(func_t), pointer, nopass :: fp => null()
+   end type
+ 
+ contains
+ 
+   subroutine takes_data (x)
+     real(8), intent(in) :: x
+     print *, x
+   end subroutine
+ 
+ end module m_err
+ 
+ program test
+   use m_err
+   implicit none
+   procedure(func_t), pointer :: f => null()
+   type(t) :: obj
+ 
+   ! Procedure pointer variable passed to a data-object dummy.
+   call takes_data (f)       ! { dg-error "cannot be passed to data-object dummy argument" }
+ 
+   ! Procedure pointer component passed to a data-object dummy.
+   call takes_data (obj%fp)  ! { dg-error "cannot be passed to data-object dummy argument" }
+ 
+ end program test
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/allocate-14.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/allocate-14.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/allocate-14.f90	Sun May 31 22:32:12 2026
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/allocate-14.f90	Sun Jun  7 22:32:13 2026
*************** subroutine common
*** 79,85 ****
    use m
    integer :: a,b,c(5)
    common /my/ a,b,c
!   !$omp allocate(b) allocator(omp_cgroup_mem_alloc)  ! { dg-error "'b' at .1. is part of the common block '/my/' and may only be specificed implicitly via the named common block" }
  end
  
  subroutine c_and_func_ptrs
--- 79,85 ----
    use m
    integer :: a,b,c(5)
    common /my/ a,b,c
!   !$omp allocate(b) allocator(omp_cgroup_mem_alloc)  ! { dg-error "'b' at .1. is part of the common block '/my/' and may only be specified implicitly via the named common block" }
  end
  
  subroutine c_and_func_ptrs
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/allocate-6.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/allocate-6.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/allocate-6.f90	Sun May 31 22:32:12 2026
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/allocate-6.f90	Sun Jun  7 22:32:13 2026
*************** common /com2/ y,z
*** 68,74 ****
  integer, allocatable :: alloc
  integer, pointer :: ptr
  
! !$omp allocate(q) ! { dg-error "'q' at .1. is part of the common block '/com1/' and may only be specificed implicitly via the named common block" }
  
  !$omp allocate(d(:)) ! { dg-error "Unexpected expression as list item at .1. in ALLOCATE directive" }
  !$omp allocate(a) align(4), align(4)  ! { dg-error "Duplicated 'align' clause" }
--- 68,74 ----
  integer, allocatable :: alloc
  integer, pointer :: ptr
  
! !$omp allocate(q) ! { dg-error "'q' at .1. is part of the common block '/com1/' and may only be specified implicitly via the named common block" }
  
  !$omp allocate(d(:)) ! { dg-error "Unexpected expression as list item at .1. in ALLOCATE directive" }
  !$omp allocate(a) align(4), align(4)  ! { dg-error "Duplicated 'align' clause" }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/allocate-7.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/allocate-7.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/allocate-7.f90	Sun May 31 22:32:12 2026
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/allocate-7.f90	Sun Jun  7 22:32:13 2026
*************** integer, parameter :: prm=5
*** 52,58 ****
  !$omp allocate(used) allocator(omp_pteam_mem_alloc)  ! { dg-error "Argument 'used' at .1. to declarative !.OMP ALLOCATE shall be in the same scope as the variable declaration" }
  !$omp allocate(n) allocator(omp_pteam_mem_alloc) ! { dg-error "Unexpected dummy argument 'n' as argument at .1. to declarative !.OMP ALLOCATE" }
  
! !$omp allocate (x) align(128) ! { dg-error "'x' at .1. is part of the common block '/com1/' and may only be specificed implicitly via the named common block" }
  
  !$omp allocate (a, b, a) allocator (omp_pteam_mem_alloc) ! { dg-error "Duplicated variable 'a' in !.OMP ALLOCATE" }
  contains
--- 52,58 ----
  !$omp allocate(used) allocator(omp_pteam_mem_alloc)  ! { dg-error "Argument 'used' at .1. to declarative !.OMP ALLOCATE shall be in the same scope as the variable declaration" }
  !$omp allocate(n) allocator(omp_pteam_mem_alloc) ! { dg-error "Unexpected dummy argument 'n' as argument at .1. to declarative !.OMP ALLOCATE" }
  
! !$omp allocate (x) align(128) ! { dg-error "'x' at .1. is part of the common block '/com1/' and may only be specified implicitly via the named common block" }
  
  !$omp allocate (a, b, a) allocator (omp_pteam_mem_alloc) ! { dg-error "Duplicated variable 'a' in !.OMP ALLOCATE" }
  contains
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-1.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-1.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-1.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp" }
+ 
+ program main
+   implicit none
+ 
+   integer, parameter :: DIM1 = 17
+   integer, parameter :: DIM2 = 39
+   type :: array_ptr
+     integer, pointer :: ptr(:)
+   end type
+   
+   type (array_ptr) :: x(DIM1), y(DIM1)
+ 
+   !$omp target map (iterator(i=1:DIM1), to: x(i)%ptr(:))
+   !$omp end target
+ 
+   !$omp target map (iterator(i=1:DIM1), to: x(i)%ptr(:), y(i)%ptr(:))
+   !$omp end target
+ 
+   !$omp target map (iterator(i=1:DIM1), to: x(i)%ptr(:) + 3) ! { dg-error "Syntax error in OpenMP variable list at .1." }
+   !$omp end target ! { dg-error "Unexpected \\\!\\\$OMP END TARGET statement at .1." }
+ 
+   !$omp target map(iterator(i=1:DIM1), iterator(j=1:DIM2), to: x(i)%ptr(j)) ! { dg-error "too many 'iterator' modifiers at .1." }
+   !$omp end target ! { dg-error "Unexpected \\\!\\\$OMP END TARGET statement at .1." }
+ end program
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-2.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-2.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-2.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -fdump-tree-gimple" }
+ 
+ program main
+   implicit none
+ 
+   integer, parameter :: DIM = 40
+   type :: array_ptr
+     integer, pointer :: ptr(:)
+   end type
+   
+   type (array_ptr) :: x(DIM), y(DIM), z(DIM)
+ 
+   !$omp target map(iterator(i=1:10), to: x)
+     ! Add a reference to x to ensure that the 'to' clause does not get dropped.
+     x(1)%ptr(1) = 0
+   !$omp end target
+ 
+   !$omp target map(iterator(i2=1:10, j2=1:20), from: x(i2))
+   !$omp end target
+ 
+   !$omp target map(iterator(i3=1:10, j3=1:20, k3=1:30), to: x(i3+j3), y(j3+k3), z(k3+i3))
+   !$omp end target
+ end program
+ 
+ ! { dg-final { scan-tree-dump-times "map\\\(to:x" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "map\\\(iterator\\\(integer\\\(kind=4\\\) i2=1:10:1, loop_label=\[^\\\)\]+\\\):from:" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "map\\\(iterator\\\(integer\\\(kind=4\\\) j3=1:20:1, integer\\\(kind=4\\\) i3=1:10:1, loop_label=\[^\\\)\]+\\\):to:" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "map\\\(iterator\\\(integer\\\(kind=4\\\) k3=1:30:1, integer\\\(kind=4\\\) j3=1:20:1, loop_label=\[^\\\)\]+\\\):to:" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "map\\\(iterator\\\(integer\\\(kind=4\\\) k3=1:30:1, integer\\\(kind=4\\\) i3=1:10:1, loop_label=\[^\\\)\]+\\\):to:" 1 "gimple" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-3.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-3.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-3.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,24 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -fdump-tree-gimple" }
+ 
+ program main
+   implicit none
+ 
+   integer, parameter :: DIM1 = 17
+   integer, parameter :: DIM2 = 27
+   type :: ptr_t
+     integer, pointer :: ptr(:)
+   end type
+   
+   type (ptr_t) :: x(DIM1), y(DIM2)
+ 
+   !$omp target map(iterator(i=1:DIM1), to: x(i)%ptr(:)) map(iterator(i=1:DIM2), from: y(i)%ptr(:))
+   !$omp end target
+ end program
+ 
+ ! { dg-final { scan-tree-dump-times "if \\(i <= 17\\) goto <D\\\.\[0-9\]+>; else goto <D\\\.\[0-9\]+>;" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "if \\(i <= 27\\) goto <D\\\.\[0-9\]+>; else goto <D\\\.\[0-9\]+>;" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "map\\(iterator\\(integer\\(kind=4\\) i=1:17:1, loop_label=<D\\\.\[0-9\]+>, elems=omp_iter_data\\\.\[0-9\]+, index=D\\.\[0-9\]+\\):to:MEM <\[^>\]+> \\\[\\\(\[^ \]+ \\\*\\\)D\\\.\[0-9\]+\\\]" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "map\\(iterator\\(integer\\(kind=4\\) i=1:27:1, loop_label=<D\\\.\[0-9\]+>, elems=omp_iter_data\\\.\[0-9\]+, index=D\\.\[0-9\]+\\):from:MEM <\[^>\]+> \\\[\\\(\[^ \]+ \\\*\\\)D\\\.\[0-9\]+\\\]" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "map\\(iterator\\(integer\\(kind=4\\) i=1:17:1, loop_label=<D\\\.\[0-9\]+>, elems=omp_iter_data\\\.\[0-9\]+, index=D\\.\[0-9\]+\\):attach:x\\\[D\\\.\[0-9\]+\\\]\.ptr\.data" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "map\\(iterator\\(integer\\(kind=4\\) i=1:27:1, loop_label=<D\\\.\[0-9\]+>, elems=omp_iter_data\\\.\[0-9\]+, index=D\\.\[0-9\]+\\):attach:y\\\[D\\\.\[0-9\]+\\\]\.ptr\.data" 1 "gimple" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-4.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-4.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-4.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-4.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -fdump-tree-gimple" }
+ 
+ module m
+   !$omp declare target (baz)
+   interface
+     subroutine baz (x, p)
+       integer, intent(in) :: x
+       integer, pointer :: p(:)
+     end subroutine
+     integer function bar (x, i)
+       integer :: x, i
+     end function
+   end interface
+ contains
+   subroutine foo (x, p)
+     integer :: x
+     integer, pointer :: p(:)
+ 
+     !$omp target map (iterator (i=1:4), to: p(bar (x, i)))
+       call baz (x, p)
+     !$omp end target
+   end subroutine
+ end module
+ 
+ ! { dg-final { scan-tree-dump "firstprivate\\\(x\\\)" "gimple" } }
+ ! { dg-final { scan-tree-dump-times "bar \\\(x, &" 2 "gimple" } }
+ ! { dg-final { scan-tree-dump "map\\\(iterator\\\(integer\\\(kind=4\\\) i=1:4:1, loop_label=" "gimple" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-6.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-6.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-6.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-map-iterators-6.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -fdump-tree-omplower" }
+ 
+ module m
+   implicit none
+   integer, parameter :: DIM = 17
+   type :: array_ptr
+     integer, pointer :: ptr(:)
+   end type
+ contains
+   subroutine f(x)
+     type (array_ptr) :: x(DIM)
+     integer :: i
+ 
+     !$omp target data map(iterator(it = 1:DIM), tofrom: x(it)%ptr(:))
+       do i = 1, DIM
+         x(i)%ptr(1) = i
+       end do
+     !$omp end target data
+   end subroutine
+ end module
+ 
+ ! { dg-final { scan-tree-dump "if \\(it <= 17\\) goto <D\\\.\[0-9\]+>; else goto <D\\\.\[0-9\]+>;" "omplower" } }
+ ! { dg-final { scan-tree-dump "map\\(iterator\\(integer\\(kind=\[0-9\]+\\) it=1:17:1, loop_label=<D\\\.\[0-9\]+>, elems=omp_iter_data\\\.\[0-9\]+, index=D\\\.\[0-9\]+\\):to:\\(\\\*x\\\.\[0-9\]+\\)\\\[D\\\.\[0-9\]+\\\]\\\.ptr" "omplower" } }
+ ! { dg-final { scan-tree-dump "map\\(iterator\\(integer\\(kind=\[0-9\]+\\) it=1:17:1, loop_label=<D\\\.\[0-9\]+>, elems=omp_iter_data\\\.\[0-9\]+, index=D\\\.\[0-9\]+\\):tofrom:MEM" "omplower" } }
+ ! { dg-final { scan-tree-dump "map\\(iterator\\(integer\\(kind=\[0-9\]+\\) it=1:17:1, loop_label=<D\\\.\[0-9\]+>, elems=omp_iter_data\\\.\[0-9\]+, index=D\\\.\[0-9\]+\\):attach:\\(\\\*x\\\.\[0-9\]+\\)\\\[D\\\.\[0-9\]+\\\]\\\.ptr.data" "omplower" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-1.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-1.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-1.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp" }
+ 
+ program test
+   implicit none
+ 
+   integer, parameter :: DIM1 = 17
+   integer, parameter :: DIM2 = 39
+ 
+   type :: array_ptr
+     integer, pointer :: ptr(:)
+   end type
+ 
+   type (array_ptr) :: x(DIM1), y(DIM1)
+ 
+   !$omp target update to (iterator(i=1:DIM1): x(i)%ptr(:))
+ 
+   !$omp target update to (iterator(i=1:DIM1): x(i)%ptr(:DIM2), y(i)%ptr(:))
+ 
+   !$omp target update to (iterator(i=1:DIM1), present: x(i)%ptr(:))
+ 
+   !$omp target update to (, iterator(i=1:DIM1), present: x(i)%ptr(:))  ! { dg-error "Syntax error in OpenMP variable list at .1." }
+ 
+   !$omp target update to (iterator(i=1:DIM1) present: x(i)%ptr(:))  ! { dg-error "Expected ',' or ':' after clause modifier at .1." }
+ 
+   !$omp target update to (iterator(i=1:DIM1), present x(i)%ptr(:))  ! { dg-error "Expected ',' or ':' after clause modifier at .1." }
+ 
+   !$omp target update to (iterator(i=1:DIM1), present, : x(i)%ptr(:))  ! { dg-error "Expected clause modifier at .1." }
+ 
+   !$omp target update to (iterator(i=1:DIM1), iterator(j=i:DIM2): x(i)%ptr(j)) ! { dg-error "Too many 'iterator' modifiers at .1." }
+ 
+   !$omp target update to (iterator(i=1:DIM1), something: x(i, j)) ! { dg-error "Expected clause modifier at .1." }
+ end program
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-2.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-2.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-2.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -fdump-tree-gimple" }
+ 
+ program test
+   implicit none
+ 
+   integer, parameter :: DIM1 = 100
+ 
+   type :: array_ptr
+     integer, pointer :: ptr(:)
+   end type
+ 
+   type (array_ptr) :: x(DIM1), y(DIM1), z(DIM1)
+ 
+   !$omp target update to(iterator(i=1:10): x)
+   !$omp target update from(iterator(i2=1:10, j2=1:20): x(i2))
+   !$omp target update to(iterator(i3=1:10, j3=1:20, k3=1:30): x(i3+j3), y(j3+k3), z(k3+i3))
+ end program
+ 
+ ! { dg-final { scan-tree-dump-times "update to\\\(x " 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "update from\\\(iterator\\\(integer\\\(kind=4\\\) i2=1:10:1, loop_label=" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "to\\\(iterator\\\(integer\\\(kind=4\\\) j3=1:20:1, integer\\\(kind=4\\\) i3=1:10:1, loop_label=" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "to\\\(iterator\\\(integer\\\(kind=4\\\) k3=1:30:1, integer\\\(kind=4\\\) j3=1:20:1, loop_label=" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "to\\\(iterator\\\(integer\\\(kind=4\\\) k3=1:30:1, integer\\\(kind=4\\\) i3=1:10:1, loop_label=" 1 "gimple" } }
+  
\ No newline at end of file
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-3.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-3.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/gomp/target-update-iterators-3.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,23 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp -fdump-tree-gimple" }
+ 
+ program test
+   implicit none
+ 
+   integer, parameter :: DIM1 = 17
+   integer, parameter :: DIM2 = 39
+ 
+   type :: array_ptr
+     integer, pointer :: ptr(:)
+   end type
+ 
+   type (array_ptr) :: x(DIM1, DIM2), y(DIM1, DIM2), z(DIM1)
+ 
+   !$omp target update to (iterator(i=1:DIM1, j=1:DIM2): x(i, j)%ptr(:), y(i, j)%ptr(:))
+   !$omp target update from (iterator(i=1:DIM1): z(i)%ptr(:))
+ end program
+ 
+ ! { dg-final { scan-tree-dump-times "if \\(i <= 17\\) goto <D\\\.\[0-9\]+>; else goto <D\\\.\[0-9\]+>;" 2 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "if \\(j <= 39\\) goto <D\\\.\[0-9\]+>; else goto <D\\\.\[0-9\]+>;" 1 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "to\\(iterator\\(integer\\(kind=4\\) j=1:39:1, integer\\(kind=4\\) i=1:17:1, loop_label=<D\\\.\[0-9\]+>, elems=omp_iter_data\\\.\[0-9\]+, index=D\\\.\[0-9\]+\\):MEM <\[^>\]+> \\\[\\\(\[^ \]+ \\\*\\\)D\\\.\[0-9\]+\\\]" 2 "gimple" } }
+ ! { dg-final { scan-tree-dump-times "from\\(iterator\\(integer\\(kind=4\\) i=1:17:1, loop_label=<D\\\.\[0-9\]+>, elems=omp_iter_data\\\.\[0-9\]+, index=D\\\.\[0-9\]+\\):MEM <\[^>\]+> \\\[\\\(\[^ \]+ \\\*\\\)D\\\.\[0-9\]+\\\]" 1 "gimple" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/implied_do_alloc_comp_1.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do run }
+ ! Test that a nested implied-do array constructor with a derived-type
+ ! constructor whose argument uses an outer loop variable produces correct
+ ! results when the derived type has an allocatable component.
+ !
+ ! PR fortran/125535
+ 
+ module m
+   implicit none
+   type :: t
+     real, allocatable :: v(:)
+   end type
+ contains
+   pure function make(x) result(r)
+     real, intent(in) :: x(:)
+     type(t) :: r
+     r%v = x
+   end function
+ end module
+ 
+ program implied_do_alloc_comp
+   use m
+   implicit none
+   integer, parameter :: n=3, k=2
+   type(t), allocatable :: a(:,:)
+   real :: h(k, n)
+   integer :: i, j
+ 
+   h(1,:) = [10., 20., 30.]
+   h(2,:) = [11., 21., 31.]
+ 
+   ! Nested implied-do where inner DT constructor uses outer variable i.
+   ! Without the fix this produces heap-use-after-free and wrong values.
+   a = reshape([([(make(h(:,i)), j=1,1)], i=1,n)], [1,n])
+ 
+   if (any(a(1,1)%v /= h(:,1))) stop 1
+   if (any(a(1,2)%v /= h(:,2))) stop 2
+   if (any(a(1,3)%v /= h(:,3))) stop 3
+ end program
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/inline_1.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/inline_1.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/inline_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/inline_1.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,27 ----
+ ! { dg-do compile }
+ ! { dg-options "-O2 -fno-inline-small-functions -fno-inline-functions -fno-inline-functions-called-once -fdump-tree-optimized" }
+ !
+ ! With all automatic inlining disabled the helper procedure would not be
+ ! inlined, but the INLINE attribute marks it as declared-inline, so it is
+ ! inlined anyway and no standalone call remains.
+ 
+ subroutine caller(a, n)
+   implicit none
+   integer, intent(in) :: n
+   real, intent(inout) :: a(n)
+   call helper(a, n)
+   call helper(a, n)
+ contains
+   subroutine helper(x, m)
+     implicit none
+     integer, intent(in) :: m
+     real, intent(inout) :: x(m)
+ !GCC$ ATTRIBUTES inline :: helper
+     integer :: i
+     do i = 1, m
+       x(i) = x(i) + 1.0
+     end do
+   end subroutine helper
+ end subroutine caller
+ 
+ ! { dg-final { scan-tree-dump-not "helper" "optimized" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/inline_2.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/inline_2.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/inline_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/inline_2.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do compile }
+ !
+ ! INLINE is incompatible with NOINLINE.  Specifying both for the same
+ ! procedure must warn and drop INLINE, whether they appear in one directive
+ ! or in separate directives.
+ 
+ subroutine foo()
+ !GCC$ ATTRIBUTES inline, noinline :: foo  ! { dg-warning "INLINE. at .1. is incompatible with .NOINLINE." }
+ end subroutine foo
+ 
+ subroutine bar()
+ !GCC$ ATTRIBUTES inline :: bar
+ !GCC$ ATTRIBUTES noinline :: bar  ! { dg-warning "INLINE. at .1. is incompatible with .NOINLINE." }
+ end subroutine bar
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/loc_3.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/loc_3.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/loc_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/loc_3.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,36 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-O1" }
+ !
+ ! PR fortran/125606
+ !
+ ! Derived from Fujitsu testsuite
+ ! Reported by David Binderman
+ 
+ module m
+   implicit none
+   type ty
+      class(*), allocatable :: c1(:)
+   end type ty
+   type tt
+      class(*), allocatable :: node1(:)
+   end type tt
+   type,extends(tt)::tte
+      class(*), allocatable :: c2e(:)
+   end type tte
+ contains
+   subroutine put_addr
+     class(*), allocatable :: t(:)
+     integer :: unit
+     select type (t)
+     class is (tt)
+        select type (p=>t(2)%node1)
+        class is (ty)
+           write (unit) loc(p(2)%c1)
+        end select
+        select type (t)
+        type is (tte)
+           write (7) loc(t(2)%c2e)
+        end select
+     end select
+   end subroutine put_addr
+ end module m
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/pdt_59.f03 gcc-17-20260607/gcc/testsuite/gfortran.dg/pdt_59.f03
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/pdt_59.f03	Sun May 31 22:32:12 2026
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/pdt_59.f03	Sun Jun  7 22:32:13 2026
*************** end module
*** 30,36 ****
  
  submodule(input_output_pair_m) input_output_pair_smod
  contains
!   function default_real_construct()
     type(mini_batch_t) default_real_construct
     allocate (default_real_construct%input_output_pairs_(2))
     default_real_construct%input_output_pairs_%a = [42,43]
--- 30,36 ----
  
  submodule(input_output_pair_m) input_output_pair_smod
  contains
!   module function default_real_construct()
     type(mini_batch_t) default_real_construct
     allocate (default_real_construct%input_output_pairs_(2))
     default_real_construct%input_output_pairs_%a = [42,43]
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/pdt_array_alloc_1.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do run }
+ ! Test that allocating an array of parameterized derived type initializes
+ ! the allocatable components of ALL elements, not just element 0.
+ ! PR fortran/125534
+ 
+ module m
+   implicit none
+   integer, parameter :: default_real = kind(0.)
+   type :: tensor_t(k)
+     integer, kind :: k = default_real
+     real(k), allocatable :: values_(:)
+   end type
+ end module
+ 
+ program pdt_array_alloc
+   use m
+   implicit none
+   integer, parameter :: n = 5
+   type(tensor_t), allocatable :: a(:)
+   integer :: i
+ 
+   allocate(a(n))
+   ! Without the fix, only a(1)%values_ was initialized (nullified);
+   ! a(2)..a(n) had garbage pointers and the assignment below would crash.
+   do i = 1, n
+     a(i)%values_ = [real(i), real(i*2)]
+   end do
+ 
+   if (any(a(3)%values_ /= [3., 6.])) stop 1
+ end program
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/pr105594.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/pr105594.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/pr105594.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/pr105594.f90	Sun Jun  7 22:32:13 2026
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do compile }
+ ! { dg-options "-Wuse-without-only" }
+ ! PR105594: Spurious warning when compiled with -Wuse-without-only
+ !
+ ! Contributed by Brad Richardson  <everythingfunctional@protonmail.com>
+ !
+ module foo_m
+     interface
+         module subroutine foo
+         end subroutine
+     end interface
+ end module
+ 
+ submodule (foo_m) foo_s
+ contains
+     module procedure foo
+     end procedure
+ end submodule
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/pr87907.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/pr87907.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/pr87907.f90	Sun May 31 22:32:12 2026
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/pr87907.f90	Sun Jun  7 22:32:14 2026
*************** end
*** 12,18 ****
  
  submodule(m) m2
     contains
!       subroutine g(x) ! { dg-error "FUNCTION attribute conflicts with SUBROUTINE" }
        end
  end
  
--- 12,18 ----
  
  submodule(m) m2
     contains
!       module subroutine g(x) ! { dg-error "FUNCTION attribute conflicts with SUBROUTINE" }
        end
  end
  
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/pr93461.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/pr93461.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/pr93461.f90	Sun May 31 22:32:12 2026
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/pr93461.f90	Sun Jun  7 22:32:14 2026
*************** end module aModuleWithAnAllowedName
*** 9,15 ****
  
  submodule (aModuleWithAnAllowedName) aSubmoduleWithAVeryVeryVeryLongButEntirelyLegalName
  contains
!   subroutine aShortName()
      call aSubroutineWithAVeryLongNameThatWillCauseAProblem()
      call aSubroutineWithAVeryLongNameThatWillCauseAProblemAlso()
    end subroutine aShortName
--- 9,15 ----
  
  submodule (aModuleWithAnAllowedName) aSubmoduleWithAVeryVeryVeryLongButEntirelyLegalName
  contains
!   module subroutine aShortName()
      call aSubroutineWithAVeryLongNameThatWillCauseAProblem()
      call aSubroutineWithAVeryLongNameThatWillCauseAProblemAlso()
    end subroutine aShortName
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_10.f08 gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_10.f08
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_10.f08	Sun May 31 22:32:12 2026
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_10.f08	Sun Jun  7 22:32:14 2026
*************** submodule (error_mod) error_impl_mod
*** 99,112 ****
    use const_mod
  contains
    ! checks whether an error has occurred on one of the processes in the execution pool
!   subroutine errcomm(ictxt, err)
      integer(mpik_), intent(in)   :: ictxt
      integer(ipk_), intent(inout):: err
  
  
    end subroutine errcomm
  
!   subroutine ser_error_handler(err_act)
      implicit none
      integer(ipk_), intent(inout) ::  err_act
  
--- 99,112 ----
    use const_mod
  contains
    ! checks whether an error has occurred on one of the processes in the execution pool
!   module subroutine errcomm(ictxt, err)
      integer(mpik_), intent(in)   :: ictxt
      integer(ipk_), intent(inout):: err
  
  
    end subroutine errcomm
  
!   module subroutine ser_error_handler(err_act)
      implicit none
      integer(ipk_), intent(inout) ::  err_act
  
*************** contains
*** 117,123 ****
      return
    end subroutine ser_error_handler
  
!   subroutine par_error_handler(ictxt,err_act)
      implicit none
      integer(mpik_), intent(in) ::  ictxt
      integer(ipk_), intent(in) ::  err_act
--- 117,123 ----
      return
    end subroutine ser_error_handler
  
!   module subroutine par_error_handler(ictxt,err_act)
      implicit none
      integer(mpik_), intent(in) ::  ictxt
      integer(ipk_), intent(in) ::  err_act
*************** contains
*** 131,155 ****
  
    end subroutine par_error_handler
  
!   subroutine par_error_print_stack(ictxt)
      integer(mpik_), intent(in) ::  ictxt
  
      call error(ictxt, abrt=.false.)
  
    end subroutine par_error_print_stack
  
!   subroutine ser_error_print_stack()
  
      call error()
    end subroutine ser_error_print_stack
  
!   subroutine serror()
  
      implicit none
  
    end subroutine serror
  
!   subroutine perror(ictxt,abrt)
      use const_mod
      implicit none
      integer(mpik_), intent(in) :: ictxt
--- 131,155 ----
  
    end subroutine par_error_handler
  
!   module subroutine par_error_print_stack(ictxt)
      integer(mpik_), intent(in) ::  ictxt
  
      call error(ictxt, abrt=.false.)
  
    end subroutine par_error_print_stack
  
!   module subroutine ser_error_print_stack()
  
      call error()
    end subroutine ser_error_print_stack
  
!   module subroutine serror()
  
      implicit none
  
    end subroutine serror
  
!   module subroutine perror(ictxt,abrt)
      use const_mod
      implicit none
      integer(mpik_), intent(in) :: ictxt
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_33.f08 gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_33.f08
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_33.f08	Sun May 31 22:32:12 2026
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_33.f08	Sun Jun  7 22:32:14 2026
*************** module m
*** 14,20 ****
  end
  submodule(m) m2
  contains
!    subroutine g(x)      ! { dg-error "FUNCTION attribute conflicts with SUBROUTINE" }
       integer, intent(in) :: x  ! { dg-error "Unexpected data declaration" }
     end
  end
--- 14,20 ----
  end
  submodule(m) m2
  contains
!    module subroutine g(x)      ! { dg-error "FUNCTION attribute conflicts with SUBROUTINE" }
       integer, intent(in) :: x  ! { dg-error "Unexpected data declaration" }
     end
  end
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_35.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_35.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_35.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_35.f90	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ ! { dg-do run )
+ !
+ ! Test the fix for prs 88632 and 104630, in which the private procedure
+ ! 'my_number' was not visible in the submodule 'decendent'.
+ !
+ ! Contributed by Joerg Stiller <joerg.stiller@tu-dresden.de>
+ !             and Neil Carlson  <neil.n.carlson@gmail.com>
+ !
+ module parent
+   private
+   public :: my_type
+   
+   type my_type
+     integer :: i = 1
+   contains
+     procedure :: my_method
+   end type my_type
+   
+   interface
+     module subroutine my_method(this)
+       class(my_type), intent(inout) :: this
+     end subroutine my_method
+   end interface
+   
+ contains
+   
+   ! common helper function to be used in different submodules
+   integer function my_number()
+     my_number = 42
+   end function my_number
+ 
+ end module parent
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_35_aux.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_35_aux.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_35_aux.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_35_aux.f90	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do run }
+ ! { dg-compile-aux-modules "submodule_35.f90" }
+ ! { dg-additional-sources submodule_35.f90 }
+ !
+ submodule(parent) decendent
+ contains
+   module subroutine my_method(this)
+     class(my_type), intent(inout) :: this
+     this%i = my_number()
+   end subroutine my_method
+ end submodule decendent
+ 
+ program main
+   use parent
+   type(my_type) :: my
+   call my % my_method()
+   if (my%i /= 42) stop 1
+ end program main
+ ! { dg-final { cleanup-modules "parent" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_36.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_36.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_36.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_36.f90	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,39 ----
+ ! { dg-do compile }
+ !
+ ! Test the fix for pr121379, in which the missing MODULE prefix for 'realg' was
+ ! not detected.
+ !
+ ! Contributed by Paul Thomas  <pault@gcc.gnu.org>
+ !
+ module m
+   interface g
+   real module function realg1 (arg1, arg2)
+     real, intent(in) :: arg1, arg2
+   end
+   end interface
+ 
+   interface h
+   real module function realg2 (arg1, arg2)
+     real, intent(in) :: arg1, arg2
+   end
+   end interface
+ 
+ contains
+ end module m
+ 
+ submodule (m) subm
+ contains
+   real module function realg1 (arg1, arg2)
+     real, intent(in) :: arg1, arg2
+     realg1 = arg1 + arg2
+   end
+ 
+   real function realg2 (arg1, arg2)  ! { dg-error "requires the MODULE prefix" }
+     real, intent(in) :: arg1, arg2
+     realg2 = arg1 + arg2
+   end
+ end
+ 
+   use m
+   print *, g(1.0, 1.0), h(2.0, 2.0)
+ end
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_37.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_37.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_37.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_37.f90	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,59 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original" }
+ !
+ ! Test the fix for pr93424 in which the declaration at line 41 yielded:
+ ! first "Error: Unclassifiable statement at (1)"
+ ! followed by an ICE at interface.cc:851
+ !
+ ! Contributed by Andrew Benson  <abensonca@gmail.com>
+ !
+ module t
+   type :: a
+    contains
+      procedure :: p => ap
+   end type a
+ 
+   type, extends(a) :: b
+    contains
+      procedure :: p => bp
+   end type b
+ 
+   type :: c
+   end type c
+   
+   interface
+      module function bp(s)
+        class(b), intent(inout) :: s
+        class(c), pointer :: bp
+      end function
+   end interface
+ contains
+   function ap(s)
+     class(a), intent(inout) :: s
+     class(c), pointer :: ap
+     ap => NULL()
+   end function ap
+ end module t
+ 
+ submodule (t) ts
+ contains
+   module function bp(s)
+     class(b), intent(inout) :: s
+     class(c), pointer :: bp
+     select type (s)
+       type is (b)
+       bp => NULL()
+     end select
+   end function bp  
+ end submodule ts
+ 
+   use t
+   class(c), pointer :: x
+   type(c), target :: y
+   type(b) :: z
+   x => y
+   if (.not.associated(x,y)) stop 1
+   x => z%p()
+   if (associated(x,y)) stop 2
+ end
+ ! { dg-final { scan-tree-dump-times "D..... = bp \\(&class..\\)" 1 "original" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_38.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_38.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_38.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_38.f90	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,38 ----
+ ! { dg-do run }
+ !
+ ! Test fix for a bug where the always_explicit attribute was not copied
+ ! by gfc_copy_attr, causing array descriptors not to be passed when
+ ! calling a dummy procedure with an assumed-shape argument from a
+ ! submodule module procedure.
+ !
+ module test_m
+    implicit none (type, external)
+    interface
+       module subroutine call_proc (proc)
+          interface
+             subroutine proc (a)
+                real, intent(in) :: a(:)
+             end subroutine proc
+          end interface
+       end subroutine call_proc
+    end interface
+ end module test_m
+ 
+ submodule (test_m) test_sm
+    implicit none (type, external)
+ contains
+    module procedure call_proc
+       call proc ([1., 2., .3])
+    end procedure call_proc
+ end submodule test_sm
+ 
+ program test
+    use test_m
+    implicit none (type, external)
+    call call_proc (print_proc)
+ contains
+    subroutine print_proc (a)
+       real, intent(in) :: a(:)
+       if (size (a, 1) /= 3) stop 1
+    end subroutine print_proc
+ end program test
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_host_assoc_1.f90	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do run }
+ ! { dg-additional-sources submodule_host_assoc_1_aux.f90 }
+ !
+ ! PR fortran/125527
+ !
+ ! A submodule must be able to access internal subprograms of its ancestor
+ ! module via host association (Fortran 2018, 14.6.1.3).
+ ! gfortran was incorrectly rejecting such references with
+ ! "has no IMPLICIT type" when the internal procedure was declared PRIVATE.
+ 
+ module m
+   implicit none
+   private
+   public :: test
+ 
+   interface
+     module subroutine test()
+     end subroutine
+   end interface
+ 
+ contains
+   pure function double_it(x) result(y)
+     double precision, intent(in) :: x
+     double precision :: y
+     y = 2.0d0 * x
+   end function
+ 
+ end module m
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/submodule_host_assoc_1_aux.f90	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,15 ----
+ ! Auxiliary file for submodule_host_assoc_1.f90
+ ! { dg-skip-if "" { *-*-* } }
+ submodule(m) s
+   implicit none
+ contains
+   module subroutine test()
+     if (abs(double_it(3.0d0) - 6.0d0) > 1d-10) stop 1
+   end subroutine
+ end submodule s
+ 
+ program p
+   use m
+   implicit none
+   call test()
+ end program p
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gfortran.dg/vect/pr125431.f90 gcc-17-20260607/gcc/testsuite/gfortran.dg/vect/pr125431.f90
*** gcc-17-20260531/gcc/testsuite/gfortran.dg/vect/pr125431.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gfortran.dg/vect/pr125431.f90	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-O2 -ffp-contract=off" }
+ ! { dg-additional-options "-march=armv8.3-a" { target { aarch64*-*-* } } }
+ 
+ subroutine foo(a,b,c)
+ 
+   complex :: a(6,6)
+   complex :: b(6,6)
+   complex :: c(6,6)
+ 
+   c = MATMUL(a, b)
+ 
+ end subroutine foo
+ 
+ ! { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_float } }  } }
+ ! { dg-final { scan-tree-dump-not "Found COMPLEX_MUL" "vect" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gm2.dg/spell/iso/fail/badmodule.mod gcc-17-20260607/gcc/testsuite/gm2.dg/spell/iso/fail/badmodule.mod
*** gcc-17-20260531/gcc/testsuite/gm2.dg/spell/iso/fail/badmodule.mod	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gm2.dg/spell/iso/fail/badmodule.mod	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,17 ----
+ 
+ (* { dg-do compile } *)
+ (* { dg-options "-g" } *)
+ 
+ MODULE badmodule ;
+ 
+ IMPORT color ;
+ 
+ PROCEDURE Init ;
+ BEGIN
+    colors.Clear
+ (* { dg-error "the qualifier 'colors' is unknown, did you mean color?" "colors" { target *-*-* } 11 } *)
+ END Init ;
+ 
+ BEGIN
+    Init
+ END badmodule.
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gm2.dg/spell/iso/fail/badrecord.mod gcc-17-20260607/gcc/testsuite/gm2.dg/spell/iso/fail/badrecord.mod
*** gcc-17-20260531/gcc/testsuite/gm2.dg/spell/iso/fail/badrecord.mod	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gm2.dg/spell/iso/fail/badrecord.mod	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,20 ----
+ 
+ (* { dg-do compile } *)
+ (* { dg-options "-g" } *)
+ 
+ MODULE badrecord ;
+ 
+ TYPE
+    color = RECORD
+               red, blue, green: CARDINAL ;
+            END ;
+ 
+ PROCEDURE Init ;
+ BEGIN
+    colors.red := 1 ;
+ (* { dg-error "the qualifier 'colors' is unknown, did you mean color?" "colors" { target *-*-* } 14 } *)
+ END Init ;
+ 
+ BEGIN
+    Init
+ END badrecord.
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gm2.dg/spell/iso/fail/color.def gcc-17-20260607/gcc/testsuite/gm2.dg/spell/iso/fail/color.def
*** gcc-17-20260531/gcc/testsuite/gm2.dg/spell/iso/fail/color.def	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/gm2.dg/spell/iso/fail/color.def	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,5 ----
+ DEFINITION MODULE color ;
+ 
+ PROCEDURE Clear ;
+ 
+ END color.
diff -Nrcpad gcc-17-20260531/gcc/testsuite/gnat.dg/atomic9.adb gcc-17-20260607/gcc/testsuite/gnat.dg/atomic9.adb
*** gcc-17-20260531/gcc/testsuite/gnat.dg/atomic9.adb	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/gnat.dg/atomic9.adb	Sun Jun  7 22:32:14 2026
*************** procedure Atomic9 is
*** 14,21 ****
        with
          Import,
          Atomic,
!         Size    => 32,
!         Address => Register'Address;
  
     begin
        NVIC_STIR := IRQ;
--- 14,22 ----
        with
          Import,
          Atomic,
!         Alignment => 4,
!         Size      => 32,
!         Address   => Register'Address;
  
     begin
        NVIC_STIR := IRQ;
diff -Nrcpad gcc-17-20260531/gcc/testsuite/lib/gcc-dg.exp gcc-17-20260607/gcc/testsuite/lib/gcc-dg.exp
*** gcc-17-20260531/gcc/testsuite/lib/gcc-dg.exp	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/lib/gcc-dg.exp	Sun Jun  7 22:32:14 2026
*************** proc dg-final { args } {
*** 122,127 ****
--- 122,130 ----
  	gdb-test {
  	    set code [linsert $code 1 $line]
  	}
+ 	check-function-bodies {
+ 	    uplevel 1 [list dg-add-options $line check_function_bodies]
+ 	}
      }
      append final-code "$code\n"
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/lib/target-supports.exp gcc-17-20260607/gcc/testsuite/lib/target-supports.exp
*** gcc-17-20260531/gcc/testsuite/lib/target-supports.exp	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/lib/target-supports.exp	Sun Jun  7 22:32:14 2026
*************** proc check_effective_target_power10_ok {
*** 8061,8066 ****
--- 8061,8114 ----
      }
  }
  
+ # Return 1 if this is a PowerPC target where the compiler supports
+ # compiling with -mcpu=future (i.e., the compiler recognizes _ARCH_FUTURE),
+ # return 0 otherwise.
+ 
+ proc check_effective_target_powerpc_future_compile_ok { } {
+     return [check_no_compiler_messages_nocache powerpc_future_compile_ok assembly {
+ 	void test (void) {
+ 	    #ifndef _ARCH_FUTURE
+ 	      #error does not have powerpc future support.
+ 	    #else
+ 	      /* "has powerpc future support" */
+ 	    #endif
+ 	}
+     } "-mcpu=future"]
+ }
+ 
+ # Return 1 if this is a PowerPC target where the assembler supports
+ # assembling future instructions with -mcpu=future (i.e., the assembler
+ # can assemble the subwus instruction), return 0 otherwise.
+ 
+ proc check_effective_target_powerpc_future_assemble_ok { } {
+     return [check_no_compiler_messages_nocache powerpc_future_assemble_ok object {
+ 	unsigned int a, b, c;
+ 	int main (void) {
+ 	    asm ("subwus %0,%1,%2" : "=r" (a) : "r" (b), "r" (c));
+ 	    return 0;
+ 	}
+     } "-mcpu=future"]
+ }
+ 
+ # Return 1 if the target hardware supports executing PowerPC future
+ # instructions at runtime (i.e., the subwus instruction executes
+ # correctly), return 0 otherwise.
+ 
+ proc check_powerpc_future_hw_available { } {
+     return [check_cached_effective_target powerpc_future_hw_available {
+ 	check_runtime_nocache powerpc_future_hw_available {
+ 	    int main() {
+ 		unsigned int a = 5, b = 3, result = 0xDEADBEEF;
+ 		asm ("subwus %0,%1,%2" : "=r" (result) : "r" (a), "r" (b));
+ 		if (result == 0)
+ 		  return 0;
+ 		return 1;
+ 	    }
+ 	} "-mcpu=future"
+     }]
+ }
+ 
  # Return 1 if this is a PowerPC target supporting -mfloat128 via either
  # software emulation on power7/power8 systems or hardware support on power9.
  
*************** proc is-effective-target { arg } {
*** 10715,10720 ****
--- 10763,10769 ----
  	  "p9vector_hw"    { set selected [check_p9vector_hw_available] }
  	  "p9modulo_hw"    { set selected [check_p9modulo_hw_available] }
  	  "power10_hw"     { set selected [check_power10_hw_available] }
+ 	  "powerpc_future_hw" { set selected [check_powerpc_future_hw_available] }
  	  "ppc_float128_sw" { set selected [check_ppc_float128_sw_available] }
  	  "ppc_float128_hw" { set selected [check_ppc_float128_hw_available] }
  	  "ppc_recip_hw"   { set selected [check_ppc_recip_hw_available] }
*************** proc is-effective-target-keyword { arg }
*** 10748,10753 ****
--- 10797,10803 ----
  	  "p9vector_hw"    { return 1 }
  	  "p9modulo_hw"    { return 1 }
  	  "power10_hw"     { return 1 }
+ 	  "powerpc_future_hw" { return 1 }
  	  "ppc_float128_sw" { return 1 }
  	  "ppc_float128_hw" { return 1 }
  	  "ppc_recip_hw"   { return 1 }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/assert_missing_panic.rs gcc-17-20260607/gcc/testsuite/rust/compile/assert_missing_panic.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/assert_missing_panic.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/assert_missing_panic.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,12 ----
+ #![feature(rustc_attrs)]
+ #![feature(no_core)]
+ #![no_core]
+ 
+ #[macro_export]
+ #[rustc_builtin_macro]
+ macro_rules! assert {
+     ($($arg:tt)*) => {};
+ }
+ 
+ const _: () = assert!(true);
+ // { dg-error "could not resolve macro invocation .panic." "" { target *-*-* } .-1 }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/bswap.rs gcc-17-20260607/gcc/testsuite/rust/compile/bswap.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/bswap.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/bswap.rs	Sun Jun  7 22:32:14 2026
*************** pub trait Sized {}
*** 9,17 ****
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn bswap<T>(x: T) -> T; // { dg-error "bswap intrinsics can only be used with basic integer types .got 'bool'." }
  }
  
  fn main() {
!     let _ = bswap(true);
  }
--- 9,17 ----
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn bswap<T>(x: T) -> T; 
  }
  
  fn main() {
!     let _ = bswap(true); // { dg-error "bswap intrinsic can only be used with basic integer types .got .bool.." }
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/const-compound-assignment.rs gcc-17-20260607/gcc/testsuite/rust/compile/const-compound-assignment.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/const-compound-assignment.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/const-compound-assignment.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,15 ----
+ // { dg-options "-w -O0 -fdump-tree-gimple" }
+ #![feature(no_core)]
+ #![no_core]
+ 
+ const fn test(mut x: i32) -> i32 {
+     x += 5;
+     x
+ }
+ 
+ const X: i32 = test(10);
+ 
+ fn main() {
+     // { dg-final { scan-tree-dump-times {x = 15} 1 gimple } }
+     let x = X;
+ }
\ No newline at end of file
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/const-issue1440.rs gcc-17-20260607/gcc/testsuite/rust/compile/const-issue1440.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/const-issue1440.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/const-issue1440.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,9 ****
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
- 
  #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,8 ----
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
  #![feature(intrinsics)]
! #![feature(staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/ctlz.rs gcc-17-20260607/gcc/testsuite/rust/compile/ctlz.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/ctlz.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/ctlz.rs	Sun Jun  7 22:32:14 2026
*************** pub trait Sized {}
*** 9,17 ****
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn ctlz<T>(x: T) -> u32; // { dg-error "ctlz intrinsics can only be used with basic integer types .got 'bool'." }
  }
  
  fn main() {
!     let _ = ctlz(true);
  }
--- 9,17 ----
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn ctlz<T>(x: T) -> u32;
  }
  
  fn main() {
!     let _ = ctlz(true); // { dg-error "ctlz intrinsic can only be used with basic integer types .got .bool.." }
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/ctlz_nonzero.rs gcc-17-20260607/gcc/testsuite/rust/compile/ctlz_nonzero.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/ctlz_nonzero.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/ctlz_nonzero.rs	Sun Jun  7 22:32:14 2026
*************** pub trait Sized {}
*** 9,19 ****
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn ctlz_nonzero<T>(x: T) -> u32; // { dg-error "ctlz intrinsics can only be used with basic integer types .got 'bool'." }
  }
  
  fn main() {
      unsafe {
!         let _ = ctlz_nonzero(true);
      }
  }
--- 9,19 ----
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn ctlz_nonzero<T>(x: T) -> u32;
  }
  
  fn main() {
      unsafe {
!         let _ = ctlz_nonzero(true); // { dg-error "ctlz intrinsic can only be used with basic integer types .got .bool.." }
      }
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/cttz.rs gcc-17-20260607/gcc/testsuite/rust/compile/cttz.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/cttz.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/cttz.rs	Sun Jun  7 22:32:14 2026
*************** pub trait Sized {}
*** 9,17 ****
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn cttz<T>(x: T) -> u32; // { dg-error "cttz intrinsics can only be used with basic integer types .got 'bool'." }
  }
  
  fn main() {
!     let _ = cttz(true);
  }
--- 9,17 ----
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn cttz<T>(x: T) -> u32;
  }
  
  fn main() {
!     let _ = cttz(true); // { dg-error "cttz intrinsic can only be used with basic integer types .got 'bool'." }
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/cttz_nonzero.rs gcc-17-20260607/gcc/testsuite/rust/compile/cttz_nonzero.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/cttz_nonzero.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/cttz_nonzero.rs	Sun Jun  7 22:32:14 2026
*************** pub trait Sized {}
*** 9,19 ****
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn cttz_nonzero<T>(x: T) -> u32; // { dg-error "cttz intrinsics can only be used with basic integer types .got 'bool'." }
  }
  
  fn main() {
      unsafe {
!         let _ = cttz_nonzero(true);
      }
  }
--- 9,19 ----
  pub trait Copy {}
  
  extern "rust-intrinsic" {
!     pub fn cttz_nonzero<T>(x: T) -> u32;
  }
  
  fn main() {
      unsafe {
!         let _ = cttz_nonzero(true); // { dg-error "cttz intrinsic can only be used with basic integer types .got 'bool'." }
      }
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/deferred-suffix-validation.rs gcc-17-20260607/gcc/testsuite/rust/compile/deferred-suffix-validation.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/deferred-suffix-validation.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/deferred-suffix-validation.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,16 ----
+ #![feature(no_core)]
+ #![no_core]
+ 
+ macro_rules! foo {
+     ($x:tt) => {};
+ }
+ 
+ fn main() {
+     foo!(123invalid);
+     foo!(3.14_f128_invalid);
+     foo!(0x1h12);
+     foo!(0o1h13);
+     foo!(0b1h14);
+ 
+     let _ = 123invalid; // { dg-error "invalid suffix .invalid. for number literal" }
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/drop-lang-item.rs gcc-17-20260607/gcc/testsuite/rust/compile/drop-lang-item.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/drop-lang-item.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/drop-lang-item.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,14 ----
+ #![feature(no_core)]
+ #![no_core]
+ 
+ #![feature(lang_items)]
+ 
+ #[lang = "sized"]
+ pub trait Sized {}
+ 
+ #[lang = "drop"]
+ pub trait Drop {
+     fn drop(&mut self);
+ }
+ 
+ fn main() {}
\ No newline at end of file
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/empty-non-decimal.rs gcc-17-20260607/gcc/testsuite/rust/compile/empty-non-decimal.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/empty-non-decimal.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/empty-non-decimal.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,10 ----
+ #![feature(no_core)]
+ #![no_core]
+ 
+ fn main() {
+     let _a = 0x; // { dg-error "no valid digits found for number" }
+     let _b = 0b; // { dg-error "no valid digits found for number" }
+     let _c = 0o; // { dg-error "no valid digits found for number" }
+     let _d = 0x_; // { dg-error "no valid digits found for number" }
+     let _e = 0x_u32; // { dg-error "no valid digits found for number" }
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/empty_path.rs gcc-17-20260607/gcc/testsuite/rust/compile/empty_path.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/empty_path.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/empty_path.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,7 ----
+ #![feature(no_core)]
+ #![no_core]
+ 
+ fn main() {
+     ::;
+     // { dg-error "expected identifier" "" { target *-*-* } .-1 }
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/evaluate-integer-or-float.rs gcc-17-20260607/gcc/testsuite/rust/compile/evaluate-integer-or-float.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/evaluate-integer-or-float.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/evaluate-integer-or-float.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,21 ----
+ // { dg-options "-frust-dump-lex" }
+ #![feature(no_core)]
+ #![no_core]
+ 
+ fn main() {
+     let _a: u32 = 1_000u32;
+     let _b: u8 = 0xFF_u8;
+     let _c: f64 = 3.14_15_f64;
+ 
+     let _d = 0b1010;
+     let _e = 10.5;
+ 
+     let _f = 2.71e+10_f32;
+ }
+ 
+ // { dg-final { scan-file gccrs.lex.dump "1_000u32" } }
+ // { dg-final { scan-file gccrs.lex.dump "0xFF_u8" } }
+ // { dg-final { scan-file gccrs.lex.dump "3.14_15_f64" } }
+ // { dg-final { scan-file gccrs.lex.dump "0b1010" } }
+ // { dg-final { scan-file gccrs.lex.dump "10.5" } }
+ // { dg-final { scan-file gccrs.lex.dump "2.71e\\+10_f32" } }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/for-loop1.rs gcc-17-20260607/gcc/testsuite/rust/compile/for-loop1.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/for-loop1.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/for-loop1.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,8 ****
  // { dg-output "loop\r*\nloop\r*\n" }
  #![feature(no_core)]
  #![no_core]
- 
  #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,8 ----
  // { dg-output "loop\r*\nloop\r*\n" }
  #![feature(no_core)]
  #![no_core]
  #![feature(intrinsics, lang_items)]
+ #![feature(staged_api)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/for-loop2.rs gcc-17-20260607/gcc/testsuite/rust/compile/for-loop2.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/for-loop2.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/for-loop2.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,8 ****
  // { dg-output "1\r*\n2\r*\n" }
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,7 ----
  // { dg-output "1\r*\n2\r*\n" }
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, lang_items, staged_api)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/issue-1031.rs gcc-17-20260607/gcc/testsuite/rust/compile/issue-1031.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/issue-1031.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/issue-1031.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,8 ****
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,6 ----
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/issue-1289.rs gcc-17-20260607/gcc/testsuite/rust/compile/issue-1289.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/issue-1289.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/issue-1289.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,8 ****
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,6 ----
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/issue-3537.rs gcc-17-20260607/gcc/testsuite/rust/compile/issue-3537.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/issue-3537.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/issue-3537.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,18 ----
+ #![feature(no_core)]
+ #![no_core]
+ 
+ // { dg-error "undeclared lang item: .*into_iter.*" "" { target *-*-* } 0 }
+ 
+ fn main() {
+     'inner: while let Some(0u32) = None {
+     // { dg-error "Cannot find path .None. in this scope" "" { target *-*-* } .-1 }
+     // { dg-error "Cannot find path .Some. in this scope" "" { target *-*-* } .-2 }
+ 
+         let _ = Iterator::next(&mut ());
+         // { dg-error "Cannot find path .Iterator::next. in this scope" "" { target *-*-* } .-1 }
+ 
+         let _ = Iterator::next(&mut ());
+         // { dg-error "Cannot find path .Iterator::next. in this scope" "" { target *-*-* } .-1 }
+         for _ in false {}
+     }
+ }
\ No newline at end of file
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/issue-3972.rs gcc-17-20260607/gcc/testsuite/rust/compile/issue-3972.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/issue-3972.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/issue-3972.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,19 ----
+ // { dg-options "-frust-compile-until=lowering" }
+ #![feature(no_core)]
+ #![no_core]
+ 
+ struct Expr<const N: u32>;
+ 
+ trait Trait0 {
+     fn required(
+         _: Expr<
+             {
+                 trait Trait0 {
+                     fn required();
+                 }
+ 
+                 0
+             },
+         >,
+     );
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/issue-4158.rs gcc-17-20260607/gcc/testsuite/rust/compile/issue-4158.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/issue-4158.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/issue-4158.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,3 ----
+ #![feature(no_core)]
+ #![no_core]
+ struct A<const B: A = 1, A>; // { dg-error "invalid order for generic parameters" }
\ No newline at end of file
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/issue-4159.rs gcc-17-20260607/gcc/testsuite/rust/compile/issue-4159.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/issue-4159.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/issue-4159.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,12 ----
+ #![feature(no_core)]
+ #![no_core]
+ #![feature()]
+ macro_rules! m {
+     () => ( c.. ); // { dg-error "token type .* cannot be parsed as range pattern bound" }
+ }
+ fn main() {
+     match [1, 1, 2] {
+         [ c1 ] => {}
+         [ m!() ] => {}
+     }
+ }
\ No newline at end of file
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/issue-4167.rs gcc-17-20260607/gcc/testsuite/rust/compile/issue-4167.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/issue-4167.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/issue-4167.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,15 ----
+ #![feature(no_core)]
+ #![no_core]
+ macro_rules! the_macro {
+     ( $foo:stmt ; $bar:stmt ; ) => {
+         #[cfg(foo)]
+         $foo
+ 
+         $foo[cfg(bar)]
+         $bar
+     };
+ }
+ 
+ fn the_function() {
+     the_macro!( (); (); ); // { dg-error "cannot strip expression in this position" }
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/iterators1.rs gcc-17-20260607/gcc/testsuite/rust/compile/iterators1.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/iterators1.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/iterators1.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,7 ****
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,6 ----
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, lang_items, staged_api)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/missing_staged_api.rs gcc-17-20260607/gcc/testsuite/rust/compile/missing_staged_api.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/missing_staged_api.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/missing_staged_api.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,12 ----
+ #![feature(no_core)]
+ #![feature(intrinsics)]
+ #![no_core]
+ 
+ pub mod intrinsics {
+ 
+     extern "rust-intrinsic" {
+         // { dg-error "stability attributes may not be used outside of the standard library" "" { target *-*-* } .+1 }
+         #[rustc_const_stable(feature = "const_size_of", since = "1.40.0")]
+         pub fn size_of<T>() -> usize;
+     }
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/rustc_const_stable.rs gcc-17-20260607/gcc/testsuite/rust/compile/rustc_const_stable.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/rustc_const_stable.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/rustc_const_stable.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,7 ****
  #![feature(no_core)]
  #![no_core]
- 
  #![feature(rustc_attrs)]
  
  #[rustc_const_stable(feature = "const_ascii_ctype_on_intrinsics", since = "1.47.0")]
  pub fn foo() {}
--- 1,7 ----
  #![feature(no_core)]
  #![no_core]
  #![feature(rustc_attrs)]
+ #![feature(staged_api)]
  
  #[rustc_const_stable(feature = "const_ascii_ctype_on_intrinsics", since = "1.47.0")]
  pub fn foo() {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/torture/intrinsics-5.rs gcc-17-20260607/gcc/testsuite/rust/compile/torture/intrinsics-5.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/torture/intrinsics-5.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/torture/intrinsics-5.rs	Sun Jun  7 22:32:14 2026
*************** mod copy_impls {
*** 65,72 ****
  
  extern "rust-intrinsic" {
      pub fn atomic_store_seqcst<T: Copy>(dst: *mut T, value: T);
-     // { dg-error "atomic intrinsics can only be used with basic integer types .got .VeryLargeType.." "" { target *-*-* } .-1 }
-     // { dg-error "atomic intrinsics can only be used with basic integer types .got .bool.." "" { target *-*-* } .-2 }
  }
  
  struct VeryLargeType {
--- 65,70 ----
*************** fn main() {
*** 100,105 ****
--- 98,105 ----
  
      unsafe {
          atomic_store_seqcst(&mut dst, VeryLargeType::new(1));
+         // { dg-error "atomic operation intrinsic can only be used with basic integer types .got .VeryLargeType.." "" { target *-*-* } .-1 }
          atomic_store_seqcst(&mut b, true);
+         // { dg-error "atomic operation intrinsic can only be used with basic integer types .got .bool.." "" { target *-*-* } .-1 }
      }
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/torture/intrinsics-7.rs gcc-17-20260607/gcc/testsuite/rust/compile/torture/intrinsics-7.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/torture/intrinsics-7.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/torture/intrinsics-7.rs	Sun Jun  7 22:32:14 2026
*************** pub trait Sized {}
*** 9,19 ****
  
  extern "rust-intrinsic" {
      pub fn unchecked_add<T>(x: T, y: T) -> T;
-     // { dg-error "unchecked operation intrinsics can only be used with basic integer types .got .NotAdd.." "" { target *-*-* } .-1 }
  }
  
  fn main() {
      struct NotAdd;
  
      unsafe { unchecked_add(NotAdd, NotAdd) };
  }
--- 9,19 ----
  
  extern "rust-intrinsic" {
      pub fn unchecked_add<T>(x: T, y: T) -> T;
  }
  
  fn main() {
      struct NotAdd;
  
      unsafe { unchecked_add(NotAdd, NotAdd) };
+     // { dg-error "unchecked operation intrinsic can only be used with basic integer types .got .NotAdd.." "" { target *-*-* } .-1 }
  }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/torture/issue-1075.rs gcc-17-20260607/gcc/testsuite/rust/compile/torture/issue-1075.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/torture/issue-1075.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/torture/issue-1075.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,9 ****
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
- 
  #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,8 ----
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
  #![feature(intrinsics)]
! #![feature(staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/torture/issue-1432.rs gcc-17-20260607/gcc/testsuite/rust/compile/torture/issue-1432.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/torture/issue-1432.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/compile/torture/issue-1432.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,9 ****
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
- 
  #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,8 ----
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
  #![feature(intrinsics)]
! #![feature(staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/compile/tuple-index.rs gcc-17-20260607/gcc/testsuite/rust/compile/tuple-index.rs
*** gcc-17-20260531/gcc/testsuite/rust/compile/tuple-index.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/compile/tuple-index.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,12 ----
+ #![feature(no_core)]
+ #![no_core]
+ 
+ fn main() {
+     let t = (10, 20);
+     let _a = t.0;
+     let _b = t.1;
+ 
+     struct S(u8, u8);
+     let s = S(1, 2);
+     let _c = s.0;
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/cf-labeled-block.rs gcc-17-20260607/gcc/testsuite/rust/execute/cf-labeled-block.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/cf-labeled-block.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/execute/cf-labeled-block.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,36 ----
+ // { dg-output "222\r*\n333\r*\n" }
+ #![feature(no_core)]
+ #![no_core]
+ extern "C" {
+     fn printf(s: *const i8, ...);
+ }
+ fn dump_number(num: i32) {
+     unsafe {
+         let a = "%i\n\0";
+         let c = a as *const str as *const i8;
+         printf(c, num);
+     }
+ }
+ 
+ fn main() -> i32 {
+     let a = 'block_a: {
+         if false {
+             break 'block_a 111;
+         }
+         222
+     };
+     dump_number(a);
+     let b = 'block_b: {
+         if true {
+             break 'block_b 333;
+         }
+         444
+     };
+     dump_number(b);
+     // ISSUE : Rust-GCC/gccrs#4538
+     // let c = 'block_c: {
+     //     break 'block_c 555;
+     // };
+     // dump_number(c);
+     0
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/const-compound-assignment.rs gcc-17-20260607/gcc/testsuite/rust/execute/const-compound-assignment.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/const-compound-assignment.rs	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/gcc/testsuite/rust/execute/const-compound-assignment.rs	Sun Jun  7 22:32:14 2026
***************
*** 0 ****
--- 1,35 ----
+ // { dg-output "45\r*\n55\r*\n" }
+ #![feature(no_core)]
+ #![no_core]
+ 
+ extern "C" {
+     fn printf(s: *const i8, ...);
+ }
+ 
+ fn dump_number(num: i32) {
+     unsafe {
+         let a = "%i\n\0";
+         let c = a as *const str as *const i8;
+         printf(c, num);
+     }
+ }
+ 
+ const fn play(b: i32) -> i32 {
+     let mut res = 0;
+     let mut i = 0;
+     while i < b {
+         res += i;
+         i += 1;
+     }
+     res
+ }
+ 
+ fn main() -> i32 {
+     const A: i32 = play(10);
+     dump_number(A);
+ 
+     let b: i32 = play(11);
+     dump_number(b);
+ 
+     0
+ }
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/const-generics-7.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/const-generics-7.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/const-generics-7.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/const-generics-7.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,8 ****
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,6 ----
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/for-loop1.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/for-loop1.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/for-loop1.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/for-loop1.rs	Sun Jun  7 22:32:14 2026
***************
*** 2,8 ****
  #![feature(no_core)]
  #![no_core]
  
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 2,8 ----
  #![feature(no_core)]
  #![no_core]
  
! #![feature(intrinsics, lang_items, staged_api)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/for-loop2.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/for-loop2.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/for-loop2.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/for-loop2.rs	Sun Jun  7 22:32:14 2026
***************
*** 2,8 ****
  #![feature(no_core)]
  #![no_core]
  
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 2,8 ----
  #![feature(no_core)]
  #![no_core]
  
! #![feature(intrinsics, lang_items, staged_api)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/issue-1120.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/issue-1120.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/issue-1120.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/issue-1120.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,9 ****
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/issue-1133.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/issue-1133.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/issue-1133.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/issue-1133.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,9 ****
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/issue-1232.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/issue-1232.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/issue-1232.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/issue-1232.rs	Sun Jun  7 22:32:14 2026
***************
*** 2,10 ****
  // { dg-output "slice_access=3\r*\n" }
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 2,8 ----
  // { dg-output "slice_access=3\r*\n" }
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/issue-1436.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/issue-1436.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/issue-1436.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/issue-1436.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,10 ****
  // { dg-options "-w" }
  #![feature(no_core)]
  #![no_core]
! 
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,7 ----
  // { dg-options "-w" }
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/iter1.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/iter1.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/iter1.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/iter1.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,8 ****
  // { dg-output "1\r*\n2\r*\n" }
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics, lang_items)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
--- 1,7 ----
  // { dg-output "1\r*\n2\r*\n" }
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, lang_items, staged_api)]
  
  pub use option::Option::{self, None, Some};
  pub use result::Result::{self, Err, Ok};
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/slice-magic.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/slice-magic.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/slice-magic.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/slice-magic.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,9 ****
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/slice-magic2.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/slice-magic2.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/slice-magic2.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/slice-magic2.rs	Sun Jun  7 22:32:14 2026
***************
*** 1,9 ****
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 1,7 ----
  // { dg-additional-options "-w" }
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/rust/execute/torture/str-layout1.rs gcc-17-20260607/gcc/testsuite/rust/execute/torture/str-layout1.rs
*** gcc-17-20260531/gcc/testsuite/rust/execute/torture/str-layout1.rs	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/rust/execute/torture/str-layout1.rs	Sun Jun  7 22:32:14 2026
***************
*** 2,10 ****
  // { dg-output "t1sz=5 t2sz=10\r*" }
  #![feature(no_core)]
  #![no_core]
! 
! #![feature(intrinsics)]
! 
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
--- 2,8 ----
  // { dg-output "t1sz=5 t2sz=10\r*" }
  #![feature(no_core)]
  #![no_core]
! #![feature(intrinsics, staged_api)]
  #![feature(lang_items)]
  #[lang = "sized"]
  pub trait Sized {}
diff -Nrcpad gcc-17-20260531/gcc/testsuite/selftests/x86_64/call-insn.rtl gcc-17-20260607/gcc/testsuite/selftests/x86_64/call-insn.rtl
*** gcc-17-20260531/gcc/testsuite/selftests/x86_64/call-insn.rtl	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/testsuite/selftests/x86_64/call-insn.rtl	Sun Jun  7 22:32:14 2026
***************
*** 10,16 ****
             (expr_list:REG_EH_REGION (const_int 0)
                (nil)))
          (expr_list:DF (use (reg:DF xmm0))
!            (nil)))
        (edge-to exit (flags "FALLTHRU"))
      ) ;; block 2
    ) ;; insn-chain
--- 10,17 ----
             (expr_list:REG_EH_REGION (const_int 0)
                (nil)))
          (expr_list:DF (use (reg:DF xmm0))
!            (nil))
! 	0)
        (edge-to exit (flags "FALLTHRU"))
      ) ;; block 2
    ) ;; insn-chain
diff -Nrcpad gcc-17-20260531/gcc/tree-core.h gcc-17-20260607/gcc/tree-core.h
*** gcc-17-20260531/gcc/tree-core.h	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-core.h	Sun Jun  7 22:32:14 2026
*************** typedef tree (*walk_tree_lh) (tree *, in
*** 1136,1142 ****
     accessor macros.  */
  
  struct GTY(()) tree_base {
!   ENUM_BITFIELD(tree_code) code : 16;
  
    unsigned side_effects_flag : 1;
    unsigned constant_flag : 1;
--- 1136,1142 ----
     accessor macros.  */
  
  struct GTY(()) tree_base {
!   tree_code code : 16;
  
    unsigned side_effects_flag : 1;
    unsigned constant_flag : 1;
*************** struct GTY(()) tree_type_common {
*** 1805,1811 ****
    tree attributes;
    unsigned int uid;
  
!   ENUM_BITFIELD(machine_mode) mode : MACHINE_MODE_BITSIZE;
  
    unsigned int precision : 16;
    unsigned lang_flag_0 : 1;
--- 1805,1811 ----
    tree attributes;
    unsigned int uid;
  
!   machine_mode mode : MACHINE_MODE_BITSIZE;
  
    unsigned int precision : 16;
    unsigned lang_flag_0 : 1;
*************** struct GTY(()) tree_decl_common {
*** 1898,1904 ****
    struct tree_decl_minimal common;
    tree size;
  
!   ENUM_BITFIELD(machine_mode) mode : MACHINE_MODE_BITSIZE;
  
    unsigned nonlocal_flag : 1;
    unsigned virtual_flag : 1;
--- 1898,1904 ----
    struct tree_decl_minimal common;
    tree size;
  
!   machine_mode mode : MACHINE_MODE_BITSIZE;
  
    unsigned nonlocal_flag : 1;
    unsigned virtual_flag : 1;
*************** struct GTY(()) tree_decl_with_vis {
*** 2023,2029 ****
   unsigned seen_in_bind_expr : 1;
   unsigned comdat_flag : 1;
   /* Used for FUNCTION_DECL, VAR_DECL and in C++ for TYPE_DECL.  */
!  ENUM_BITFIELD(symbol_visibility) visibility : 2;
   unsigned visibility_specified : 1;
  
   /* Belong to FUNCTION_DECL exclusively.  */
--- 2023,2029 ----
   unsigned seen_in_bind_expr : 1;
   unsigned comdat_flag : 1;
   /* Used for FUNCTION_DECL, VAR_DECL and in C++ for TYPE_DECL.  */
!  enum symbol_visibility visibility : 2;
   unsigned visibility_specified : 1;
  
   /* Belong to FUNCTION_DECL exclusively.  */
*************** struct GTY(()) tree_function_decl {
*** 2091,2097 ****
    /* In a FUNCTION_DECL this is DECL_UNCHECKED_FUNCTION_CODE.  */
    unsigned int function_code;
  
!   ENUM_BITFIELD(built_in_class) built_in_class : 2;
    unsigned static_ctor_flag : 1;
    unsigned static_dtor_flag : 1;
    unsigned uninlinable : 1;
--- 2091,2097 ----
    /* In a FUNCTION_DECL this is DECL_UNCHECKED_FUNCTION_CODE.  */
    unsigned int function_code;
  
!   enum built_in_class built_in_class : 2;
    unsigned static_ctor_flag : 1;
    unsigned static_dtor_flag : 1;
    unsigned uninlinable : 1;
*************** struct GTY(()) tree_function_decl {
*** 2109,2115 ****
    unsigned looping_const_or_pure_flag : 1;
  
    /* Align the bitfield to boundary of a byte.  */
!   ENUM_BITFIELD(function_decl_type) decl_type: 2;
    unsigned has_debug_args_flag : 1;
    unsigned versioned_function : 1;
    unsigned replaceable_operator : 1;
--- 2109,2115 ----
    unsigned looping_const_or_pure_flag : 1;
  
    /* Align the bitfield to boundary of a byte.  */
!   enum function_decl_type decl_type: 2;
    unsigned has_debug_args_flag : 1;
    unsigned versioned_function : 1;
    unsigned replaceable_operator : 1;
diff -Nrcpad gcc-17-20260531/gcc/tree-pretty-print.cc gcc-17-20260607/gcc/tree-pretty-print.cc
*** gcc-17-20260531/gcc/tree-pretty-print.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-pretty-print.cc	Sun Jun  7 22:32:14 2026
*************** dump_block_node (pretty_printer *pp, tre
*** 1848,1854 ****
        newline_and_indent (pp, spc + 2);
      }
  
!   if (BLOCK_SUBBLOCKS (block))
      {
        pp_string (pp, "SUBBLOCKS: ");
        for (t = BLOCK_SUBBLOCKS (block); t; t = BLOCK_CHAIN (t))
--- 1848,1856 ----
        newline_and_indent (pp, spc + 2);
      }
  
!   if (BLOCK_SUBBLOCKS (block)
!       && (!lang_GNU_Fortran ()
! 	  || TREE_CODE (BLOCK_SUBBLOCKS (block)) != STATEMENT_LIST))
      {
        pp_string (pp, "SUBBLOCKS: ");
        for (t = BLOCK_SUBBLOCKS (block); t; t = BLOCK_CHAIN (t))
diff -Nrcpad gcc-17-20260531/gcc/tree-scalar-evolution.cc gcc-17-20260607/gcc/tree-scalar-evolution.cc
*** gcc-17-20260531/gcc/tree-scalar-evolution.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-scalar-evolution.cc	Sun Jun  7 22:32:14 2026
*************** analyze_and_compute_bitop_with_inv_effec
*** 3854,3859 ****
--- 3854,3922 ----
    return fold_build2 (code1, type, inv, match_op[0]);
  }
  
+ /* Try to compute the final value of PHIDEF when PHIDEF is the result of a
+    loop-header PHI.
+ 
+    This handles the nonzero-latch-count delayed-value form:
+ 
+      y_phi = PHI <latch_arg (latch), init (preheader)>
+ 
+    If the latch count is known to be nonzero, the final value is:
+ 
+      latch_arg evaluated at iteration niter - 1
+ 
+    Return NULL_TREE if the pattern does not apply.  */
+ static tree
+ compute_final_value_from_loop_phi_latch (class loop *loop,
+ 	class loop *ex_loop, gphi *header_phi, tree niter, bool* folded_casts)
+ {
+   if (gimple_bb (header_phi) != loop->header
+       || gimple_phi_num_args (header_phi) != 2)
+     return NULL_TREE;
+ 
+   /* If niter is a symbolic value make sure it can never be zero, otherwise we
+      do a bad replacement.  */
+   if (!tree_expr_nonzero_p (niter))
+     return NULL_TREE;
+ 
+   tree latch_arg = PHI_ARG_DEF_FROM_EDGE (header_phi,
+ 					  loop_latch_edge (loop));
+ 
+   tree ev = analyze_scalar_evolution_in_loop (ex_loop,
+ 					      loop,
+ 					      latch_arg,
+ 					      folded_casts);
+   if (ev == chrec_dont_know)
+     return NULL_TREE;
+ 
+   bool invariant_p;
+   if (no_evolution_in_loop_p (ev, ex_loop->num, &invariant_p) && invariant_p)
+     return ev;
+   else if (TREE_CODE (ev) == POLYNOMIAL_CHREC
+ 	   && get_chrec_loop (ev) == ex_loop)
+   {
+     tree niter_type = TREE_TYPE (niter);
+     tree prev_iter = fold_build2 (MINUS_EXPR,
+ 				  niter_type,
+ 				  niter,
+ 				  build_one_cst (niter_type));
+ 
+     tree res = chrec_apply (ex_loop->num, ev, prev_iter);
+     if (res == chrec_dont_know)
+       return NULL_TREE;
+ 
+     if (chrec_contains_symbols_defined_in_loop (res, ex_loop->num))
+     {
+       res = instantiate_parameters (ex_loop, res);
+       if (res == chrec_dont_know)
+ 	return NULL_TREE;
+     }
+ 
+     return res;
+   }
+   return NULL_TREE;
+ }
+ 
  /* Do final value replacement for LOOP, return true if we did anything.  */
  
  bool
*************** final_value_replacement_loop (class loop
*** 3865,3871 ****
    if (!exit)
      return false;
  
!   tree niter = number_of_latch_executions (loop);
    if (niter == chrec_dont_know)
      return false;
  
--- 3928,3938 ----
    if (!exit)
      return false;
  
!   class tree_niter_desc niter_desc;
!   if (!number_of_iterations_exit (loop, exit, &niter_desc, false))
!     return false;
! 
!   tree niter = niter_desc.niter;
    if (niter == chrec_dont_know)
      return false;
  
*************** final_value_replacement_loop (class loop
*** 3904,3912 ****
        def = analyze_scalar_evolution_in_loop (ex_loop, loop, def,
  					      &folded_casts);
  
!       tree bitinv_def, bit_def;
        unsigned HOST_WIDE_INT niter_num;
  
        if (def != chrec_dont_know)
  	def = compute_overall_effect_of_inner_loop (ex_loop, def);
  
--- 3971,3983 ----
        def = analyze_scalar_evolution_in_loop (ex_loop, loop, def,
  					      &folded_casts);
  
!       tree bitinv_def, bit_def, phi_latch_final_value;
        unsigned HOST_WIDE_INT niter_num;
  
+       gphi *header_phi = TREE_CODE (phidef) == SSA_NAME
+ 			 ? dyn_cast<gphi*> (SSA_NAME_DEF_STMT (phidef))
+ 			 : NULL;
+ 
        if (def != chrec_dont_know)
  	def = compute_overall_effect_of_inner_loop (ex_loop, def);
  
*************** final_value_replacement_loop (class loop
*** 3941,3946 ****
--- 4012,4027 ----
  								   niter_num)))
  	def = bit_def;
  
+       else if (header_phi
+ 	       && integer_zerop (niter_desc.may_be_zero)
+ 	       && (phi_latch_final_value
+ 		   = compute_final_value_from_loop_phi_latch (loop,
+ 							      ex_loop,
+ 							      header_phi,
+ 							      niter,
+ 							      &folded_casts)))
+ 	def = phi_latch_final_value;
+ 
        bool cond_overflow_p;
        if (!tree_does_not_contain_chrecs (def)
  	  || chrec_contains_symbols_defined_in_loop (def, ex_loop->num)
diff -Nrcpad gcc-17-20260531/gcc/tree-ssa-dom.cc gcc-17-20260607/gcc/tree-ssa-dom.cc
*** gcc-17-20260531/gcc/tree-ssa-dom.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-ssa-dom.cc	Sun Jun  7 22:32:14 2026
*************** dom_opt_dom_walker::set_global_ranges_fr
*** 1437,1442 ****
--- 1437,1448 ----
        || !assert_unreachable_fallthru_edge_p (pred_e))
      return;
  
+   // Bail if the condition leading to the unreachable edge has 2 ssa-names.
+   // See PR 125501.
+   if ((TREE_CODE (gimple_cond_lhs (stmt)) == SSA_NAME
+       && TREE_CODE (gimple_cond_rhs (stmt)) == SSA_NAME))
+     return;
+ 
    tree name;
    FOR_EACH_GORI_EXPORT_NAME (m_ranger->gori_ssa (), pred_e->src, name)
      if (all_uses_feed_or_dominated_by_stmt (name, stmt)
diff -Nrcpad gcc-17-20260531/gcc/tree-ssa-forwprop.cc gcc-17-20260607/gcc/tree-ssa-forwprop.cc
*** gcc-17-20260531/gcc/tree-ssa-forwprop.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-ssa-forwprop.cc	Sun Jun  7 22:32:14 2026
*************** optimize_vector_load (gimple_stmt_iterat
*** 4425,4431 ****
  	  gimple *use_stmt = USE_STMT (use_p);
  	  if (is_gimple_debug (use_stmt))
  	    continue;
! 	  if (!is_gimple_assign (use_stmt))
  	    {
  	      rewrite = false;
  	      break;
--- 4425,4437 ----
  	  gimple *use_stmt = USE_STMT (use_p);
  	  if (is_gimple_debug (use_stmt))
  	    continue;
! 	  tree use_lhs;
! 	  if (!is_gimple_assign (use_stmt)
! 	      /* For alias reasons we move the use to the place of the
! 		 load.  Avoid this when abnormals are involved.  */
! 	      || ((TREE_CODE ((use_lhs = gimple_assign_lhs (use_stmt)))
! 		   == SSA_NAME)
! 		  && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (use_lhs)))
  	    {
  	      rewrite = false;
  	      break;
diff -Nrcpad gcc-17-20260531/gcc/tree-ssa-loop-niter.cc gcc-17-20260607/gcc/tree-ssa-loop-niter.cc
*** gcc-17-20260531/gcc/tree-ssa-loop-niter.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-ssa-loop-niter.cc	Sun Jun  7 22:32:14 2026
*************** number_of_iterations_until_wrap (class l
*** 1453,1465 ****
    /* n < {base, C}. */
    if (integer_zerop (iv0->step) && !tree_int_cst_sign_bit (iv1->step))
      {
-       step = iv1->step;
        /* MIN + C - 1 <= n.  */
!       tree last = wide_int_to_tree (type, min + wi::to_wide (step) - 1);
        assumptions = fold_build2 (LE_EXPR, boolean_type_node, last, iv0->base);
        if (integer_zerop (assumptions))
  	return false;
  
        num = fold_build2 (MINUS_EXPR, niter_type,
  			 wide_int_to_tree (niter_type, max),
  			 fold_convert (niter_type, iv1->base));
--- 1453,1465 ----
    /* n < {base, C}. */
    if (integer_zerop (iv0->step) && !tree_int_cst_sign_bit (iv1->step))
      {
        /* MIN + C - 1 <= n.  */
!       tree last = wide_int_to_tree (type, min + wi::to_wide (iv1->step) - 1);
        assumptions = fold_build2 (LE_EXPR, boolean_type_node, last, iv0->base);
        if (integer_zerop (assumptions))
  	return false;
  
+       step = fold_convert (niter_type, iv1->step);
        num = fold_build2 (MINUS_EXPR, niter_type,
  			 wide_int_to_tree (niter_type, max),
  			 fold_convert (niter_type, iv1->base));
*************** number_of_iterations_until_wrap (class l
*** 1491,1503 ****
    /* {base, -C} < n.  */
    else if (tree_int_cst_sign_bit (iv0->step) && integer_zerop (iv1->step))
      {
!       step = fold_build1 (NEGATE_EXPR, TREE_TYPE (iv0->step), iv0->step);
!       /* MAX - C + 1 >= n.  */
!       tree last = wide_int_to_tree (type, max - wi::to_wide (step) + 1);
        assumptions = fold_build2 (GE_EXPR, boolean_type_node, last, iv1->base);
        if (integer_zerop (assumptions))
  	return false;
  
        num = fold_build2 (MINUS_EXPR, niter_type,
  			 fold_convert (niter_type, iv0->base),
  			 wide_int_to_tree (niter_type, min));
--- 1491,1504 ----
    /* {base, -C} < n.  */
    else if (tree_int_cst_sign_bit (iv0->step) && integer_zerop (iv1->step))
      {
!       /* MAX + (-C) + 1 >= n.  */
!       tree last = wide_int_to_tree (type, max + wi::to_wide (iv0->step) + 1);
        assumptions = fold_build2 (GE_EXPR, boolean_type_node, last, iv1->base);
        if (integer_zerop (assumptions))
  	return false;
  
+       step = fold_build1 (NEGATE_EXPR, niter_type,
+ 			  fold_convert (niter_type, iv0->step));
        num = fold_build2 (MINUS_EXPR, niter_type,
  			 fold_convert (niter_type, iv0->base),
  			 wide_int_to_tree (niter_type, min));
*************** number_of_iterations_until_wrap (class l
*** 1513,1519 ****
      return false;
  
    /* (delta + step - 1) / step */
-   step = fold_convert (niter_type, step);
    num = fold_build2 (PLUS_EXPR, niter_type, num, step);
    niter->niter = fold_build2 (FLOOR_DIV_EXPR, niter_type, num, step);
  
--- 1514,1519 ----
diff -Nrcpad gcc-17-20260531/gcc/tree-ssa-phiopt.cc gcc-17-20260607/gcc/tree-ssa-phiopt.cc
*** gcc-17-20260531/gcc/tree-ssa-phiopt.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-ssa-phiopt.cc	Sun Jun  7 22:32:14 2026
*************** empty_bb_or_one_feeding_into_p (basic_bl
*** 813,827 ****
  	{
  	default:
  	  return false;
! 	case CFN_BUILT_IN_BSWAP16:
! 	case CFN_BUILT_IN_BSWAP32:
! 	case CFN_BUILT_IN_BSWAP64:
! 	case CFN_BUILT_IN_BSWAP128:
! 	case CFN_BUILT_IN_BITREVERSE8:
! 	case CFN_BUILT_IN_BITREVERSE16:
! 	case CFN_BUILT_IN_BITREVERSE32:
! 	case CFN_BUILT_IN_BITREVERSE64:
! 	case CFN_BUILT_IN_BITREVERSE128:
  	CASE_CFN_FFS:
  	CASE_CFN_PARITY:
  	CASE_CFN_POPCOUNT:
--- 813,820 ----
  	{
  	default:
  	  return false;
! 	CASE_CFN_BSWAP:
! 	CASE_CFN_BITREVERSE:
  	CASE_CFN_FFS:
  	CASE_CFN_PARITY:
  	CASE_CFN_POPCOUNT:
*************** cond_removal_in_builtin_zero_pattern (ba
*** 2577,2591 ****
    bool any_val = false;
    switch (cfn)
      {
!     case CFN_BUILT_IN_BSWAP16:
!     case CFN_BUILT_IN_BSWAP32:
!     case CFN_BUILT_IN_BSWAP64:
!     case CFN_BUILT_IN_BSWAP128:
!     case CFN_BUILT_IN_BITREVERSE8:
!     case CFN_BUILT_IN_BITREVERSE16:
!     case CFN_BUILT_IN_BITREVERSE32:
!     case CFN_BUILT_IN_BITREVERSE64:
!     case CFN_BUILT_IN_BITREVERSE128:
      CASE_CFN_FFS:
      CASE_CFN_PARITY:
      CASE_CFN_POPCOUNT:
--- 2570,2577 ----
    bool any_val = false;
    switch (cfn)
      {
!     CASE_CFN_BSWAP:
!     CASE_CFN_BITREVERSE:
      CASE_CFN_FFS:
      CASE_CFN_PARITY:
      CASE_CFN_POPCOUNT:
*************** get_non_trapping (void)
*** 2999,3014 ****
     JOIN_BB:
       some more
  
!    We check that MIDDLE_BB contains only one store, that that store
     doesn't trap (not via NOTRAP, but via checking if an access to the same
!    memory location dominates us, or the store is to a local addressable
!    object) and that the store has a "simple" RHS.  */
  
  static bool
! cond_store_replacement (basic_block middle_bb, basic_block join_bb,
! 			edge e0, edge e1, hash_set<tree> *nontrap)
  {
-   gimple *assign = last_and_only_stmt (middle_bb);
    tree lhs, rhs, name, name2;
    gphi *newphi;
    gassign *new_stmt;
--- 2985,3000 ----
     JOIN_BB:
       some more
  
!    ASSIGN is a store in MIDDLE_BB which is the candidate for cselim.  We check
!    that MIDDLE_BB contains only one store (i.e., ASSIGN), that that store
     doesn't trap (not via NOTRAP, but via checking if an access to the same
!    memory location dominates us, or the store is to a local addressable object)
!    and that the store has a "simple" RHS.  */
  
  static bool
! cond_store_replacement (basic_block middle_bb, basic_block join_bb, edge e0,
! 			edge e1, gimple *assign, hash_set<tree> *nontrap)
  {
    tree lhs, rhs, name, name2;
    gphi *newphi;
    gassign *new_stmt;
*************** cond_store_replacement (basic_block midd
*** 3021,3031 ****
        || gimple_has_volatile_ops (assign))
      return false;
  
-   /* And no PHI nodes so all uses in the single stmt are also
-      available where we insert to.  */
-   if (!gimple_seq_empty_p (phi_nodes (middle_bb)))
-     return false;
- 
    locus = gimple_location (assign);
    lhs = gimple_assign_lhs (assign);
    rhs = gimple_assign_rhs1 (assign);
--- 3007,3012 ----
*************** cond_store_replacement (basic_block midd
*** 3034,3043 ****
        || !is_gimple_reg_type (TREE_TYPE (lhs)))
      return false;
  
    /* Prove that we can move the store down.  We could also check
       TREE_THIS_NOTRAP here, but in that case we also could move stores,
       whose value is not available readily, which we want to avoid.  */
!   if (!nontrap->contains (lhs))
      {
        /* If LHS is an access to a local variable without address-taken
  	 (or when we allow data races) and known not to trap, we could
--- 3015,3055 ----
        || !is_gimple_reg_type (TREE_TYPE (lhs)))
      return false;
  
+   /* Make sure all uses (except the rhs) in the single stmt are also available
+      where we insert to.  */
+   ssa_op_iter iter;
+   tree use;
+   FOR_EACH_SSA_TREE_OPERAND (use, assign, iter, SSA_OP_USE)
+     {
+       if (use == rhs)
+ 	continue;
+ 
+       gimple *stmt = SSA_NAME_DEF_STMT (use);
+       if (stmt && gimple_bb (stmt) == middle_bb)
+ 	return false;
+     }
+ 
    /* Prove that we can move the store down.  We could also check
       TREE_THIS_NOTRAP here, but in that case we also could move stores,
       whose value is not available readily, which we want to avoid.  */
!   if (nontrap->contains (lhs))
!     {
!       /* Make sure there is no load in the middle bb,
! 	 this invalidates nontrap.
! 	 FIXME: this is over conserative, this check could be made to
! 	 allow loads unrelated to lhs.  */
!       tree vuse = gimple_vuse (assign);
!       imm_use_iterator iter;
!       gimple *use_stmt;
!       FOR_EACH_IMM_USE_STMT (use_stmt, iter, vuse)
! 	{
! 	  if (use_stmt == assign)
! 	    continue;
! 	  if (gimple_bb (use_stmt) == middle_bb)
! 	    return false;
! 	}
!     }
!   else
      {
        /* If LHS is an access to a local variable without address-taken
  	 (or when we allow data races) and known not to trap, we could
*************** trailing_store_in_bb (basic_block bb, tr
*** 3297,3302 ****
--- 3309,3328 ----
    return store;
  }
  
+ /* Return the only store in MIDDLE_BB as the candidate store for cselim.  Return
+    NULL if no candidate can be found.  */
+ 
+ static gimple *
+ cselim_candidate (basic_block middle_bb, basic_block join_bb, edge e0)
+ {
+   gphi *vphi = get_virtual_phi (join_bb);
+   if (!vphi)
+     return NULL;
+ 
+   tree middle_vdef = PHI_ARG_DEF_FROM_EDGE (vphi, e0);
+   return trailing_store_in_bb (middle_bb, middle_vdef, vphi, true);
+ }
+ 
  /* Limited Conditional store replacement.  We already know
     that the recognized pattern looks like so:
  
*************** pass_cselim::execute (function *)
*** 4268,4274 ****
  	 optimization if the join block has more than two predecessors.  */
        if (EDGE_COUNT (bb2->preds) > 2)
  	return;
!       if (cond_store_replacement (bb1, bb2, e1, e2, nontrap))
  	cfgchanged = true;
      };
  
--- 4294,4302 ----
  	 optimization if the join block has more than two predecessors.  */
        if (EDGE_COUNT (bb2->preds) > 2)
  	return;
! 
!       gimple *assign = cselim_candidate (bb1, bb2, e1);
!       if (cond_store_replacement (bb1, bb2, e1, e2, assign, nontrap))
  	cfgchanged = true;
      };
  
diff -Nrcpad gcc-17-20260531/gcc/tree-ssa-reassoc.cc gcc-17-20260607/gcc/tree-ssa-reassoc.cc
*** gcc-17-20260531/gcc/tree-ssa-reassoc.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-ssa-reassoc.cc	Sun Jun  7 22:32:14 2026
*************** insert_stmt_after (gimple *stmt, gimple
*** 1521,1527 ****
        return;
      }
    else if (gimple_code (insert_point) == GIMPLE_ASM
! 	   && gimple_asm_nlabels (as_a <gasm *> (insert_point)) != 0)
      /* We have no idea where to insert - it depends on where the
         uses will be placed.  */
      gcc_unreachable ();
--- 1521,1528 ----
        return;
      }
    else if (gimple_code (insert_point) == GIMPLE_ASM
! 	   && gimple_asm_nlabels (as_a <gasm *> (insert_point)) != 0
! 	   && !single_succ_p (gimple_bb (insert_point)))
      /* We have no idea where to insert - it depends on where the
         uses will be placed.  */
      gcc_unreachable ();
diff -Nrcpad gcc-17-20260531/gcc/tree-ssa-sccvn.cc gcc-17-20260607/gcc/tree-ssa-sccvn.cc
*** gcc-17-20260531/gcc/tree-ssa-sccvn.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-ssa-sccvn.cc	Sun Jun  7 22:32:14 2026
*************** visit_nary_op (tree lhs, gassign *stmt)
*** 5778,5786 ****
      case BIT_FIELD_REF:
        if (TREE_CODE (TREE_OPERAND (rhs1, 0)) == SSA_NAME)
  	{
! 	  tree op0 = TREE_OPERAND (rhs1, 0);
! 	  gassign *ass = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op0));
! 	  if (ass
  	      && !gimple_has_volatile_ops (ass)
  	      && vn_get_stmt_kind (ass) == VN_REFERENCE)
  	    {
--- 5778,5787 ----
      case BIT_FIELD_REF:
        if (TREE_CODE (TREE_OPERAND (rhs1, 0)) == SSA_NAME)
  	{
! 	  tree op0 = vn_valueize (TREE_OPERAND (rhs1, 0));
! 	  gassign *ass;
! 	  if (TREE_CODE (op0) == SSA_NAME
! 	      && (ass = dyn_cast <gassign *> (SSA_NAME_DEF_STMT (op0)))
  	      && !gimple_has_volatile_ops (ass)
  	      && vn_get_stmt_kind (ass) == VN_REFERENCE)
  	    {
diff -Nrcpad gcc-17-20260531/gcc/tree-vect-loop-manip.cc gcc-17-20260607/gcc/tree-vect-loop-manip.cc
*** gcc-17-20260531/gcc/tree-vect-loop-manip.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-vect-loop-manip.cc	Sun Jun  7 22:32:14 2026
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 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;
--- 3506,3516 ----
        /* 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,
  						       uncounted_p, uncounted_p,
! 						       false);
  
        gcc_assert (prolog);
        prolog->force_vectorize = false;
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 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
--- 3677,3682 ----
*************** vect_loop_versioning (loop_vec_info loop
*** 4494,4500 ****
  	     && (!loop_outer (loop_to_version)->inner->next
  		 || vect_loop_vectorized_call (loop_to_version))
  	     && (!loop_outer (loop_to_version)->inner->next
! 		 || !loop_outer (loop_to_version)->inner->next->next))
  	loop_to_version = loop_outer (loop_to_version);
      }
  
--- 4492,4499 ----
  	     && (!loop_outer (loop_to_version)->inner->next
  		 || vect_loop_vectorized_call (loop_to_version))
  	     && (!loop_outer (loop_to_version)->inner->next
! 		 || !loop_outer (loop_to_version)->inner->next->next)
! 	     && can_duplicate_loop_p (loop_outer (loop_to_version)))
  	loop_to_version = loop_outer (loop_to_version);
      }
  
diff -Nrcpad gcc-17-20260531/gcc/tree-vect-slp-patterns.cc gcc-17-20260607/gcc/tree-vect-slp-patterns.cc
*** gcc-17-20260531/gcc/tree-vect-slp-patterns.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/tree-vect-slp-patterns.cc	Sun Jun  7 22:32:14 2026
*************** complex_mul_pattern::matches (complex_op
*** 1038,1043 ****
--- 1038,1048 ----
    if (op != MINUS_PLUS)
      return IFN_LAST;
  
+   /* It's only valid to form FMAs and MUL with -ffp-contract=fast.  */
+   if (flag_fp_contract_mode != FP_CONTRACT_FAST
+       && FLOAT_TYPE_P (SLP_TREE_VECTYPE (*node)))
+     return IFN_LAST;
+ 
    auto childs = *ops;
    auto l0node = SLP_TREE_CHILDREN (childs[0]);
  
*************** complex_mul_pattern::matches (complex_op
*** 1050,1060 ****
    auto_vec<slp_tree> left_op, right_op;
    slp_tree add0 = NULL;
  
!   /* Check if we may be a multiply add.  It's only valid to form FMAs
!      with -ffp-contract=fast.  */
    if (!mul0
-       && (flag_fp_contract_mode == FP_CONTRACT_FAST
- 	  || !FLOAT_TYPE_P (SLP_TREE_VECTYPE (*node)))
        && vect_match_expression_p (l0node[0], PLUS_EXPR))
      {
        auto vals = SLP_TREE_CHILDREN (l0node[0]);
--- 1055,1062 ----
    auto_vec<slp_tree> left_op, right_op;
    slp_tree add0 = NULL;
  
!   /* Check if we may be a multiply add.  */
    if (!mul0
        && vect_match_expression_p (l0node[0], PLUS_EXPR))
      {
        auto vals = SLP_TREE_CHILDREN (l0node[0]);
*************** complex_fms_pattern::matches (complex_op
*** 1285,1290 ****
--- 1287,1297 ----
    if (!vect_match_expression_p (root, MINUS_EXPR))
      return IFN_LAST;
  
+   /* It's only valid to form FMSs with -ffp-contract=fast.  */
+   if (flag_fp_contract_mode != FP_CONTRACT_FAST
+       && FLOAT_TYPE_P (SLP_TREE_VECTYPE (*ref_node)))
+     return IFN_LAST;
+ 
    /* TODO: Support invariants here, with the new layout CADD now
  	   can match before we get a chance to try CFMS.  */
    auto nodes = SLP_TREE_CHILDREN (root);
diff -Nrcpad gcc-17-20260531/gcc/wide-int.cc gcc-17-20260607/gcc/wide-int.cc
*** gcc-17-20260531/gcc/wide-int.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/wide-int.cc	Sun Jun  7 22:32:14 2026
*************** wi::bswap_large (HOST_WIDE_INT *val, con
*** 763,784 ****
    return canonize (val, len, precision);
  }
  
! /* Bitreverse the integer represented by XVAL and LEN into VAL.  Return
     the number of blocks in VAL.  Both XVAL and VAL have PRECISION bits.  */
  unsigned int
  wi::bitreverse_large (HOST_WIDE_INT *val, const HOST_WIDE_INT *xval,
! 		      unsigned int len, unsigned int precision)
  {
!   unsigned int i, s;
  
!   for (i = 0; i < len; i++)
!     val[i] = 0;
  
    for (s = 0; s < precision; s++)
      {
        unsigned int block = s / HOST_BITS_PER_WIDE_INT;
        unsigned int offset = s & (HOST_BITS_PER_WIDE_INT - 1);
!       if (((safe_uhwi (xval, len, block) >> offset) & 1) != 0)
  	{
  	  unsigned int d = (precision - 1) - s;
  	  block = d / HOST_BITS_PER_WIDE_INT;
--- 763,783 ----
    return canonize (val, len, precision);
  }
  
! /* Bitreverse the integer represented by XVAL and XLEN into VAL.  Return
     the number of blocks in VAL.  Both XVAL and VAL have PRECISION bits.  */
  unsigned int
  wi::bitreverse_large (HOST_WIDE_INT *val, const HOST_WIDE_INT *xval,
! 		      unsigned int xlen, unsigned int precision)
  {
!   unsigned int s, len = BLOCKS_NEEDED (precision);
  
!   memset (val, 0, sizeof (unsigned HOST_WIDE_INT) * len);
  
    for (s = 0; s < precision; s++)
      {
        unsigned int block = s / HOST_BITS_PER_WIDE_INT;
        unsigned int offset = s & (HOST_BITS_PER_WIDE_INT - 1);
!       if (((safe_uhwi (xval, xlen, block) >> offset) & 1) != 0)
  	{
  	  unsigned int d = (precision - 1) - s;
  	  block = d / HOST_BITS_PER_WIDE_INT;
diff -Nrcpad gcc-17-20260531/gcc/wide-int.h gcc-17-20260607/gcc/wide-int.h
*** gcc-17-20260531/gcc/wide-int.h	Sun May 31 22:32:13 2026
--- gcc-17-20260607/gcc/wide-int.h	Sun Jun  7 22:32:14 2026
*************** wi::set_bit (const T &x, unsigned int bi
*** 2655,2661 ****
  
  /* Byte swap the integer X.
     ??? This always swaps 8-bit octets, regardless of BITS_PER_UNIT.
!    This function requires X's precision to be a multiple of 16 bits,
     so care needs to be taken for targets where BITS_PER_UNIT != 8.  */
  template <typename T>
  inline WI_UNARY_RESULT (T)
--- 2655,2661 ----
  
  /* Byte swap the integer X.
     ??? This always swaps 8-bit octets, regardless of BITS_PER_UNIT.
!    This function requires X's precision to be a multiple of 8 bits,
     so care needs to be taken for targets where BITS_PER_UNIT != 8.  */
  template <typename T>
  inline WI_UNARY_RESULT (T)
diff -Nrcpad gcc-17-20260531/include/ChangeLog gcc-17-20260607/include/ChangeLog
*** gcc-17-20260531/include/ChangeLog	Sun May 31 22:32:13 2026
--- gcc-17-20260607/include/ChangeLog	Sun Jun  7 22:32:14 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-06-01  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* gomp-constants.h (GOMP_VERSION): Bump.  Signature of
+ 	GOMP_OFFLOAD_run et al changed.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* hsa.h: Reflow long line.
diff -Nrcpad gcc-17-20260531/include/gomp-constants.h gcc-17-20260607/include/gomp-constants.h
*** gcc-17-20260531/include/gomp-constants.h	Sun May 31 22:32:13 2026
--- gcc-17-20260607/include/gomp-constants.h	Sun Jun  7 22:32:14 2026
*************** enum gomp_map_kind
*** 332,338 ****
  /* Versions of libgomp and device-specific plugins.  GOMP_VERSION
     should be incremented whenever an ABI-incompatible change is introduced
     to the plugin interface defined in libgomp/libgomp.h.  */
! #define GOMP_VERSION	3
  #define GOMP_VERSION_NVIDIA_PTX 1
  #define GOMP_VERSION_GCN 3
  
--- 332,338 ----
  /* Versions of libgomp and device-specific plugins.  GOMP_VERSION
     should be incremented whenever an ABI-incompatible change is introduced
     to the plugin interface defined in libgomp/libgomp.h.  */
! #define GOMP_VERSION	4
  #define GOMP_VERSION_NVIDIA_PTX 1
  #define GOMP_VERSION_GCN 3
  
diff -Nrcpad gcc-17-20260531/libatomic/ChangeLog gcc-17-20260607/libatomic/ChangeLog
*** gcc-17-20260531/libatomic/ChangeLog	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libatomic/ChangeLog	Sun Jun  7 22:32:14 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/mingw/lock.c: Fix typos.
+ 	* config/posix/lock.c: Likewise.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* acinclude.m4: Fix typos.
diff -Nrcpad gcc-17-20260531/libatomic/config/mingw/lock.c gcc-17-20260607/libatomic/config/mingw/lock.c
*** gcc-17-20260531/libatomic/config/mingw/lock.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libatomic/config/mingw/lock.c	Sun Jun  7 22:32:14 2026
***************
*** 42,48 ****
  #endif
  
  /* The granularity at which locks are applied.  Almost certainly the
!    cachline size is the right thing to use here.  */
  #ifndef WATCH_SIZE
  #define WATCH_SIZE CACHLINE_SIZE
  #endif
--- 42,48 ----
  #endif
  
  /* The granularity at which locks are applied.  Almost certainly the
!    cacheline size is the right thing to use here.  */
  #ifndef WATCH_SIZE
  #define WATCH_SIZE CACHLINE_SIZE
  #endif
diff -Nrcpad gcc-17-20260531/libatomic/config/posix/lock.c gcc-17-20260607/libatomic/config/posix/lock.c
*** gcc-17-20260531/libatomic/config/posix/lock.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libatomic/config/posix/lock.c	Sun Jun  7 22:32:14 2026
***************
*** 40,46 ****
  #endif
  
  /* The granularity at which locks are applied.  Almost certainly the
!    cachline size is the right thing to use here.  */
  #ifndef WATCH_SIZE
  #define WATCH_SIZE	CACHLINE_SIZE
  #endif
--- 40,46 ----
  #endif
  
  /* The granularity at which locks are applied.  Almost certainly the
!    cacheline size is the right thing to use here.  */
  #ifndef WATCH_SIZE
  #define WATCH_SIZE	CACHLINE_SIZE
  #endif
diff -Nrcpad gcc-17-20260531/libbacktrace/ChangeLog gcc-17-20260607/libbacktrace/ChangeLog
*** gcc-17-20260531/libbacktrace/ChangeLog	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libbacktrace/ChangeLog	Sun Jun  7 22:32:14 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-06-02  Ian Lance Taylor  <iant@golang.org>
+ 
+ 	* elf.c (elf_zstd_decompress_frame): Support a compressed block
+ 	with no sequences, only literals.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* allocfail.sh: Fix typos.
diff -Nrcpad gcc-17-20260531/libbacktrace/elf.c gcc-17-20260607/libbacktrace/elf.c
*** gcc-17-20260531/libbacktrace/elf.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libbacktrace/elf.c	Sun Jun  7 22:32:14 2026
*************** elf_zstd_decompress_frame (const unsigne
*** 4620,4625 ****
--- 4620,4630 ----
  		pin += 2;
  	      }
  
+ 	    pback = NULL;
+ 	    bits = 0;
+ 	    literal_state = 0;
+ 	    offset_state = 0;
+ 	    match_state = 0;
  	    if (seq_count > 0)
  	      {
  		int (*pfn)(const struct elf_zstd_fse_entry *,
*************** elf_zstd_decompress_frame (const unsigne
*** 4659,4685 ****
  						 match_fse_table, 9, pfn,
  						 &match_decode))
  		  return 0;
- 	      }
  
! 	    pback = pblockend - 1;
! 	    if (!elf_fetch_backward_init (&pback, pin, &val, &bits))
! 	      return 0;
  
! 	    bits -= literal_decode.table_bits;
! 	    literal_state = ((val >> bits)
! 			     & ((1U << literal_decode.table_bits) - 1));
  
! 	    if (!elf_fetch_bits_backward (&pback, pin, &val, &bits))
! 	      return 0;
! 	    bits -= offset_decode.table_bits;
! 	    offset_state = ((val >> bits)
! 			    & ((1U << offset_decode.table_bits) - 1));
  
! 	    if (!elf_fetch_bits_backward (&pback, pin, &val, &bits))
! 	      return 0;
! 	    bits -= match_decode.table_bits;
! 	    match_state = ((val >> bits)
! 			   & ((1U << match_decode.table_bits) - 1));
  
  	    seq = 0;
  	    while (1)
--- 4664,4690 ----
  						 match_fse_table, 9, pfn,
  						 &match_decode))
  		  return 0;
  
! 		pback = pblockend - 1;
! 		if (!elf_fetch_backward_init (&pback, pin, &val, &bits))
! 		  return 0;
  
! 		bits -= literal_decode.table_bits;
! 		literal_state = ((val >> bits)
! 				 & ((1U << literal_decode.table_bits) - 1));
  
! 		if (!elf_fetch_bits_backward (&pback, pin, &val, &bits))
! 		  return 0;
! 		bits -= offset_decode.table_bits;
! 		offset_state = ((val >> bits)
! 				& ((1U << offset_decode.table_bits) - 1));
  
! 		if (!elf_fetch_bits_backward (&pback, pin, &val, &bits))
! 		  return 0;
! 		bits -= match_decode.table_bits;
! 		match_state = ((val >> bits)
! 			       & ((1U << match_decode.table_bits) - 1));
! 	      }
  
  	    seq = 0;
  	    while (1)
*************** elf_zstd_decompress_frame (const unsigne
*** 4701,4706 ****
--- 4706,4745 ----
  		uint32_t need;
  		uint32_t add;
  
+ 		if (unlikely (seq >= seq_count))
+ 		  {
+ 		    /* Copy remaining literals.  */
+ 		    if (literal_count > 0 && plit != pout)
+ 		      {
+ 			if (unlikely ((size_t)(poutend - pout)
+ 				      < literal_count))
+ 			  {
+ 			    elf_uncompress_failed ();
+ 			    return 0;
+ 			  }
+ 
+ 			if ((size_t)(plit - pout) < literal_count)
+ 			  {
+ 			    uint32_t move;
+ 
+ 			    move = plit - pout;
+ 			    while (literal_count > move)
+ 			      {
+ 				memcpy (pout, plit, move);
+ 				pout += move;
+ 				plit += move;
+ 				literal_count -= move;
+ 			      }
+ 			  }
+ 
+ 			memcpy (pout, plit, literal_count);
+ 		      }
+ 
+ 		    pout += literal_count;
+ 
+ 		    break;
+ 		  }
+ 
  		pt = &offset_decode.table[offset_state];
  		offset_basebits = pt->basebits;
  		offset_baseline = pt->baseline;
*************** elf_zstd_decompress_frame (const unsigne
*** 4938,4977 ****
  			  }
  		      }
  		  }
- 
- 		if (unlikely (seq >= seq_count))
- 		  {
- 		    /* Copy remaining literals.  */
- 		    if (literal_count > 0 && plit != pout)
- 		      {
- 			if (unlikely ((size_t)(poutend - pout)
- 				      < literal_count))
- 			  {
- 			    elf_uncompress_failed ();
- 			    return 0;
- 			  }
- 
- 			if ((size_t)(plit - pout) < literal_count)
- 			  {
- 			    uint32_t move;
- 
- 			    move = plit - pout;
- 			    while (literal_count > move)
- 			      {
- 				memcpy (pout, plit, move);
- 				pout += move;
- 				plit += move;
- 				literal_count -= move;
- 			      }
- 			  }
- 
- 			memcpy (pout, plit, literal_count);
- 		      }
- 
- 		    pout += literal_count;
- 
- 		    break;
- 		  }
  	      }
  
  	    pin = pblockend;
--- 4977,4982 ----
diff -Nrcpad gcc-17-20260531/libgcc/ChangeLog gcc-17-20260607/libgcc/ChangeLog
*** gcc-17-20260531/libgcc/ChangeLog	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/ChangeLog	Sun Jun  7 22:32:14 2026
***************
*** 1,3 ****
--- 1,43 ----
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/s390/tpf-unwind.h (s390_fallback_frame_state): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/pa/linux-atomic.c: Fix typos.
+ 	* config/pa/sync-libfuncs.c: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/nvptx/atomic.c: Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/nds32/initfini.c: Fix typos.
+ 	* config/nds32/linux-atomic.c: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/mips/linux-unwind.h (mips_fallback_frame_state): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/arm/fp16.c (__gnu_float2h_internal): Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/arc/ieee-754/divtab-arc-df.c: Fix typos.
+ 	* config/arc/ieee-754/divtab-arc-sf.c: Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/alpha/vms-unwind.h (alpha_vms_fallback_frame_state): Fix typos.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/aarch64/aarch64-unwind.h (aarch64_demangle_return_addr): Fix
+ 	typos.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* fixed-bit.c: Fix typos.
diff -Nrcpad gcc-17-20260531/libgcc/config/aarch64/aarch64-unwind.h gcc-17-20260607/libgcc/config/aarch64/aarch64-unwind.h
*** gcc-17-20260531/libgcc/config/aarch64/aarch64-unwind.h	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/aarch64/aarch64-unwind.h	Sun Jun  7 22:32:14 2026
*************** aarch64_demangle_return_addr (struct _Un
*** 154,160 ****
       AArch64 DWARF instruction and contains a valid value, or is used to
       describe the initial state set in aarch64_arch_extension_frame_init.
       Return-address signing state is normally toggled by DW_CFA_AARCH64_negate
!      _ra_state (also knwon by its alias as DW_CFA_GNU_window_save).
       However, RA state register can be set directly via DW_CFA_val_expression
       too.  GCC does not generate such CFI but some other compilers reportedly
       do (see PR104689 for more details).
--- 154,160 ----
       AArch64 DWARF instruction and contains a valid value, or is used to
       describe the initial state set in aarch64_arch_extension_frame_init.
       Return-address signing state is normally toggled by DW_CFA_AARCH64_negate
!      _ra_state (also known by its alias as DW_CFA_GNU_window_save).
       However, RA state register can be set directly via DW_CFA_val_expression
       too.  GCC does not generate such CFI but some other compilers reportedly
       do (see PR104689 for more details).
diff -Nrcpad gcc-17-20260531/libgcc/config/alpha/vms-unwind.h gcc-17-20260607/libgcc/config/alpha/vms-unwind.h
*** gcc-17-20260531/libgcc/config/alpha/vms-unwind.h	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/alpha/vms-unwind.h	Sun Jun  7 22:32:14 2026
*************** alpha_vms_fallback_frame_state (struct _
*** 114,126 ****
    fs->retaddr_column = RA_COLUMN;
  
    /* If PV designates a VMS exception vector or condition handler, we need to
!      do as if the caller was the signaling point and estabish the state of the
       intermediate VMS code (CFA, RA and saved register locations) as if it was
       a single regular function.  This requires special processing.
  
       The datastructures available from an condition dispatcher frame (signal
       context) do not contain the values of most callee-saved registers, so
!      whathever PV designates, we need to account for the registers it saves.
  
       Besides, we need to express all the locations with respect to a
       consistent CFA value, so we compute this first.  */
--- 114,126 ----
    fs->retaddr_column = RA_COLUMN;
  
    /* If PV designates a VMS exception vector or condition handler, we need to
!      do as if the caller was the signaling point and establish the state of the
       intermediate VMS code (CFA, RA and saved register locations) as if it was
       a single regular function.  This requires special processing.
  
       The datastructures available from an condition dispatcher frame (signal
       context) do not contain the values of most callee-saved registers, so
!      whatever PV designates, we need to account for the registers it saves.
  
       Besides, we need to express all the locations with respect to a
       consistent CFA value, so we compute this first.  */
diff -Nrcpad gcc-17-20260531/libgcc/config/arc/ieee-754/divtab-arc-df.c gcc-17-20260607/libgcc/config/arc/ieee-754/divtab-arc-df.c
*** gcc-17-20260531/libgcc/config/arc/ieee-754/divtab-arc-df.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/arc/ieee-754/divtab-arc-df.c	Sun Jun  7 22:32:14 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 33,41 ****
     Because of the Newton-raphson iteration step, an error in the seed at X
     is amplified by X.  Therefore, we don't want a Tchebycheff polynom
     or a polynom that is close to optimal according to the maximum norm
!    on the errro of the seed value; we want one that is close to optimal
     according to the maximum norm on the error of the result, i.e. we
!    want the maxima of the polynom to increase linearily.
     Given an interval [X0,X2) over which to approximate,
     with X1 := (X0+X2)/2,  D := X1-X0, F := 1/D, and S := D/X1 we have,
     like for Tchebycheff polynoms:
--- 33,41 ----
     Because of the Newton-raphson iteration step, an error in the seed at X
     is amplified by X.  Therefore, we don't want a Tchebycheff polynom
     or a polynom that is close to optimal according to the maximum norm
!    on the error of the seed value; we want one that is close to optimal
     according to the maximum norm on the error of the result, i.e. we
!    want the maxima of the polynom to increase linearly.
     Given an interval [X0,X2) over which to approximate,
     with X1 := (X0+X2)/2,  D := X1-X0, F := 1/D, and S := D/X1 we have,
     like for Tchebycheff polynoms:
diff -Nrcpad gcc-17-20260531/libgcc/config/arc/ieee-754/divtab-arc-sf.c gcc-17-20260607/libgcc/config/arc/ieee-754/divtab-arc-sf.c
*** gcc-17-20260531/libgcc/config/arc/ieee-754/divtab-arc-sf.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/arc/ieee-754/divtab-arc-sf.c	Sun Jun  7 22:32:14 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 33,41 ****
     Because of the Newton-raphson iteration step, an error in the seed at X
     is amplified by X.  Therefore, we don't want a Tchebycheff polynom
     or a polynom that is close to optimal according to the maximum norm
!    on the errro of the seed value; we want one that is close to optimal
     according to the maximum norm on the error of the result, i.e. we
!    want the maxima of the polynom to increase linearily.
     Given an interval [X0,X2) over which to approximate,
     with X1 := (X0+X2)/2,  D := X1-X0, F := 1/D, and S := D/X1 we have,
     like for Tchebycheff polynoms:
--- 33,41 ----
     Because of the Newton-raphson iteration step, an error in the seed at X
     is amplified by X.  Therefore, we don't want a Tchebycheff polynom
     or a polynom that is close to optimal according to the maximum norm
!    on the error of the seed value; we want one that is close to optimal
     according to the maximum norm on the error of the result, i.e. we
!    want the maxima of the polynom to increase linearly.
     Given an interval [X0,X2) over which to approximate,
     with X1 := (X0+X2)/2,  D := X1-X0, F := 1/D, and S := D/X1 we have,
     like for Tchebycheff polynoms:
diff -Nrcpad gcc-17-20260531/libgcc/config/arm/fp16.c gcc-17-20260607/libgcc/config/arm/fp16.c
*** gcc-17-20260531/libgcc/config/arm/fp16.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/arm/fp16.c	Sun Jun  7 22:32:14 2026
*************** __gnu_float2h_internal (const struct for
*** 152,158 ****
  	 before adding it to the calculated exponent.
       2.  When we were calculating rounding, we left the mantissa with the
  	 number of bits of the source operand, it needs reduced to ten
! 	 bits (+1 for the afforementioned leading 1) by shifting right by
  	 the number of bits in the source mantissa - 10.
       3.  To ensure the leading 1 in the mantissa is applied to the exponent
  	 we need to add the mantissa rather than apply an arithmetic "or"
--- 152,158 ----
  	 before adding it to the calculated exponent.
       2.  When we were calculating rounding, we left the mantissa with the
  	 number of bits of the source operand, it needs reduced to ten
! 	 bits (+1 for the aforementioned leading 1) by shifting right by
  	 the number of bits in the source mantissa - 10.
       3.  To ensure the leading 1 in the mantissa is applied to the exponent
  	 we need to add the mantissa rather than apply an arithmetic "or"
diff -Nrcpad gcc-17-20260531/libgcc/config/avr/libf7/ChangeLog gcc-17-20260607/libgcc/config/avr/libf7/ChangeLog
*** gcc-17-20260531/libgcc/config/avr/libf7/ChangeLog	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/avr/libf7/ChangeLog	Sun Jun  7 22:32:14 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* libf7.c (f7_addsub): Likewise.
+ 	(f7_madd_msub): Likewise.
+ 	* libf7.h (f7_Ildexp): Likewise.
+ 
  2026-05-28  Georg-Johann Lay  <avr@gjlay.de>
  
  	* libf7.h: Add "[len=...]]" notes to all non-empty inline asm's.
diff -Nrcpad gcc-17-20260531/libgcc/config/avr/libf7/libf7.c gcc-17-20260607/libgcc/config/avr/libf7/libf7.c
*** gcc-17-20260531/libgcc/config/avr/libf7/libf7.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/avr/libf7/libf7.c	Sun Jun  7 22:32:14 2026
*************** void f7_addsub (f7_t *cc, const f7_t *aa
*** 959,965 ****
    // From this point on, no more access aa->flags or bb->flags
    // to avoid early-clobber when writing cc->flags.
  
!   // Hande NaNs.
    if (f7_class_nan (a_class | b_class))
      return f7_set_nan (cc);
  
--- 959,965 ----
    // From this point on, no more access aa->flags or bb->flags
    // to avoid early-clobber when writing cc->flags.
  
!   // Handle NaNs.
    if (f7_class_nan (a_class | b_class))
      return f7_set_nan (cc);
  
*************** void f7_madd_msub (f7_t *cc, const f7_t
*** 1035,1041 ****
    uint8_t x_sign = f7_signbit (xx);
    int16_t x_expo = xx->expo;
    f7_addsub (xx, xx, dd, neg_d);
!   // Now add LSB.  If cancellation occured in the add / sub, then we have the
    // chance of extra 8 bits of precision.  Turn LSByte into f7_t.
    f7_clr (cc);
    cc->expo = sub_ssat16 (x_expo, F7_MANT_BITS);
--- 1035,1041 ----
    uint8_t x_sign = f7_signbit (xx);
    int16_t x_expo = xx->expo;
    f7_addsub (xx, xx, dd, neg_d);
!   // Now add LSB.  If cancellation occurred in the add / sub, then we have the
    // chance of extra 8 bits of precision.  Turn LSByte into f7_t.
    f7_clr (cc);
    cc->expo = sub_ssat16 (x_expo, F7_MANT_BITS);
diff -Nrcpad gcc-17-20260531/libgcc/config/avr/libf7/libf7.h gcc-17-20260607/libgcc/config/avr/libf7/libf7.h
*** gcc-17-20260531/libgcc/config/avr/libf7/libf7.h	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/avr/libf7/libf7.h	Sun Jun  7 22:32:14 2026
*************** extern void f7_Isqrt (f7_t*);
*** 670,676 ****
  extern void f7_Isquare (f7_t*);
  extern f7_t* f7_Ildexp (f7_t*, int);
  
! // Protoypes for some functions from libf7-asm.sx.
  F7_CONST extern uint16_t f7_sqrt16_round (uint16_t) F7ASM(f7_sqrt16_round_asm);
  F7_CONST extern uint8_t  f7_sqrt16_floor (uint16_t) F7ASM(f7_sqrt16_floor_asm);
  extern void f7_addsub_mant_scaled_asm (f7_t*, const f7_t*, const f7_t*, uint8_t);
--- 670,676 ----
  extern void f7_Isquare (f7_t*);
  extern f7_t* f7_Ildexp (f7_t*, int);
  
! // Prototypes for some functions from libf7-asm.sx.
  F7_CONST extern uint16_t f7_sqrt16_round (uint16_t) F7ASM(f7_sqrt16_round_asm);
  F7_CONST extern uint8_t  f7_sqrt16_floor (uint16_t) F7ASM(f7_sqrt16_floor_asm);
  extern void f7_addsub_mant_scaled_asm (f7_t*, const f7_t*, const f7_t*, uint8_t);
diff -Nrcpad gcc-17-20260531/libgcc/config/mips/linux-unwind.h gcc-17-20260607/libgcc/config/mips/linux-unwind.h
*** gcc-17-20260531/libgcc/config/mips/linux-unwind.h	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/mips/linux-unwind.h	Sun Jun  7 22:32:14 2026
*************** mips_fallback_frame_state (struct _Unwin
*** 113,119 ****
       address of the second byte of the faulting instruction.
  
       Note that setting fs->signal_frame would not work.  As the comment
!      above MASK_RETURN_ADDR explains, MIPS unwinders must earch for an
       odd-valued address.  */
    fs->regs.how[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__]
      = REG_SAVED_VAL_OFFSET;
--- 113,119 ----
       address of the second byte of the faulting instruction.
  
       Note that setting fs->signal_frame would not work.  As the comment
!      above MASK_RETURN_ADDR explains, MIPS unwinders must search for an
       odd-valued address.  */
    fs->regs.how[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__]
      = REG_SAVED_VAL_OFFSET;
diff -Nrcpad gcc-17-20260531/libgcc/config/nds32/initfini.c gcc-17-20260607/libgcc/config/nds32/initfini.c
*** gcc-17-20260531/libgcc/config/nds32/initfini.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/nds32/initfini.c	Sun Jun  7 22:32:14 2026
*************** extern func_ptr __EH_FRAME_BEGIN__[];
*** 70,76 ****
  
  
  /* Note that the following two functions are going to be chained into
!    constructor and destructor list, repectively.  So these two declarations
     must be placed after __CTOR_LIST__ and __DTOR_LIST.  */
  extern void __nds32_register_eh(void) __attribute__((constructor, used));
  extern void __nds32_deregister_eh(void) __attribute__((destructor, used));
--- 70,76 ----
  
  
  /* Note that the following two functions are going to be chained into
!    constructor and destructor list, respectively.  So these two declarations
     must be placed after __CTOR_LIST__ and __DTOR_LIST.  */
  extern void __nds32_register_eh(void) __attribute__((constructor, used));
  extern void __nds32_deregister_eh(void) __attribute__((destructor, used));
diff -Nrcpad gcc-17-20260531/libgcc/config/nds32/linux-atomic.c gcc-17-20260607/libgcc/config/nds32/linux-atomic.c
*** gcc-17-20260531/libgcc/config/nds32/linux-atomic.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/nds32/linux-atomic.c	Sun Jun  7 22:32:15 2026
*************** see the files COPYING3 and COPYING.RUNTI
*** 24,30 ****
     using the kernel helper defined below.  There is no support for
     64-bit operations yet.  */
  
! /* This function copy form NDS32 Linux-kernal. */
  static inline int
  __kernel_cmpxchg (int oldval, int newval, int *mem)
  {
--- 24,30 ----
     using the kernel helper defined below.  There is no support for
     64-bit operations yet.  */
  
! /* This function copy form NDS32 Linux-kernel. */
  static inline int
  __kernel_cmpxchg (int oldval, int newval, int *mem)
  {
diff -Nrcpad gcc-17-20260531/libgcc/config/nvptx/atomic.c gcc-17-20260607/libgcc/config/nvptx/atomic.c
*** gcc-17-20260531/libgcc/config/nvptx/atomic.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/nvptx/atomic.c	Sun Jun  7 22:32:15 2026
***************
*** 30,36 ****
     value that we are interested in are accessible as well (which should
     normally be the case).  Note that if the contents of the word surrounding
     the subword changes between the __sync_val_compare_and_swap_4 and the
!    preceeding load of oldword, while the subword does not, the implementation
     loops, which may manifest worst-case as a hang.  */
  
  #define __SYNC_SUBWORD_COMPARE_AND_SWAP(TYPE, SIZE)			     \
--- 30,36 ----
     value that we are interested in are accessible as well (which should
     normally be the case).  Note that if the contents of the word surrounding
     the subword changes between the __sync_val_compare_and_swap_4 and the
!    preceding load of oldword, while the subword does not, the implementation
     loops, which may manifest worst-case as a hang.  */
  
  #define __SYNC_SUBWORD_COMPARE_AND_SWAP(TYPE, SIZE)			     \
diff -Nrcpad gcc-17-20260531/libgcc/config/pa/linux-atomic.c gcc-17-20260607/libgcc/config/pa/linux-atomic.c
*** gcc-17-20260531/libgcc/config/pa/linux-atomic.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/pa/linux-atomic.c	Sun Jun  7 22:32:15 2026
*************** typedef long long unsigned int u64;
*** 40,46 ****
  #endif
  
  /* PA-RISC 2.0 supports out-of-order execution for loads and stores.
!    Thus, we need to synchonize memory accesses.  For more info, see:
     "Advanced Performance Features of the 64-bit PA-8000" by Doug Hunt.
  
     We implement byte, short and int versions of each atomic operation
--- 40,46 ----
  #endif
  
  /* PA-RISC 2.0 supports out-of-order execution for loads and stores.
!    Thus, we need to synchronize memory accesses.  For more info, see:
     "Advanced Performance Features of the 64-bit PA-8000" by Doug Hunt.
  
     We implement byte, short and int versions of each atomic operation
diff -Nrcpad gcc-17-20260531/libgcc/config/pa/sync-libfuncs.c gcc-17-20260607/libgcc/config/pa/sync-libfuncs.c
*** gcc-17-20260531/libgcc/config/pa/sync-libfuncs.c	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/pa/sync-libfuncs.c	Sun Jun  7 22:32:15 2026
*************** typedef long long unsigned int u64;
*** 35,41 ****
  #endif
  
  /* PA-RISC 2.0 supports out-of-order execution for loads and stores.
!    Thus, we need to synchonize memory accesses.  For more info, see:
     "Advanced Performance Features of the 64-bit PA-8000" by Doug Hunt.  */
  
  typedef volatile int __attribute__((aligned (16))) ldcw_t;
--- 35,41 ----
  #endif
  
  /* PA-RISC 2.0 supports out-of-order execution for loads and stores.
!    Thus, we need to synchronize memory accesses.  For more info, see:
     "Advanced Performance Features of the 64-bit PA-8000" by Doug Hunt.  */
  
  typedef volatile int __attribute__((aligned (16))) ldcw_t;
diff -Nrcpad gcc-17-20260531/libgcc/config/s390/tpf-unwind.h gcc-17-20260607/libgcc/config/s390/tpf-unwind.h
*** gcc-17-20260531/libgcc/config/s390/tpf-unwind.h	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcc/config/s390/tpf-unwind.h	Sun Jun  7 22:32:15 2026
*************** s390_fallback_frame_state (struct _Unwin
*** 93,99 ****
  	}
  
        /* ... except for %r14, which is stored at CFA+offset where offset
! 	 is displacment of ICST_CRET or ICST_SRET from CFA */
        if ( __isPATrange(context->ra) )  {
  	   fs->regs.how[14] = REG_SAVED_OFFSET;
  	   fs->regs.reg[14].loc.offset = ICST_CRET - STACK_POINTER_OFFSET;
--- 93,99 ----
  	}
  
        /* ... except for %r14, which is stored at CFA+offset where offset
! 	 is displacement of ICST_CRET or ICST_SRET from CFA */
        if ( __isPATrange(context->ra) )  {
  	   fs->regs.how[14] = REG_SAVED_OFFSET;
  	   fs->regs.reg[14].loc.offset = ICST_CRET - STACK_POINTER_OFFSET;
diff -Nrcpad gcc-17-20260531/libgcobol/ChangeLog gcc-17-20260607/libgcobol/ChangeLog
*** gcc-17-20260531/libgcobol/ChangeLog	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcobol/ChangeLog	Sun Jun  7 22:32:15 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-06-02  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* intrinsic.cc (__gg__trim): Eliminate useless comment.
+ 	(__gg__trim_1): New function.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* README: Reflow long line.
diff -Nrcpad gcc-17-20260531/libgcobol/Makefile.am gcc-17-20260607/libgcobol/Makefile.am
*** gcc-17-20260531/libgcobol/Makefile.am	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcobol/Makefile.am	Sun Jun  7 22:32:15 2026
*************** $(LC_COPYDIR_BUILD)/%.cpy: ${srcdir}/com
*** 157,168 ****
  	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
--- 157,190 ----
  	mkdir -p `dirname $@`
  	cp $< $@
  
+ # Bring posix copybooks into the build tree.
+ LP_COPYDIR_BUILD = $(PWD)/posix/cpy
+ LP_COPYBOOKS = \
+ 	$(LP_COPYDIR_BUILD)/posix-errno.cpy \
+ 	$(LP_COPYDIR_BUILD)/posix-exit.cpy \
+ 	$(LP_COPYDIR_BUILD)/posix-fstat.cpy \
+ 	$(LP_COPYDIR_BUILD)/posix-ftruncate.cpy \
+ 	$(LP_COPYDIR_BUILD)/posix-localtime.cpy \
+ 	$(LP_COPYDIR_BUILD)/posix-lseek.cpy \
+ 	$(LP_COPYDIR_BUILD)/posix-mkdir.cpy \
+ 	$(LP_COPYDIR_BUILD)/posix-open.cpy \
+ 	$(LP_COPYDIR_BUILD)/posix-read.cpy \
+ 	$(LP_COPYDIR_BUILD)/posix-stat.cpy \
+ 	$(LP_COPYDIR_BUILD)/psx-lseek.cpy \
+ 	$(LP_COPYDIR_BUILD)/psx-open.cpy \
+ 	$(LP_COPYDIR_BUILD)/statbuf.cpy \
+ 	$(LP_COPYDIR_BUILD)/tm.cpy
+ 
+ $(LP_COPYDIR_BUILD)/%.cpy: ${srcdir}/posix/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)
  
  # Rules for libgcobol_posix.so and libgcobol_compat_gnu.so, which have
  # COBOL sources.  They require gcobol and libgcobol to have already
*************** libgcobol_la_DEPENDENCIES = libgcobol.sp
*** 178,189 ****
  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) \
--- 200,213 ----
  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) \
! 	$(LP_COPYBOOKS)
  
  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) \
! 	$(LC_COPYBOOKS)
  
  
  LTCOBCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
diff -Nrcpad gcc-17-20260531/libgcobol/Makefile.in gcc-17-20260607/libgcobol/Makefile.in
*** gcc-17-20260531/libgcobol/Makefile.in	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcobol/Makefile.in	Sun Jun  7 22:32:15 2026
*************** gcc_version := $(shell @get_gcc_base_ver
*** 569,581 ****
  @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
--- 569,600 ----
  @BUILD_LIBGCOBOL_TRUE@	$(LC_COPYDIR_BUILD)/stored-char-length.cpy
  
  
+ # Bring posix copybooks into the build tree.
+ @BUILD_LIBGCOBOL_TRUE@LP_COPYDIR_BUILD = $(PWD)/posix/cpy
+ @BUILD_LIBGCOBOL_TRUE@LP_COPYBOOKS = \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-errno.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-exit.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-fstat.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-ftruncate.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-localtime.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-lseek.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-mkdir.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-open.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-read.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/posix-stat.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/psx-lseek.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/psx-open.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/statbuf.cpy \
+ @BUILD_LIBGCOBOL_TRUE@	$(LP_COPYDIR_BUILD)/tm.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)
  
  # Rules for libgcobol_posix.so and libgcobol_compat_gnu.so, which have
  # COBOL sources.  They require gcobol and libgcobol to have already
*************** gcc_version := $(shell @get_gcc_base_ver
*** 590,601 ****
  @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)
  
--- 609,624 ----
  @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@	$(LP_COPYBOOKS)
! 
  @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@	$(LC_COPYBOOKS)
! 
  @BUILD_LIBGCOBOL_TRUE@LTCOBCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
  @BUILD_LIBGCOBOL_TRUE@	--mode=compile $(AM_COBC) $(AM_COBFLAGS)
  
*************** uninstall-am: uninstall-nobase_libsubinc
*** 1104,1109 ****
--- 1127,1136 ----
  @BUILD_LIBGCOBOL_TRUE@	mkdir -p `dirname $@`
  @BUILD_LIBGCOBOL_TRUE@	cp $< $@
  
+ @BUILD_LIBGCOBOL_TRUE@$(LP_COPYDIR_BUILD)/%.cpy: ${srcdir}/posix/cpy/%.cpy
+ @BUILD_LIBGCOBOL_TRUE@	mkdir -p `dirname $@`
+ @BUILD_LIBGCOBOL_TRUE@	cp $< $@
+ 
  @BUILD_LIBGCOBOL_TRUE@.cbl.o:
  @BUILD_LIBGCOBOL_TRUE@	$(COBC) -o $@ $(COBFLAGS) -c $<
  
diff -Nrcpad gcc-17-20260531/libgcobol/common-defs.h gcc-17-20260607/libgcobol/common-defs.h
*** gcc-17-20260531/libgcobol/common-defs.h	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcobol/common-defs.h	Sun Jun  7 22:32:15 2026
*************** enum classify_t {
*** 407,412 ****
--- 407,420 ----
    ClassKanjiType,
  };
  
+ enum cbl_dialect_t {
+   dialect_iso_e = 0x00,
+   dialect_gcc_e = 0x01,
+   dialect_ibm_e = 0x02,
+   dialect_mf_e  = 0x04,
+   dialect_gnu_e = 0x08,
+ };
+ 
  static inline const char *
  classify_str( enum classify_t classify ) {
    switch(classify) {
diff -Nrcpad gcc-17-20260531/libgcobol/intrinsic.cc gcc-17-20260607/libgcobol/intrinsic.cc
*** gcc-17-20260531/libgcobol/intrinsic.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcobol/intrinsic.cc	Sun Jun  7 22:32:15 2026
*************** __gg__formatted_date(cblc_field_t *dest,
*** 1607,1613 ****
                       size_t arg1_offset,
                       size_t arg1_size,
                 const cblc_field_t *arg2, // integer date
!                      size_t arg2_offset,  
                       size_t arg2_size)
    {
    // FUNCTION FORMATTED-DATE
--- 1607,1613 ----
                       size_t arg1_offset,
                       size_t arg1_size,
                 const cblc_field_t *arg2, // integer date
!                      size_t arg2_offset,
                       size_t arg2_size)
    {
    // FUNCTION FORMATTED-DATE
*************** change_case( cblc_field_t *dest,
*** 2117,2123 ****
                                             &converted_bytes);
    // Make a copy of it to prevent the static nature of iconverter from causing
    // trouble:
!   cbl_char_t *duped = 
            static_cast<cbl_char_t *>(__gg__memdup(converted, converted_bytes));
    cbl_char_t *pend = duped + converted_bytes / width_of_utf32;
  
--- 2117,2123 ----
                                             &converted_bytes);
    // Make a copy of it to prevent the static nature of iconverter from causing
    // trouble:
!   cbl_char_t *duped =
            static_cast<cbl_char_t *>(__gg__memdup(converted, converted_bytes));
    cbl_char_t *pend = duped + converted_bytes / width_of_utf32;
  
*************** __gg__rem(cblc_field_t *dest,
*** 3509,3587 ****
  
  extern "C"
  void
! __gg__trim( cblc_field_t *dest,
!       const cblc_field_t *arg1,
              size_t        arg1_offset,
              size_t        arg1_size,
!       const cblc_field_t *arg2,
!             size_t        arg2_offset,
!             size_t        arg2_size)
    {
    // We assume that dest is an intermediate_e with the same encoding as arg1.
!   assert(     dest->type == FldAlphanumeric 
            && (dest->attr & intermediate_e)
            &&  dest->encoding == arg1->encoding );
!   charmap_t *charmap = __gg__get_charmap(arg1->encoding);
    int stride = charmap->stride();
-   cbl_char_t mapped_space = charmap->mapped_character(ascii_space);
- 
-   int rdigits;
-   __int128 type = __gg__binary_value_from_qualified_field(&rdigits,
-                                                           arg2,
-                                                           arg2_offset,
-                                                           arg2_size);
-   //static const int BOTH     = 0;
-   #define LEADING  1  // Remove leading  spaces
-   #define TRAILING 2  // Remove trailing spaces
  
    char *left  = reinterpret_cast<char *>(arg1->data) + arg1_offset;
    char *right = left + arg1_size-stride; // Points AT the character, not beyond
!   switch(type)
      {
!     case 0: // Strip off leading and trailing spaces
!       while(left <= right)
!         {
!         if( charmap->getch(left, (size_t)0) != mapped_space )
            {
!           break;
            }
!         left += stride;
!         }
!       while(left <= right)
!         {
!         if( charmap->getch(right, (size_t)0) != mapped_space )
            {
!           break;
            }
!         right -= stride;
!         }
!       break;
!     
!     case LEADING: // Just leading
!       {
!       while(left <= right)
          {
!         if( charmap->getch(left,  (size_t)0) != mapped_space )
            {
!           break;
            }
!         left += stride;
          }
-       break;
-       }
  
!     case TRAILING: // Just trailing
!       {
!       while(left <= right)
          {
!         if( charmap->getch(right,  (size_t)0) != mapped_space )
            {
!           break;
            }
!         right -= stride;
          }
-       break;
        }
      }
    size_t ncount = right+stride - left;
    __gg__adjust_dest_size(dest, ncount);
--- 3509,3639 ----
  
  extern "C"
  void
! __gg__trim_1( cblc_field_t *dest,
!         const cblc_field_t *src,
!               size_t        src_offset,
!               size_t        src_size,
!         const unsigned char *chars,
!               int           count_how ) // (args.size()<<8) + how),
!   {
!   /* This routine is called for ASCII/EBCDIC single-byte-code values. Since
!      we know that, we can use the fast std::find_if() routine.  */
! 
!   #define LEADING  1  // Remove leading  spaces
!   #define TRAILING 2  // Remove trailing spaces
! 
!   const uint8_t *left  = src->data + src_offset;    // Leftmost  character
!   const uint8_t *right = left      + src_size;      // One past the end
! 
!   int count = count_how >> 8;
!   for(int i=0; i<count; i++)
!     {
!     uint8_t trimch = chars[i];
! 
!     if ((count_how & LEADING) && left < right)
!       {
!       left = std::find_if(left,
!                           right,
!                           [trimch](uint8_t c){return c != trimch;});
!       }
! 
!     if( (count_how & TRAILING) && left < right)
!       {
!       right = std::find_if(
!           std::make_reverse_iterator(right),
!           std::make_reverse_iterator(left),
!           [trimch](uint8_t c) {return c != trimch;}
!       ).base();
!       }
!     }
! 
!   size_t bytes_converted = right - left;
!   __gg__adjust_dest_size(dest, bytes_converted);
! 
!   memcpy(dest->data,
!          left,
!          bytes_converted);
! 
!   return;
!   }
! 
! extern "C"
! void
! __gg__trim_a( cblc_field_t *dest,
!       const cblc_field_t *arg1,        // This is the string to be trimmed
              size_t        arg1_offset,
              size_t        arg1_size,
!             char         *arg2,        // This is the string of characters
!             size_t        arg2_size,   // to be removed
!             int type)
    {
+   #define LEADING  1  // Remove leading  characters
+   #define TRAILING 2  // Remove trailing trailing characters
+ 
    // We assume that dest is an intermediate_e with the same encoding as arg1.
!   assert(     dest->type == FldAlphanumeric
            && (dest->attr & intermediate_e)
            &&  dest->encoding == arg1->encoding );
!   const charmap_t *charmap = __gg__get_charmap(arg1->encoding);
    int stride = charmap->stride();
  
+   char *strippers = arg2;
+   const char *strip_end = arg2 + arg2_size;
    char *left  = reinterpret_cast<char *>(arg1->data) + arg1_offset;
    char *right = left + arg1_size-stride; // Points AT the character, not beyond
! 
!   while( strippers < strip_end )
      {
!     cbl_char_t stripper = charmap->getch(strippers, (size_t)0);
! 
!     switch(type)
!       {
!       case 3: // Strip off leading and trailing spaces
!         while(left <= right)
            {
!           if( charmap->getch(left, (size_t)0) != stripper )
!             {
!             break;
!             }
!           left += stride;
            }
!         while(left <= right)
            {
!           if( charmap->getch(right, (size_t)0) != stripper )
!             {
!             break;
!             }
!           right -= stride;
            }
!         break;
! 
!       case LEADING: // Just leading
          {
!         while(left <= right)
            {
!           if( charmap->getch(left,  (size_t)0) != stripper )
!             {
!             break;
!             }
!           left += stride;
            }
!         break;
          }
  
!       case TRAILING: // Just trailing
          {
!         while(left <= right)
            {
!           if( charmap->getch(right,  (size_t)0) != stripper )
!             {
!             break;
!             }
!           right -= stride;
            }
!         break;
          }
        }
+     strippers += stride;
      }
    size_t ncount = right+stride - left;
    __gg__adjust_dest_size(dest, ncount);
*************** ismatch(const char *a1, const char *a2,
*** 5354,5360 ****
    }
  
  static bool
! iscasematch(const char *a1, const char *a2, 
              const char *b1, const char *b2,
              bool is_ebcdic)
    {
--- 5406,5412 ----
    }
  
  static bool
! iscasematch(const char *a1, const char *a2,
              const char *b1, const char *b2,
              bool is_ebcdic)
    {
*************** __gg__locale_time_from_seconds( cblc_fie
*** 5840,5842 ****
--- 5892,5896 ----
    __gg__field_from_string(dest, 0, dest->capacity, converted, bytes_converted);
    free(converted);
    }
+ 
+ 
diff -Nrcpad gcc-17-20260531/libgcobol/libgcobol.cc gcc-17-20260607/libgcobol/libgcobol.cc
*** gcc-17-20260531/libgcobol/libgcobol.cc	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgcobol/libgcobol.cc	Sun Jun  7 22:32:15 2026
*************** int         __gg__rdigits
*** 156,161 ****
--- 156,162 ----
  int         __gg__nop                         = 0    ;
  int         __gg__main_called                 = 0    ;
  size_t      __gg__entry_index                 = 0    ;
+ int         __gg__dialects                    = 0    ;
  
  // During SORT operations, we don't want the end-of-file condition, which
  // happens as a matter of course, from setting the EOF exception condition.
*************** format_for_display_internal(char **dest,
*** 3481,3491 ****
          {
          case 4:
            {
!           // We will convert based on the fact that for float32, any seven-digit
!           // number converts to float32 and then back again unchanged.
  
!           // We will also format numbers so that we produce 0.01 and 1E-3 on the low
!           // side, and 9999999 and then 1E+7 on the high side
            // 10,000,000 = 1E7
            char ach[64];
            _Float32 floatval = *PTRCAST(_Float32, actual_location);
--- 3482,3493 ----
          {
          case 4:
            {
!           // We will convert based on the fact that for float32, any
!           // seven-digit number converts to float32 and then back again
!           // unchanged.
  
!           // We will also format numbers so that we produce 0.01 and 1E-3 on
!           // the low side, and 9999999 and then 1E+7 on the high side
            // 10,000,000 = 1E7
            char ach[64];
            _Float32 floatval = *PTRCAST(_Float32, actual_location);
*************** format_for_display_internal(char **dest,
*** 3497,3519 ****
              }
            else
              {
!             p += 1;
!             int exp = atoi(p);
!             if( exp >= 6 || exp <= -5 )
                {
!               // We are going to stick with the E notation, so ach has our result
                }
              else
                {
!               // We are going to produce our number in such a way that we specify
!               // seven signicant digits, no matter where the decimal point lands.
!               // Note that exp is in the range of 6 to -2
  
!               int precision = 9 - exp;
!               sprintf(ach, "%.*f", precision, (double)floatval );
                }
-             __gg__remove_trailing_zeroes(ach);
-             __gg__realloc_if_necessary(dest, dest_size, strlen(ach)+1);
              }
            strcpy(*dest, ach);
            break;
--- 3499,3553 ----
              }
            else
              {
!             if( __gg__dialects & dialect_ibm_e )
                {
!               // IBM specifies that this look like
!               //     A COMP-1 item will display as if it had an external
!               //     floating-point PICTURE clause of -.9(8)E-99.
!               // The plus signs are suppressed.
!               floatval *= 10; // Needed because we are going to flip the
!               //              // decimal point and first digit.
!               if( floatval >= 0 )
!                 {
!                 strfromf32(ach+1, sizeof(ach), "%.7E", floatval);
!                 ach[0] = ascii_space;
!                 }
!               else
!                 {
!                 strfromf32(ach, sizeof(ach), "%.7E", floatval);
!                 }
!               // Turn 1.23 into .123
!               ach[2] = ach[1];
!               ach[1] = ascii_period;
! 
!               // Turn "E+00" to the IBM "E 00"
!               p = strchr(ach, ascii_plus);
!               if(p)
!                 {
!                 *p = ascii_space;
!                 }
                }
              else
                {
!               p += 1;
!               int exp = atoi(p);
!               if( exp >= 6 || exp <= -5 )
!                 {
!                 // We are going to stick with the E notation, so ach has our
!                 // result
!                 }
!               else
!                 {
!                 // We are going to produce our number in such a way that we
!                 // specify seven signicant digits, no matter where the decimal
!                 // point lands. Note that exp is in the range of 6 to -2
  
!                 int precision = 9 - exp;
!                 sprintf(ach, "%.*f", precision, (double)floatval );
!                 }
!               __gg__remove_trailing_zeroes(ach);
!               __gg__realloc_if_necessary(dest, dest_size, strlen(ach)+1);
                }
              }
            strcpy(*dest, ach);
            break;
*************** format_for_display_internal(char **dest,
*** 3524,3531 ****
            // We will convert based on the fact that for float32, any 15-digit
            // number converts to float64 and then back again unchanged.
  
!           // We will also format numbers so that we produce 0.01 and 1E-3 on the low
!           // side, and 9999999 and then 1E+15 on the high side
            char ach[64];
            _Float64 floatval = *PTRCAST(_Float64, actual_location);
            strfromf64(ach, sizeof(ach), "%.17E", floatval);
--- 3558,3565 ----
            // We will convert based on the fact that for float32, any 15-digit
            // number converts to float64 and then back again unchanged.
  
!           // We will also format numbers so that we produce 0.01 and 1E-3 on
!           // the low side, and 9999999 and then 1E+15 on the high side
            char ach[64];
            _Float64 floatval = *PTRCAST(_Float64, actual_location);
            strfromf64(ach, sizeof(ach), "%.17E", floatval);
*************** format_for_display_internal(char **dest,
*** 3536,3559 ****
              }
            else
              {
!             p += 1;
!             int exp = atoi(p);
!             if( exp >= 6 || exp <= -5 )
                {
!               // We are going to stick with the E notation, so ach has our result
                }
              else
                {
!               // We are going to produce our number in such a way that we specify
!               // seven signicant digits, no matter where the decimal point lands.
!               // Note that exp is in the range of 6 to -2
  
!               int precision = 17 - exp;
  
!               sprintf(ach, "%.*f", precision, (double)floatval );
                }
-             __gg__remove_trailing_zeroes(ach);
-             __gg__realloc_if_necessary(dest, dest_size, strlen(ach)+1);
              }
            strcpy(*dest, ach);
            break;
--- 3570,3624 ----
              }
            else
              {
!             if( __gg__dialects & dialect_ibm_e )
                {
!               // IBM specifies that this look like
!               //     A COMP-2 item will display as if it had an external
!               //     floating-point PICTURE clause of -.9(17)E-99.
!               // The plus signs are suppressed.
!               floatval *= 10; // Needed because we are going to flip the
!               //              // decimal point and first digit.
!               if( floatval >= 0 )
!                 {
!                 strfromf64(ach+1, sizeof(ach), "%.16E", floatval);
!                 ach[0] = ascii_space;
!                 }
!               else
!                 {
!                 strfromf64(ach, sizeof(ach), "%.16E", floatval);
!                 }
!               // Turn 1.23 into .123
!               ach[2] = ach[1];
!               ach[1] = ascii_period;
!               // Turn "E+00" to the IBM "E 00"
!               p = strchr(ach, ascii_plus);
!               if(p)
!                 {
!                 *p = ascii_space;
!                 }
                }
              else
                {
!               p += 1;
!               int exp = atoi(p);
!               if( exp >= 6 || exp <= -5 )
!                 {
!                 // We are going to stick with the E notation, so ach has our
!                 // result
!                 }
!               else
!                 {
!                 // We are going to produce our number in such a way that we
!                 // specify seven signicant digits, no matter where the decimal
!                 // point lands.  Note that exp is in the range of 6 to -2
  
!                 int precision = 17 - exp;
  
!                 sprintf(ach, "%.*f", precision, (double)floatval );
!                 }
!               __gg__remove_trailing_zeroes(ach);
!               __gg__realloc_if_necessary(dest, dest_size, strlen(ach)+1);
                }
              }
            strcpy(*dest, ach);
            break;
*************** format_for_display_internal(char **dest,
*** 3564,3571 ****
            // We will convert based on the fact that for float32, any 15-digit
            // number converts to float64 and then back again unchanged.
  
!           // We will also format numbers so that we produce 0.01 and 1E-3 on the low
!           // side, and 9999999 and then 1E+15 on the high side
            char ach[128];
            // We can't use *(_Float64 *)actual_location;
            // That uses the SSE registers, which won't work if the source isn't
--- 3629,3636 ----
            // We will convert based on the fact that for float32, any 15-digit
            // number converts to float64 and then back again unchanged.
  
!           // We will also format numbers so that we produce 0.01 and 1E-3 on
!           // the low side, and 9999999 and then 1E+15 on the high side
            char ach[128];
            // We can't use *(_Float64 *)actual_location;
            // That uses the SSE registers, which won't work if the source isn't
*************** format_for_display_internal(char **dest,
*** 3584,3596 ****
              int exp = atoi(p);
              if( exp >= 6 || exp <= -5 )
                {
!               // We are going to stick with the E notation, so ach has our result
                }
              else
                {
!               // We are going to produce our number in such a way that we specify
!               // seven signicant digits, no matter where the decimal point lands.
!               // Note that exp is in the range of 6 to -2
  
                int precision = 36 - exp;
                char achFormat[24];
--- 3649,3662 ----
              int exp = atoi(p);
              if( exp >= 6 || exp <= -5 )
                {
!               // We are going to stick with the E notation, so ach has our
!               // result
                }
              else
                {
!               // We are going to produce our number in such a way that we
!               // specify seven signicant digits, no matter where the decimal
!               // point lands. Note that exp is in the range of 6 to -2
  
                int precision = 36 - exp;
                char achFormat[24];
*************** default_exception_handler( ec_type_t ec
*** 9770,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.
       */
--- 9836,9843 ----
      /*
       * 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.
       */
*************** ec_type_disposition( ec_type_t type ) {
*** 9854,9860 ****
  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:
--- 9920,9926 ----
  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:
*************** ec_is_fatal( ec_type_t type ) {
*** 9868,9874 ****
    case uc_category_implementor_e:
      if( MATCH_DECLARATIVE )
        warnx("%s: %s is unimplemented", __func__, local_ec_type_str(type));
!     break;    
    }
    return true;
  }
--- 9934,9940 ----
    case uc_category_implementor_e:
      if( MATCH_DECLARATIVE )
        warnx("%s: %s is unimplemented", __func__, local_ec_type_str(type));
!     break;
    }
    return true;
  }
diff -Nrcpad gcc-17-20260531/libgm2/ChangeLog gcc-17-20260607/libgm2/ChangeLog
*** gcc-17-20260531/libgm2/ChangeLog	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgm2/ChangeLog	Sun Jun  7 22:32:15 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* configure: Regenerate.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* configure.ac: Fix typos.
diff -Nrcpad gcc-17-20260531/libgm2/configure gcc-17-20260607/libgm2/configure
*** gcc-17-20260531/libgm2/configure	Sun May 31 22:32:13 2026
--- gcc-17-20260607/libgm2/configure	Sun Jun  7 22:32:15 2026
*************** GM2_FOR_TARGET=${GM2_FOR_TARGET:-gcc}
*** 23005,23011 ****
  
  # 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
  { $as_echo "$as_me:${as_lineno-$LINENO}: m2 library building for target ${target}" >&5
  $as_echo "$as_me: m2 library building for target ${target}" >&6;}
--- 23005,23011 ----
  
  # 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
  { $as_echo "$as_me:${as_lineno-$LINENO}: m2 library building for target ${target}" >&5
  $as_echo "$as_me: m2 library building for target ${target}" >&6;}
*************** $as_echo "no" >&6; }
*** 23084,23091 ****
     fi
  
  
!    { $as_echo "$as_me:${as_lineno-$LINENO}: checking m2 front end will build Logitech compatability libraries:" >&5
! $as_echo_n "checking m2 front end will build Logitech compatability libraries:... " >&6; }
     if test x${BUILD_LOGLIB} = xtrue; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
  $as_echo "yes" >&6; }
--- 23084,23091 ----
     fi
  
  
!    { $as_echo "$as_me:${as_lineno-$LINENO}: checking m2 front end will build Logitech compatibility libraries:" >&5
! $as_echo_n "checking m2 front end will build Logitech compatibility libraries:... " >&6; }
     if test x${BUILD_LOGLIB} = xtrue; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
  $as_echo "yes" >&6; }
diff -Nrcpad gcc-17-20260531/libgomp/ChangeLog gcc-17-20260607/libgomp/ChangeLog
*** gcc-17-20260531/libgomp/ChangeLog	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/ChangeLog	Sun Jun  7 22:32:15 2026
***************
*** 1,3 ****
--- 1,156 ----
+ 2026-06-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* oacc-parallel.c (GOACC_parallel_keyed): Use gomp_alloca instead
+ 	of alloca.
+ 	* target.c (GOMP_target): Likewise.
+ 	(GOMP_target_ext): Likewise.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/gcn/simple-bar.h: Fix typos.
+ 	* config/linux/futex.h: Likewise.
+ 	* config/nvptx/bar.c (gomp_team_barrier_cancel): Likewise.
+ 	* config/nvptx/bar.h (gomp_team_barrier_wake): Likewise.
+ 	* config/nvptx/simple-bar.h: Likewise.
+ 	* config/posix/sem.c: Likewise.
+ 	* config/posix/sem.h: Likewise.
+ 	* config/posix/simple-bar.h: Likewise.
+ 
+ 2026-06-01  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* oacc-mem.c (goacc_enter_datum): Assert that tgt_offset of the
+ 	newly-mapped variable is zero.
+ 
+ 2026-06-01  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* plugin/plugin-gcn.c (struct kernel_dispatch): Store
+ 	hsa_signal_t, rather than a uint64_t, so that we don't rely on
+ 	knowledge of the contents of hsa_signal_t.
+ 	(create_kernel_dispatch): Rename...
+ 	(prepare_kernel_dispatch): ... to this, as it no longer creates
+ 	a kernel dispatch.  The allocation that would've created it is
+ 	hoisted...
+ 	(run_kernel): ... here, as an automatic variable.  Move logic
+ 	that copies the fields of kernel_dispatch...
+ 	(populate_packet_from_dispatch): ... into this standalone
+ 	function, to make it clearer.
+ 	(release_kernel_dispatch): Rename....
+ 	(cleanup_kernel_dispatch): ... to this, don't free 'shadow'.
+ 
+ 2026-06-01  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* libgomp-plugin.h (GOMP_OFFLOAD_run, GOMP_OFFLOAD_exec)
+ 	(GOMP_OFFLOAD_async_run, GOMP_OFFLOAD_openacc_async_exec): Pass
+ 	session in place of target variable table and devices.
+ 	(struct gomp_offload_session): New.
+ 	(GOMP_OFFLOAD_session_size): New
+ 	(GOMP_OFFLOAD_check_session_struct): New.
+ 	(GOMP_OFFLOAD_session_boilerplate): New.
+ 	(GOMP_OFFLOAD_session_start): New.
+ 	(GOMP_OFFLOAD_session_allocate_target_var_table): New.
+ 	(GOMP_OFFLOAD_session_set_target_var_table): New.
+ 	* libgomp.h (struct gomp_target_task): Add offload_session
+ 	field.
+ 	(struct gomp_device_descr): Add offload session management
+ 	functions.
+ 	(gomp_offload_session_new): New.
+ 	(goacc_map_vars): Add SESSION to signature
+ 	* oacc-host.c (struct gomp_offload_session): Define, for host
+ 	offload fallback case.
+ 	(host_session_size): New.  Implements GOMP_OFFLOAD_session_size.
+ 	(host_session_start): New.  Implements
+ 	GOMP_OFFLOAD_session_start.
+ 	(host_session_set_target_var_table): New.  Implements
+ 	GOMP_OFFLOAD_session_set_target_var_table.
+ 	(host_run): Adjust to match GOMP_OFFLOAD_run.
+ 	(host_openacc_exec): Adjust to match GOMP_OFFLOAD_openacc_exec.
+ 	(host_openacc_async_exec): Adjust to match
+ 	GOMP_OFFLOAD_openacc_async_exec.
+ 	* oacc-mem.c (acc_map_data): Adjust call to goacc_map_vars.
+ 	(goacc_enter_datum): Ditto.
+ 	(goacc_enter_data_internal): Ditto.
+ 	* oacc-parallel.c (GOACC_parallel_keyed): Allocate and pass
+ 	offload session.
+ 	(GOACC_data_start): Adjust call to goacc_map_vars.
+ 	* plugin/plugin-gcn.c (struct kernel_dispatch): Remove
+ 	kernarg_cache_node.
+ 	(struct kernargs): Add a flexible array member for the target
+ 	variable table.
+ 	(struct kernel_launch): Store an offload session rather than
+ 	target var. table pointer.
+ 	(print_kernel_dispatch): Receive kernargs as parameter.
+ 	(struct gomp_offload_session): Define.
+ 	(init_session): New.
+ 	(GOMP_OFFLOAD_session_start): Implement, using init_session.
+ 	(release_session): New.
+ 	(alloc_kernargs_on_agent): Rename to...
+ 	(allocate_session_kernargs): ... this, store result in
+ 	passed-in SESSION, and allocate extra room for target variable
+ 	table (rounding it up to nearest multiple of 64 pointers).
+ 	(GOMP_OFFLOAD_session_allocate_target_var_table): Implement
+ 	using the previous function.
+ 	(GOMP_OFFLOAD_session_set_target_var_table): Ditto.
+ 	(create_kernel_dispatch): Remove kernarg allocation, instead
+ 	receiving it as an argument.
+ 	(release_kernel_dispatch): Receive kernargs as an argument,
+ 	don't release them.
+ 	(run_kernel): Adjust to use sessions.
+ 	(destroy_module): Ditto.
+ 	(GOMP_OFFLOAD_load_image): Ditto.
+ 	(execute_queue_entry): Adjust to match changed struct
+ 	kernel_launch.
+ 	(queue_push_launch): Ditto.
+ 	(gcn_exec): Receive and pass along session.
+ 	(GOMP_OFFLOAD_run): Ditto.
+ 	(GOMP_OFFLOAD_async_run): Ditto.
+ 	(GOMP_OFFLOAD_openacc_exec): Ditto.
+ 	(GOMP_OFFLOAD_openacc_async_exec): Ditto.
+ 	* plugin/plugin-nvptx.c (struct gomp_offload_session): Define.
+ 	(GOMP_OFFLOAD_session_start): Implement.
+ 	(GOMP_OFFLOAD_session_set_target_var_table): Implement.
+ 	(GOMP_OFFLOAD_openacc_exec): Adjust to receive session.
+ 	(GOMP_OFFLOAD_openacc_async_exec): Ditto.
+ 	(GOMP_OFFLOAD_run): Ditto.
+ 	* target.c (gomp_get_tvt_size): Extract helper from...
+ 	(gomp_map_vars_internal): ... here.  Receive SESSION, iff doing
+ 	target offload.  Use a target variable table on the host
+ 	allocated by GOMP_OFFLOAD_session_allocate_target_var_table if
+ 	possible, or call GOMP_OFFLOAD_session_set_target_var_table with
+ 	an allocated device pointer otherwise.
+ 	(gomp_map_vars): Update to pass along session.
+ 	(goacc_map_vars): Ditto.
+ 	(GOMP_target): Allocate and pass along session.
+ 	(GOMP_target_ext): Ditto.
+ 	(gomp_target_data_fallback): Adjust call to gomp_map_vars.
+ 	(GOMP_target_data): Ditto.
+ 	(GOMP_target_data_ext): Ditto.
+ 	(GOMP_target_enter_exit_data): Ditto.
+ 	(gomp_target_task_fn): Start and pass along session, the storage
+ 	for which is allocated by gomp_create_target_task.
+ 	(DLSYM2): Rename from DLSYM, adding a new parameter for the
+ 	variable to populate, akin to DLSYM_OPT.
+ 	(DLSYM): Delegate to DLSYM2.
+ 	(gomp_load_plugin_for_device): Populate session-related fields.
+ 	* task.c (gomp_create_target_task): Allocate enough storage for
+ 	an offload session.
+ 	* testsuite/libgomp.c-c++-common/gcn-kernel-launch-no-tvt-alloc.c: New test.
+ 	* testsuite/libgomp.c-c++-common/gcn-kernel-launch-tvt-alloc.c: New test.
+ 
+ 2026-06-01  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* libgomp.h (struct gomp_thread_start_data): New struct.  Holds
+ 	thread-independent parameters needed to initialize current
+ 	thread.
+ 	(struct gomp_team): On GCN, add thr_start_data field, that holds
+ 	a gomp_thread_start_data to be used in each thread.
+ 	(struct gomp_thread): Add start_data field, that points to
+ 	thread initialization parameters.
+ 	* config/gcn/team.c (gomp_team_start): Move thread
+ 	initialization steps into ...
+ 	(gomp_prep_our_thread): this new function, such that it reads
+ 	from a gomp_thread_start_data object.
+ 	(gomp_thread_start): Call the above to initialize our thread.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-17-20260531/libgomp/config/gcn/simple-bar.h gcc-17-20260607/libgomp/config/gcn/simple-bar.h
*** gcc-17-20260531/libgomp/config/gcn/simple-bar.h	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/config/gcn/simple-bar.h	Sun Jun  7 22:32:15 2026
***************
*** 24,30 ****
     <http://www.gnu.org/licenses/>.  */
  
  /* This is a simplified barrier that is suitable for thread pool
!    synchronizaton.  Only a subset of full barrier API (bar.h) is exposed.
     Here in the AMD GCN-specific implementation, we expect that thread pool
     corresponds to the wavefronts within a work group.  */
  
--- 24,30 ----
     <http://www.gnu.org/licenses/>.  */
  
  /* This is a simplified barrier that is suitable for thread pool
!    synchronization.  Only a subset of full barrier API (bar.h) is exposed.
     Here in the AMD GCN-specific implementation, we expect that thread pool
     corresponds to the wavefronts within a work group.  */
  
diff -Nrcpad gcc-17-20260531/libgomp/config/gcn/team.c gcc-17-20260607/libgomp/config/gcn/team.c
*** gcc-17-20260531/libgomp/config/gcn/team.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/config/gcn/team.c	Sun Jun  7 22:32:15 2026
***************
*** 24,29 ****
--- 24,30 ----
     <http://www.gnu.org/licenses/>.  */
  
  /* This file handles maintenance of threads on AMD GCN.  */
+ #include <assert.h>
  
  #include "libgomp.h"
  #include <stdlib.h>
*************** gomp_gcn_exit_kernel (void)
*** 132,137 ****
--- 133,165 ----
    team_free (gcn_thrs ());
  }
  
+ /* Populate THR from START_DATA.  Assumes THR is current thread.  Argument is
+    broken out to avoid repeated calls to gomp_thread, which may be
+    expensive.  */
+ 
+ static inline void
+ gomp_prep_our_thread (struct gomp_thread *thr,
+ 		      struct gomp_thread_start_data *start_data,
+ 		      int threadid)
+ {
+   thr->ts.team = start_data->team;
+   thr->ts.work_share = &start_data->team->work_shares[0];
+   thr->ts.last_work_share = NULL;
+   thr->ts.team_id = threadid;
+   thr->ts.level = start_data->level;
+   thr->ts.active_level = start_data->active_level;
+   thr->ts.single_count = 0;
+   thr->ts.static_trip = 0;
+   thr->task = &start_data->team->implicit_task[threadid];
+   gomp_init_task (thr->task, start_data->parent_task, &start_data->prev_icvs);
+   /* TODO(arsen): This should be part of a mechanism that allows us to override
+      nthreads-var with OMP_NUM_THREADS.  But, we currently don't have access to
+      that list on the device.
+ 
+      thr->task->icv.nthreads_var = ...;  */
+   thr->task->taskgroup = start_data->taskgroup;
+ }
+ 
  /* This function contains the idle loop in which a thread waits
     to be called up to become part of a team.  */
  
*************** gomp_thread_start (struct gomp_thread_po
*** 162,167 ****
--- 190,208 ----
  	      abort();
  	    }
  	}
+ 
+       /* Perform rest of task initialization.  Populated from
+ 	 gomp_team_start.  */
+       if (thr->start_data)
+ 	/* If !start_data, we're probably executing cleanup helpers, so we
+ 	   don't really care about initializing these fields.  */
+ 	{
+ 	  /* On threads other than the main thread, the thread ID within a
+ 	     team is always equal to dim_pos(1).  */
+ 	  gomp_prep_our_thread (thr, thr->start_data, __builtin_gcn_dim_pos (1));
+ 	  thr->start_data = NULL;
+ 	}
+ 
        thr->fn (thr->data);
        thr->fn = NULL;
  
*************** gomp_team_start (void (*fn) (void *), vo
*** 180,240 ****
  		 struct gomp_taskgroup *taskgroup)
  {
    struct gomp_thread *thr, *nthr;
!   struct gomp_task *task;
    struct gomp_task_icv *icv;
    struct gomp_thread_pool *pool;
-   unsigned long nthreads_var;
  
    thr = gomp_thread ();
    pool = thr->thread_pool;
!   task = thr->task;
!   icv = task ? &task->icv : &gomp_global_icv;
  
    /* Always save the previous state, even if this isn't a nested team.
       In particular, we should save any work share state from an outer
       orphaned work share construct.  */
    team->prev_ts = thr->ts;
  
!   thr->ts.team = team;
!   thr->ts.team_id = 0;
!   ++thr->ts.level;
!   if (nthreads > 1)
!     ++thr->ts.active_level;
!   thr->ts.work_share = &team->work_shares[0];
!   thr->ts.last_work_share = NULL;
!   thr->ts.single_count = 0;
!   thr->ts.static_trip = 0;
!   thr->task = &team->implicit_task[0];
!   nthreads_var = icv->nthreads_var;
!   gomp_init_task (thr->task, task, icv);
!   team->implicit_task[0].icv.nthreads_var = nthreads_var;
!   team->implicit_task[0].taskgroup = taskgroup;
! 
!   if (nthreads == 1)
!     return;
  
!   /* Release existing idle threads.  */
!   for (unsigned i = 1; i < nthreads; ++i)
      {
!       nthr = pool->threads[i];
!       nthr->ts.team = team;
!       nthr->ts.work_share = &team->work_shares[0];
!       nthr->ts.last_work_share = NULL;
!       nthr->ts.team_id = i;
!       nthr->ts.level = team->prev_ts.level + 1;
!       nthr->ts.active_level = thr->ts.active_level;
!       nthr->ts.single_count = 0;
!       nthr->ts.static_trip = 0;
!       nthr->task = &team->implicit_task[i];
!       gomp_init_task (nthr->task, task, icv);
!       team->implicit_task[i].icv.nthreads_var = nthreads_var;
!       team->implicit_task[i].taskgroup = taskgroup;
!       nthr->fn = fn;
!       nthr->data = data;
!       team->ordered_release[i] = &nthr->release;
      }
  
!   gomp_simple_barrier_wait (&pool->threads_dock);
  }
  
  #include "../../team.c"
--- 221,281 ----
  		 struct gomp_taskgroup *taskgroup)
  {
    struct gomp_thread *thr, *nthr;
!   struct gomp_task *prev_task;
    struct gomp_task_icv *icv;
    struct gomp_thread_pool *pool;
  
    thr = gomp_thread ();
    pool = thr->thread_pool;
!   prev_task = thr->task;
!   icv = prev_task ? &prev_task->icv : &gomp_global_icv;
  
    /* Always save the previous state, even if this isn't a nested team.
       In particular, we should save any work share state from an outer
       orphaned work share construct.  */
    team->prev_ts = thr->ts;
  
!   /* Populate start data.  */
!   team->thr_start_data = (struct gomp_thread_start_data) {
!     .team = team,
!     .level = thr->ts.level + 1,
!     .active_level = thr->ts.active_level + (nthreads > 1),
!     .parent_task = thr->task,
!     .prev_icvs = *icv,
!     .taskgroup = taskgroup
!   };
  
!   if (nthreads != 1)
      {
!       /* When there's more than one thread, we expect that we're operating on
! 	 thread w/ dim_pos(1) == 0, and that each of the other initialized
! 	 threads will operate with team_id == dim_pos(1).  */
!       assert (__builtin_gcn_dim_pos (1) == 0);
!       /* We only expect one team to have more than one active thread.  See
! 	 accelerator-specific logic in gomp_resolve_num_threads.  */
!       assert (!thr->ts.active_level);
! 
!       /* Prepare other threads waiting on our barrier.  Besides fn, data,
! 	 taskgroup, all the fields of those threads are initialized based on
! 	 the values initialized in our thread above (which is always the master
! 	 thread).  */
!       for (unsigned i = 1; i < nthreads; ++i)
! 	{
! 	  nthr = pool->threads[i];
! 
! 	  nthr->start_data = &team->thr_start_data;
! 	  nthr->fn = fn;
! 	  nthr->data = data;
! 	  team->ordered_release[i] = &nthr->release;
! 	}
! 
!       /* Release the other threads.  */
!       gomp_simple_barrier_wait (&pool->threads_dock);
      }
  
!   /* Finish initializing our thread.  The thread ID in the team of the caller
!      is always zero, even if __builtin_gcn_dim_pos (1) != 0.  */
!   gomp_prep_our_thread (thr, &team->thr_start_data, 0);
  }
  
  #include "../../team.c"
diff -Nrcpad gcc-17-20260531/libgomp/config/linux/futex.h gcc-17-20260607/libgomp/config/linux/futex.h
*** gcc-17-20260531/libgomp/config/linux/futex.h	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/config/linux/futex.h	Sun Jun  7 22:32:15 2026
***************
*** 25,31 ****
  
  /* Provide target-specific access to the futex system call.  */
  
! /* The include file hierachy above us (wait.h) has pushed visibility
     hidden, this will be applied to prototypes with headers we include
     with the effect that we cannot link against an external function
     (syscall). The solution here is to push default visibility, include
--- 25,31 ----
  
  /* Provide target-specific access to the futex system call.  */
  
! /* The include file hierarchy above us (wait.h) has pushed visibility
     hidden, this will be applied to prototypes with headers we include
     with the effect that we cannot link against an external function
     (syscall). The solution here is to push default visibility, include
diff -Nrcpad gcc-17-20260531/libgomp/config/nvptx/bar.c gcc-17-20260607/libgomp/config/nvptx/bar.c
*** gcc-17-20260531/libgomp/config/nvptx/bar.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/config/nvptx/bar.c	Sun Jun  7 22:32:15 2026
*************** gomp_team_barrier_cancel (struct gomp_te
*** 179,185 ****
    team->barrier.generation |= BAR_CANCELLED;
    gomp_mutex_unlock (&team->task_lock);
  
!   /* The 'exit' instruction cancels this thread and also fullfills any other
       CTA threads waiting on barriers.  */
    asm volatile ("exit;");
  }
--- 179,185 ----
    team->barrier.generation |= BAR_CANCELLED;
    gomp_mutex_unlock (&team->task_lock);
  
!   /* The 'exit' instruction cancels this thread and also fulfills any other
       CTA threads waiting on barriers.  */
    asm volatile ("exit;");
  }
diff -Nrcpad gcc-17-20260531/libgomp/config/nvptx/bar.h gcc-17-20260607/libgomp/config/nvptx/bar.h
*** gcc-17-20260531/libgomp/config/nvptx/bar.h	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/config/nvptx/bar.h	Sun Jun  7 22:32:15 2026
*************** static inline void
*** 86,92 ****
  gomp_team_barrier_wake (gomp_barrier_t *bar, int count)
  {
    /* We never "wake up" threads on nvptx.  Threads wait at barrier
!      instructions till barrier fullfilled.  Do nothing here.  */
  }
  
  static inline gomp_barrier_state_t
--- 86,92 ----
  gomp_team_barrier_wake (gomp_barrier_t *bar, int count)
  {
    /* We never "wake up" threads on nvptx.  Threads wait at barrier
!      instructions till barrier fulfilled.  Do nothing here.  */
  }
  
  static inline gomp_barrier_state_t
diff -Nrcpad gcc-17-20260531/libgomp/config/nvptx/simple-bar.h gcc-17-20260607/libgomp/config/nvptx/simple-bar.h
*** gcc-17-20260531/libgomp/config/nvptx/simple-bar.h	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/config/nvptx/simple-bar.h	Sun Jun  7 22:32:15 2026
***************
*** 24,30 ****
     <http://www.gnu.org/licenses/>.  */
  
  /* This is a simplified barrier that is suitable for thread pool
!    synchronizaton.  Only a subset of full barrier API (bar.h) is exposed.
     Here in the NVPTX-specific implementation, we expect that thread pool
     corresponds to a PTX CTA (thread block).  */
  
--- 24,30 ----
     <http://www.gnu.org/licenses/>.  */
  
  /* This is a simplified barrier that is suitable for thread pool
!    synchronization.  Only a subset of full barrier API (bar.h) is exposed.
     Here in the NVPTX-specific implementation, we expect that thread pool
     corresponds to a PTX CTA (thread block).  */
  
diff -Nrcpad gcc-17-20260531/libgomp/config/posix/sem.c gcc-17-20260607/libgomp/config/posix/sem.c
*** gcc-17-20260531/libgomp/config/posix/sem.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/config/posix/sem.c	Sun Jun  7 22:32:15 2026
***************
*** 28,34 ****
     the library.
  
     This is a bit heavy weight for what we need, in that we're not
!    interested in sem_wait as a cancelation point, but it's not too
     bad for a default.  */
  
  #include "libgomp.h"
--- 28,34 ----
     the library.
  
     This is a bit heavy weight for what we need, in that we're not
!    interested in sem_wait as a cancellation point, but it's not too
     bad for a default.  */
  
  #include "libgomp.h"
diff -Nrcpad gcc-17-20260531/libgomp/config/posix/sem.h gcc-17-20260607/libgomp/config/posix/sem.h
*** gcc-17-20260531/libgomp/config/posix/sem.h	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/config/posix/sem.h	Sun Jun  7 22:32:15 2026
***************
*** 28,34 ****
     the library.
  
     This is a bit heavy weight for what we need, in that we're not
!    interested in sem_wait as a cancelation point, but it's not too
     bad for a default.  */
  
  #ifndef GOMP_SEM_H
--- 28,34 ----
     the library.
  
     This is a bit heavy weight for what we need, in that we're not
!    interested in sem_wait as a cancellation point, but it's not too
     bad for a default.  */
  
  #ifndef GOMP_SEM_H
diff -Nrcpad gcc-17-20260531/libgomp/config/posix/simple-bar.h gcc-17-20260607/libgomp/config/posix/simple-bar.h
*** gcc-17-20260531/libgomp/config/posix/simple-bar.h	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/config/posix/simple-bar.h	Sun Jun  7 22:32:15 2026
***************
*** 24,30 ****
     <http://www.gnu.org/licenses/>.  */
  
  /* This is a simplified barrier that is suitable for thread pool
!    synchronizaton.  Only a subset of full barrier API (bar.h) is exposed.  */
  
  #ifndef GOMP_SIMPLE_BARRIER_H
  #define GOMP_SIMPLE_BARRIER_H 1
--- 24,30 ----
     <http://www.gnu.org/licenses/>.  */
  
  /* This is a simplified barrier that is suitable for thread pool
!    synchronization.  Only a subset of full barrier API (bar.h) is exposed.  */
  
  #ifndef GOMP_SIMPLE_BARRIER_H
  #define GOMP_SIMPLE_BARRIER_H 1
diff -Nrcpad gcc-17-20260531/libgomp/libgomp-plugin.h gcc-17-20260607/libgomp/libgomp-plugin.h
*** gcc-17-20260531/libgomp/libgomp-plugin.h	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/libgomp-plugin.h	Sun Jun  7 22:32:15 2026
*************** extern int GOMP_OFFLOAD_memcpy3d (int, i
*** 188,198 ****
  				  size_t);
  extern bool GOMP_OFFLOAD_memset (int, void *, int, size_t);
  extern bool GOMP_OFFLOAD_can_run (void *);
- extern void GOMP_OFFLOAD_run (int, void *, void *, void **);
- extern void GOMP_OFFLOAD_async_run (int, void *, void *, void **, void *);
  
! extern void GOMP_OFFLOAD_openacc_exec (void (*) (void *), size_t, void **,
! 				       void **, unsigned *, void *);
  extern void *GOMP_OFFLOAD_openacc_create_thread_data (int);
  extern void GOMP_OFFLOAD_openacc_destroy_thread_data (void *);
  extern struct goacc_asyncqueue *GOMP_OFFLOAD_openacc_async_construct (int);
--- 188,265 ----
  				  size_t);
  extern bool GOMP_OFFLOAD_memset (int, void *, int, size_t);
  extern bool GOMP_OFFLOAD_can_run (void *);
  
! /* An opaque type, encapsulating the state required to launch a single
!    'target' region.  This type is expected to have alignment no greater than
!    the alignment 'malloc' and 'alloca' can provide.
! 
!    The lifetime of the memory reserved for an offload session is managed by
!    libgomp.  It will ensure that it is deallocated only after a kernel is done
!    executing.
! 
!    Per offload session, exactly one of GOMP_OFFLOAD{,_async}_run or
!    GOMP_OFFLOAD_openacc{,_async}_exec will be called.  This is also the last
!    operation performed on a session.  */
! struct gomp_offload_session;
! 
! /* Validate that a 'struct gomp_offload_session' declaration is acceptable.  */
! #define GOMP_OFFLOAD_check_session_struct()				\
!   _Static_assert (_Alignof (struct gomp_offload_session) <= __BIGGEST_ALIGNMENT__, \
! 		 "gomp_offload_session requires too high alignment")
! 
! /* Return size of a gomp_offload_session instance.  libgomp takes care of
!    allocating and deallocating enough memory to store the session.  */
! [[gnu::const]] extern size_t GOMP_OFFLOAD_session_size (void);
! 
! /* Check that the 'struct gomp_offload_session' declaration is acceptable, and
!    implement GOMP_OFFLOAD_session_size.  Call this in the plugin after defining
!    the aforementioned struct.  */
! #define GOMP_OFFLOAD_session_boilerplate()		\
!   GOMP_OFFLOAD_check_session_struct ();			\
!   [[gnu::const]] size_t					\
!   GOMP_OFFLOAD_session_size (void)			\
!   { return sizeof (struct gomp_offload_session); }
! 
! /* Initialize SESSION for executing a kernel on DEVICE.  */
! extern void GOMP_OFFLOAD_session_start (struct gomp_offload_session *session,
! 					int device);
! 
! /* Attempt to allocate a target variable table in host memory for SESSION.
!    This table must be of at least table_size bytes and aligned to
!    __BIGGEST_ALIGNMENT__.
! 
!    This function will be called at most once per SESSION.
! 
!    If this function returns NULL, or if libgomp never calls it,
!    GOMP_OFFLOAD_session_set_target_var_table will be called instead, with
!    memory allocated by libgomp for the purpose.
! 
!    If this function is omitted, libgomp will behave as if it always returns
!    NULL.  */
! extern void **GOMP_OFFLOAD_session_allocate_target_var_table
!   (struct gomp_offload_session *session, size_t table_size);
! 
! /* Set TABLE, a device pointer, as the pointer to the target variable table.
!    It may be NULL, in which case there's no target variable table.
! 
!    Before dispatching the offload kernel associated with this session, exactly
!    one of a successful call to GOMP_OFFLOAD_session_allocate_target_var_table
!    or a call to this function must happen, but not both.  */
! extern void GOMP_OFFLOAD_session_set_target_var_table
!   (struct gomp_offload_session *session, void **table);
! 
! extern void GOMP_OFFLOAD_run (struct gomp_offload_session *session,
! 			      void *fn_ptr,
! 			      void **args);
! extern void GOMP_OFFLOAD_async_run (struct gomp_offload_session *session,
! 				    void *tgt_fn,
! 				    void **args,
! 				    void *async_data);
! 
! extern void GOMP_OFFLOAD_openacc_exec (struct gomp_offload_session *session,
! 				       void (*tgt_fn) (void *),
! 				       size_t mapnum, void **hostaddrs,
! 				       unsigned *dims, void *targ_mem_desc);
  extern void *GOMP_OFFLOAD_openacc_create_thread_data (int);
  extern void GOMP_OFFLOAD_openacc_destroy_thread_data (void *);
  extern struct goacc_asyncqueue *GOMP_OFFLOAD_openacc_async_construct (int);
*************** extern bool GOMP_OFFLOAD_openacc_async_s
*** 203,211 ****
  						  struct goacc_asyncqueue *);
  extern void GOMP_OFFLOAD_openacc_async_queue_callback (struct goacc_asyncqueue *,
  						       void (*)(void *), void *);
! extern void GOMP_OFFLOAD_openacc_async_exec (void (*) (void *), size_t, void **,
! 					     void **, unsigned *, void *,
! 					     struct goacc_asyncqueue *);
  extern bool GOMP_OFFLOAD_openacc_async_dev2host (int, void *, const void *, size_t,
  						 struct goacc_asyncqueue *);
  extern bool GOMP_OFFLOAD_openacc_async_host2dev (int, void *, const void *, size_t,
--- 270,280 ----
  						  struct goacc_asyncqueue *);
  extern void GOMP_OFFLOAD_openacc_async_queue_callback (struct goacc_asyncqueue *,
  						       void (*)(void *), void *);
! extern void GOMP_OFFLOAD_openacc_async_exec (struct gomp_offload_session *session,
! 					     void (*fn_ptr) (void *),
! 					     size_t mapnum, void **hostaddrs,
! 					     unsigned *dims, void *targ_mem_desc,
! 					     struct goacc_asyncqueue *aq);
  extern bool GOMP_OFFLOAD_openacc_async_dev2host (int, void *, const void *, size_t,
  						 struct goacc_asyncqueue *);
  extern bool GOMP_OFFLOAD_openacc_async_host2dev (int, void *, const void *, size_t,
diff -Nrcpad gcc-17-20260531/libgomp/libgomp.h gcc-17-20260607/libgomp/libgomp.h
*** gcc-17-20260531/libgomp/libgomp.h	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/libgomp.h	Sun Jun  7 22:32:15 2026
*************** struct gomp_target_task
*** 772,780 ****
--- 772,803 ----
    struct gomp_team *team;
    /* Device-specific target arguments.  */
    void **args;
+   /* Pointer to the offload session for this task.  */
+   struct gomp_offload_session *offload_session;
    void *hostaddrs[];
  };
  
+ #ifdef __AMDGCN__
+ /* Parameters needed to kick off new threads on AMD GCN.  They correspond to
+    various fields in gomp_thread.  This struct, and all its contents, should
+    only be modified by gomp_team_start, and stay untouched until the threads
+    of a team reach the final barrier.  */
+ 
+ struct gomp_thread_start_data
+ {
+   /* Team the new thread is part of.  */
+   struct gomp_team *team;
+   /* Active nesting level.  */
+   unsigned level, active_level;
+   /* Parent task.  */
+   struct gomp_task *parent_task;
+   /* Previous ICVs.  */
+   struct gomp_task_icv prev_icvs;
+   /* Task group for the new threads implicit task.  */
+   struct gomp_taskgroup *taskgroup;
+ };
+ #endif
+ 
  /* This structure describes a "team" of threads.  These are the threads
     that are spawned by a PARALLEL constructs, as well as the work sharing
     constructs that the team encounters.  */
*************** struct gomp_team
*** 857,862 ****
--- 880,890 ----
    /* Number of tasks waiting for their completion event to be fulfilled.  */
    unsigned int task_detach_count;
  
+ #ifdef __AMDGCN__
+   /* Used on AMD GCN to inform threads how to launch in a team.  */
+   struct gomp_thread_start_data thr_start_data;
+ #endif
+ 
    /* This array contains structures for implicit tasks.  */
    struct gomp_task implicit_task[];
  };
*************** struct gomp_thread
*** 870,875 ****
--- 898,908 ----
    void (*fn) (void *data);
    void *data;
  
+ #ifdef __AMDGCN__
+   /* And these are the parameters it should set.  */
+   struct gomp_thread_start_data *start_data;
+ #endif
+ 
    /* This is the current team state for this thread.  The ts.team member
       is NULL only if the thread is idle.  */
    struct gomp_team_state ts;
*************** struct gomp_device_descr
*** 1434,1439 ****
--- 1467,1481 ----
    __typeof (GOMP_OFFLOAD_memcpy2d) *memcpy2d_func;
    __typeof (GOMP_OFFLOAD_memcpy3d) *memcpy3d_func;
    __typeof (GOMP_OFFLOAD_memset) *memset_func;
+   struct {
+     __typeof (GOMP_OFFLOAD_session_start) *start_func;
+     __typeof (GOMP_OFFLOAD_session_allocate_target_var_table) *alloc_tvt_func;
+     __typeof (GOMP_OFFLOAD_session_set_target_var_table) *set_tvt_func;
+ 
+     /* Size of a single gomp_offload_session object, as returned by
+        GOMP_OFFLOAD_session_size.  */
+     size_t size;
+   } session;
    __typeof (GOMP_OFFLOAD_can_run) *can_run_func;
    __typeof (GOMP_OFFLOAD_run) *run_func;
    __typeof (GOMP_OFFLOAD_async_run) *async_run_func;
*************** struct gomp_device_descr
*** 1460,1465 ****
--- 1502,1517 ----
    acc_dispatch_t openacc;
  };
  
+ /* Allocate an offload session for the gomp_device_descr DEVICEP using ALLOC,
+    and initialize it.  Provided as a macro, so that 'alloca' can be used as
+    ALLOC. */
+ #define gomp_offload_session_new(devicep, alloc)		\
+   ({								\
+     void *session = alloc (devicep->session.size);	\
+     devicep->session.start_func (session, devicep->target_id);	\
+     session;							\
+   })
+ 
  /* Kind of the pragma, for which gomp_map_vars () is called.  */
  enum gomp_map_vars_kind
  {
*************** extern struct target_mem_desc *goacc_map
*** 1493,1499 ****
  					       struct goacc_asyncqueue *,
  					       size_t, void **, void **,
  					       size_t *, void *, bool,
! 					       enum gomp_map_vars_kind);
  extern void goacc_unmap_vars (struct target_mem_desc *, bool,
  			      struct goacc_asyncqueue *);
  extern void gomp_init_device (struct gomp_device_descr *);
--- 1545,1552 ----
  					       struct goacc_asyncqueue *,
  					       size_t, void **, void **,
  					       size_t *, void *, bool,
! 					       enum gomp_map_vars_kind,
! 					       struct gomp_offload_session *);
  extern void goacc_unmap_vars (struct target_mem_desc *, bool,
  			      struct goacc_asyncqueue *);
  extern void gomp_init_device (struct gomp_device_descr *);
diff -Nrcpad gcc-17-20260531/libgomp/oacc-host.c gcc-17-20260607/libgomp/oacc-host.c
*** gcc-17-20260531/libgomp/oacc-host.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/oacc-host.c	Sun Jun  7 22:32:15 2026
***************
*** 30,37 ****
--- 30,49 ----
  #include "oacc-int.h"
  #include "gomp-constants.h"
  
+ #include <assert.h>
  #include <stdbool.h>
  #include <stddef.h>
+ #include <string.h>
+ 
+ /* Defined under a name other than gomp_offload_session to make debugging with
+    GDB easier.  If this struct was called gomp_offload_session, GDB would
+    frequently ignore the plugin-specific definition.  */
+ struct host_offload_session
+ {
+   void *vars;
+ };
+ _Static_assert (_Alignof (struct host_offload_session) <= __BIGGEST_ALIGNMENT__,
+ 		"gomp_offload_session requires too high alignment");
  
  static struct gomp_device_descr host_dispatch;
  
*************** host_host2dev (int n __attribute__ ((unu
*** 128,146 ****
  }
  
  static void
! host_run (int n __attribute__ ((unused)), void *fn_ptr, void *vars,
! 	  void **args __attribute__((unused)))
  {
    void (*fn)(void *) = (void (*)(void *)) fn_ptr;
  
!   fn (vars);
  }
  
  static void
! host_openacc_exec (void (*fn) (void *),
  		   size_t mapnum __attribute__ ((unused)),
  		   void **hostaddrs,
- 		   void **devaddrs __attribute__ ((unused)),
  		   unsigned *dims __attribute__ ((unused)),
  		   void *targ_mem_desc __attribute__ ((unused)))
  {
--- 140,180 ----
  }
  
  static void
! host_session_start (struct gomp_offload_session *osession, int dev)
! {
!   (void) dev;
!   struct host_offload_session *session;
!   memcpy (&session, &osession, sizeof (session));
!   *session = (struct host_offload_session) {
!     .vars = NULL,
!   };
! }
! 
! static void
! host_session_set_target_var_table (struct gomp_offload_session *osession,
! 				   void **table)
  {
+   struct host_offload_session *session;
+   memcpy (&session, &osession, sizeof (session));
+   assert (!session->vars);
+   session->vars = table;
+ }
+ 
+ static void
+ host_run (struct gomp_offload_session *osession, void *fn_ptr, void **args)
+ {
+   struct host_offload_session *session;
+   memcpy (&session, &osession, sizeof (session));
    void (*fn)(void *) = (void (*)(void *)) fn_ptr;
  
!   fn (session->vars);
  }
  
  static void
! host_openacc_exec (struct gomp_offload_session *session __attribute__((unused)),
! 		   void (*fn) (void *),
  		   size_t mapnum __attribute__ ((unused)),
  		   void **hostaddrs,
  		   unsigned *dims __attribute__ ((unused)),
  		   void *targ_mem_desc __attribute__ ((unused)))
  {
*************** host_openacc_exec (void (*fn) (void *),
*** 148,157 ****
  }
  
  static void
! host_openacc_async_exec (void (*fn) (void *),
  			 size_t mapnum __attribute__ ((unused)),
  			 void **hostaddrs,
- 			 void **devaddrs __attribute__ ((unused)),
  			 unsigned *dims __attribute__ ((unused)),
  			 void *targ_mem_desc __attribute__ ((unused)),
  			 struct goacc_asyncqueue *aq __attribute__ ((unused)))
--- 182,191 ----
  }
  
  static void
! host_openacc_async_exec (struct gomp_offload_session *session __attribute__((unused)),
! 			 void (*fn) (void *),
  			 size_t mapnum __attribute__ ((unused)),
  			 void **hostaddrs,
  			 unsigned *dims __attribute__ ((unused)),
  			 void *targ_mem_desc __attribute__ ((unused)),
  			 struct goacc_asyncqueue *aq __attribute__ ((unused)))
*************** static struct gomp_device_descr host_dis
*** 288,293 ****
--- 322,333 ----
      .memcpy3d_func = NULL,
      .run_func = host_run,
  
+     .session = {
+       .start_func = host_session_start,
+       .set_tvt_func = host_session_set_target_var_table,
+       .size = sizeof (struct host_offload_session),
+     },
+ 
      .mem_map = { NULL },
      .mem_map_rev = { NULL },
      /* .lock initialized in goacc_host_init.  */
diff -Nrcpad gcc-17-20260531/libgomp/oacc-mem.c gcc-17-20260607/libgomp/oacc-mem.c
*** gcc-17-20260531/libgomp/oacc-mem.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/oacc-mem.c	Sun Jun  7 22:32:15 2026
*************** acc_map_data (void *h, void *d, size_t s
*** 421,427 ****
  
        struct target_mem_desc *tgt
  	= goacc_map_vars (acc_dev, NULL, mapnum, &hostaddrs, &devaddrs, &sizes,
! 			  &kinds, true, GOMP_MAP_VARS_ENTER_DATA);
        assert (tgt);
        assert (tgt->list_count == 1);
        splay_tree_key n = tgt->list[0].key;
--- 421,427 ----
  
        struct target_mem_desc *tgt
  	= goacc_map_vars (acc_dev, NULL, mapnum, &hostaddrs, &devaddrs, &sizes,
! 			  &kinds, true, GOMP_MAP_VARS_ENTER_DATA, NULL);
        assert (tgt);
        assert (tgt->list_count == 1);
        splay_tree_key n = tgt->list[0].key;
*************** goacc_enter_datum (void **hostaddrs, siz
*** 586,598 ****
  
        struct target_mem_desc *tgt
  	= goacc_map_vars (acc_dev, aq, mapnum, hostaddrs, NULL, sizes,
! 			  kinds, true, GOMP_MAP_VARS_ENTER_DATA);
        assert (tgt);
        assert (tgt->list_count == 1);
        n = tgt->list[0].key;
        assert (n);
        assert (n->refcount == 1);
        assert (n->dynamic_refcount == 0);
        n->dynamic_refcount++;
  
        d = (void *) tgt->tgt_start;
--- 586,601 ----
  
        struct target_mem_desc *tgt
  	= goacc_map_vars (acc_dev, aq, mapnum, hostaddrs, NULL, sizes,
! 			  kinds, true, GOMP_MAP_VARS_ENTER_DATA, NULL);
        assert (tgt);
        assert (tgt->list_count == 1);
        n = tgt->list[0].key;
        assert (n);
        assert (n->refcount == 1);
        assert (n->dynamic_refcount == 0);
+       assert (/* This is only reached if we're mapping a new, singular
+ 		 variable, and so, its offset ought to be zero.  */
+ 	      n->tgt_offset == 0);
        n->dynamic_refcount++;
  
        d = (void *) tgt->tgt_start;
*************** goacc_enter_data_internal (struct gomp_d
*** 1225,1231 ****
  	      struct target_mem_desc *tgt_ __attribute__((unused))
  		= goacc_map_vars (acc_dev, aq, groupnum, &hostaddrs[i], NULL,
  				  &sizes[i], &kinds[i], true,
! 				  GOMP_MAP_VARS_ENTER_DATA);
  	      assert (tgt_ == NULL);
  	      gomp_mutex_lock (&acc_dev->lock);
  
--- 1228,1234 ----
  	      struct target_mem_desc *tgt_ __attribute__((unused))
  		= goacc_map_vars (acc_dev, aq, groupnum, &hostaddrs[i], NULL,
  				  &sizes[i], &kinds[i], true,
! 				  GOMP_MAP_VARS_ENTER_DATA, NULL);
  	      assert (tgt_ == NULL);
  	      gomp_mutex_lock (&acc_dev->lock);
  
*************** goacc_enter_data_internal (struct gomp_d
*** 1276,1282 ****
  	  struct target_mem_desc *tgt
  	    = goacc_map_vars (acc_dev, aq, groupnum, &hostaddrs[i], NULL,
  			      &sizes[i], &kinds[i], true,
! 			      GOMP_MAP_VARS_ENTER_DATA);
  	  assert (tgt);
  
  	  gomp_mutex_lock (&acc_dev->lock);
--- 1279,1285 ----
  	  struct target_mem_desc *tgt
  	    = goacc_map_vars (acc_dev, aq, groupnum, &hostaddrs[i], NULL,
  			      &sizes[i], &kinds[i], true,
! 			      GOMP_MAP_VARS_ENTER_DATA, NULL);
  	  assert (tgt);
  
  	  gomp_mutex_lock (&acc_dev->lock);
diff -Nrcpad gcc-17-20260531/libgomp/oacc-parallel.c gcc-17-20260607/libgomp/oacc-parallel.c
*** gcc-17-20260531/libgomp/oacc-parallel.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/oacc-parallel.c	Sun Jun  7 22:32:15 2026
*************** GOACC_parallel_keyed (int flags_m, void
*** 291,299 ****
  
    goacc_aq aq = get_goacc_asyncqueue (async);
  
    struct target_mem_desc *tgt
      = goacc_map_vars (acc_dev, aq, mapnum, hostaddrs, NULL, sizes, kinds, true,
! 		      GOMP_MAP_VARS_TARGET);
  
    if (profiling_p)
      {
--- 291,304 ----
  
    goacc_aq aq = get_goacc_asyncqueue (async);
  
+   /* Prepare an offload session.  */
+   struct gomp_offload_session *session
+     = (aq ? gomp_offload_session_new (acc_dev, gomp_malloc)
+        : gomp_offload_session_new (acc_dev, gomp_alloca));
+ 
    struct target_mem_desc *tgt
      = goacc_map_vars (acc_dev, aq, mapnum, hostaddrs, NULL, sizes, kinds, true,
! 		      GOMP_MAP_VARS_TARGET, session);
  
    if (profiling_p)
      {
*************** GOACC_parallel_keyed (int flags_m, void
*** 304,316 ****
  				&api_info);
      }
  
-   void **devaddrs = (void **) tgt->tgt_start;
    if (aq == NULL)
!     acc_dev->openacc.exec_func (tgt_fn, mapnum, hostaddrs, devaddrs, dims,
! 				tgt);
    else
!     acc_dev->openacc.async.exec_func (tgt_fn, mapnum, hostaddrs, devaddrs,
! 				      dims, tgt, aq);
  
    if (profiling_p)
      {
--- 309,319 ----
  				&api_info);
      }
  
    if (aq == NULL)
!     acc_dev->openacc.exec_func (session, tgt_fn, mapnum, hostaddrs, dims, tgt);
    else
!     acc_dev->openacc.async.exec_func (session, tgt_fn, mapnum, hostaddrs, dims,
! 				      tgt, aq);
  
    if (profiling_p)
      {
*************** GOACC_parallel_keyed (int flags_m, void
*** 324,329 ****
--- 327,337 ----
    /* If running synchronously (aq == NULL), this will unmap immediately.  */
    goacc_unmap_vars (tgt, true, aq);
  
+   if (aq)
+     /* We need to clean up the above-allocated session later if executing
+        asynchronously. */
+     acc_dev->openacc.async.queue_callback_func (aq, free, session);
+ 
    if (profiling_p)
      {
        prof_info.event_type = acc_ev_exit_data_end;
*************** GOACC_data_start (int flags_m, size_t ma
*** 454,460 ****
      {
        prof_info.device_type = acc_device_host;
        api_info.device_type = prof_info.device_type;
!       tgt = goacc_map_vars (NULL, NULL, 0, NULL, NULL, NULL, NULL, true, 0);
        tgt->prev = thr->mapped_data;
        thr->mapped_data = tgt;
  
--- 462,468 ----
      {
        prof_info.device_type = acc_device_host;
        api_info.device_type = prof_info.device_type;
!       tgt = goacc_map_vars (NULL, NULL, 0, NULL, NULL, NULL, NULL, true, 0, NULL);
        tgt->prev = thr->mapped_data;
        thr->mapped_data = tgt;
  
*************** GOACC_data_start (int flags_m, size_t ma
*** 463,469 ****
  
    gomp_debug (0, "  %s: prepare mappings\n", __FUNCTION__);
    tgt = goacc_map_vars (acc_dev, NULL, mapnum, hostaddrs, NULL, sizes, kinds,
! 			true, 0);
    gomp_debug (0, "  %s: mappings prepared\n", __FUNCTION__);
    tgt->prev = thr->mapped_data;
    thr->mapped_data = tgt;
--- 471,477 ----
  
    gomp_debug (0, "  %s: prepare mappings\n", __FUNCTION__);
    tgt = goacc_map_vars (acc_dev, NULL, mapnum, hostaddrs, NULL, sizes, kinds,
! 			true, 0, NULL);
    gomp_debug (0, "  %s: mappings prepared\n", __FUNCTION__);
    tgt->prev = thr->mapped_data;
    thr->mapped_data = tgt;
diff -Nrcpad gcc-17-20260531/libgomp/plugin/plugin-gcn.c gcc-17-20260607/libgomp/plugin/plugin-gcn.c
*** gcc-17-20260531/libgomp/plugin/plugin-gcn.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/plugin/plugin-gcn.c	Sun Jun  7 22:32:15 2026
*************** struct GOMP_kernel_launch_attributes
*** 274,294 ****
    uint32_t wdims[3];
  };
  
! /* Collection of information needed for a dispatch of a kernel from a
!    kernel.  */
  
  struct kernel_dispatch
  {
    struct agent_info *agent;
    /* Pointer to a command queue associated with a kernel dispatch agent.  */
    void *queue;
-   /* Pointer to a memory space used for kernel arguments passing, wrapped in a
-      node from the agent kernel argument cache.  */
-   struct alloc_cache_node *kernarg_cache_node;
    /* Kernel object.  */
    uint64_t object;
    /* Synchronization signal used for dispatch synchronization.  */
!   uint64_t signal;
    /* Private segment size.  */
    uint32_t private_segment_size;
    /* Group segment size.  */
--- 274,294 ----
    uint32_t wdims[3];
  };
  
! /* Collection of information needed for a dispatch of a kernel from a kernel.
!    Redundant with parts of hsa_kernel_dispatch_packet_t.  It is maintained
!    separately because the contents of the aforementioned packet become
!    unspecified after dispatch, so, we can't re-read back pointers we wrote into
!    the dispatch packet in order to clean them up.  */
  
  struct kernel_dispatch
  {
    struct agent_info *agent;
    /* Pointer to a command queue associated with a kernel dispatch agent.  */
    void *queue;
    /* Kernel object.  */
    uint64_t object;
    /* Synchronization signal used for dispatch synchronization.  */
!   hsa_signal_t signal;
    /* Private segment size.  */
    uint32_t private_segment_size;
    /* Group segment size.  */
*************** struct kernargs {
*** 305,318 ****
  
    /* Output data.  */
    struct output output_data;
  };
  
  /* A queue entry for a future asynchronous launch.  */
  
  struct kernel_launch
  {
    struct kernel_info *kernel;
-   void *vars;
    struct GOMP_kernel_launch_attributes kla;
  };
  
--- 305,322 ----
  
    /* Output data.  */
    struct output output_data;
+ 
+   /* Target variable table.  Size determined by gomp_map_vars.  See
+      GOMP_OFFLOAD_session_allocate_target_var_table.  */
+   _Alignas (__BIGGEST_ALIGNMENT__) void *target_variable_table[];
  };
  
  /* A queue entry for a future asynchronous launch.  */
  
  struct kernel_launch
  {
+   struct gomp_offload_session *session;
    struct kernel_info *kernel;
    struct GOMP_kernel_launch_attributes kla;
  };
  
*************** static int lowlat_size = -1;
*** 625,630 ****
--- 629,641 ----
  
  static bool debug;
  
+ /* Flag to decide whether to prevent merging the kernel arguments with the
+    target variable table, i.e. whether to always fail
+    GOMP_OFFLOAD_session_allocate_target_var_table.  Set from the
+    GCN_INHIBIT_KERNARGS_TVT_MERGE env var.  */
+ 
+ static bool inhibit_kernargs_tvt_merge;
+ 
  /* Flag to decide if the runtime should suppress a possible fallback to host
     execution.  */
  
*************** dump_executable_symbols (hsa_executable_
*** 1085,1095 ****
  
  /* Dump kernel DISPATCH data structure and indent it by INDENT spaces.  */
  
! static void
! print_kernel_dispatch (struct kernel_dispatch *dispatch, unsigned indent)
  {
-   struct kernargs *kernargs = dispatch->kernarg_cache_node->allocation;
- 
    fprintf (stderr, "%*sthis: %p\n", indent, "", dispatch);
    fprintf (stderr, "%*squeue: %p\n", indent, "", dispatch->queue);
    fprintf (stderr, "%*skernarg_address: %p\n", indent, "", kernargs);
--- 1096,1105 ----
  
  /* Dump kernel DISPATCH data structure and indent it by INDENT spaces.  */
  
! static inline void
! print_kernel_dispatch (struct kernel_dispatch *dispatch, unsigned indent,
! 		       struct kernargs *kernargs)
  {
    fprintf (stderr, "%*sthis: %p\n", indent, "", dispatch);
    fprintf (stderr, "%*squeue: %p\n", indent, "", dispatch->queue);
    fprintf (stderr, "%*skernarg_address: %p\n", indent, "", kernargs);
*************** init_environment_variables (void)
*** 1184,1189 ****
--- 1194,1202 ----
    const char *lowlat = secure_getenv ("GOMP_GCN_LOWLAT_POOL");
    if (lowlat)
      lowlat_size = atoi (lowlat);
+ 
+   inhibit_kernargs_tvt_merge
+     = (bool) secure_getenv ("GCN_INHIBIT_KERNARGS_TVT_MERGE");
  }
  
  /* Return malloc'd string with name of SYMBOL.  */
*************** max_isa_vgprs (int isa)
*** 1824,1829 ****
--- 1837,1955 ----
  
  /* }}}  */
  /* {{{ Run  */
+ struct gomp_offload_session
+ {
+   /* Pointer to a memory space used for kernel arguments passing, wrapped in a
+      node from the agent kernel argument cache.  */
+   struct alloc_cache_node *kernarg_cache_node;
+   /* Pointer to the actual target variable table.  */
+   void **target_var_table;
+   /* Device executing the kernel for this offload session.  */
+   struct agent_info *agent;
+ };
+ GOMP_OFFLOAD_session_boilerplate ();
+ 
+ /* Prepare SESSION for use by AGENT.  */
+ static inline void
+ init_session (struct gomp_offload_session *session, struct agent_info *agent)
+ {
+   assert (agent);
+   *session = (struct gomp_offload_session) {
+     .kernarg_cache_node = NULL,
+     .target_var_table = NULL,
+     .agent = agent,
+   };
+ }
+ 
+ void
+ GOMP_OFFLOAD_session_start (struct gomp_offload_session *session, int device)
+ {
+   GCN_DEBUG ("Starting session %p\n", session);
+   assert ((((uintptr_t) session) % __BIGGEST_ALIGNMENT__) == 0);
+   init_session (session, get_agent_info (device));
+ }
+ 
+ /* Release resources held by SESSION (but not SESSION itself).  */
+ static inline void
+ release_session (struct gomp_offload_session *session)
+ {
+   release_alloc_cache_node (session->kernarg_cache_node);
+ }
+ 
+ /* Get new kernargs for SESSION such that it can store TABLE_SIZE char units of
+    target variable table, reusing cached kernargs allocations, if possible.  */
+ 
+ static inline struct kernargs *
+ allocate_session_kernargs (struct gomp_offload_session *session,
+ 			   size_t table_size)
+ {
+   GCN_DEBUG ("Session %p asked for allocation of kernargs+%llu...\n",
+ 	     session, (unsigned long long) table_size);
+   struct agent_info *agent = session->agent;
+   assert (!session->kernarg_cache_node);
+ 
+   /* To increase chance of cache hit, round up size of the target variable
+      table to a multiple of (64*sizeof(void*)), and ensure that this size is
+      nonzero.  */
+   if (!table_size)
+     table_size++;
+ 
+   {
+     constexpr size_t rounding_factor = 64 * sizeof (void*);
+     table_size += rounding_factor - 1;
+     table_size = (table_size / rounding_factor) * rounding_factor;
+   }
+   size_t kernargs_size = sizeof (struct kernargs) + table_size;
+ 
+   session->kernarg_cache_node = (alloc_cache_try_find
+ 				 (&agent->kernarg_cache,
+ 				  kernargs_size));
+ 
+   if (!session->kernarg_cache_node)
+     {
+       /* Cache miss.  */
+       void *ka_addr;
+       hsa_status_t status = hsa_fns.hsa_memory_allocate_fn
+ 	(agent->kernarg_region, sizeof (struct kernargs), &ka_addr);
+       if (status != HSA_STATUS_SUCCESS)
+ 	hsa_fatal ("Could not allocate memory for GCN kernel arguments", status);
+ 
+       session->kernarg_cache_node = (alloc_cache_add_taken_node
+ 				     (&agent->kernarg_cache, ka_addr,
+ 				      kernargs_size));
+       if (!session->kernarg_cache_node)
+ 	GOMP_PLUGIN_fatal ("Could not allocate cache node for kernel arguments");
+     }
+ 
+   return session->kernarg_cache_node->allocation;
+ }
+ 
+ void **
+ GOMP_OFFLOAD_session_allocate_target_var_table (struct gomp_offload_session *session,
+ 						size_t table_size)
+ {
+   GCN_DEBUG ("Session %p asked to allocate\n", session);
+   /* libgomp wants us to handle the TVT.  */
+   assert (!session->target_var_table);
+ 
+   if (inhibit_kernargs_tvt_merge)
+     /* ... but the user does not.  Used for testing.  */
+     return NULL;
+ 
+   struct kernargs *kernargs = allocate_session_kernargs (session, table_size);
+   return session->target_var_table = &kernargs->target_variable_table[0];
+ }
+ 
+ void
+ GOMP_OFFLOAD_session_set_target_var_table (struct gomp_offload_session *session,
+ 					   void **table)
+ {
+   GCN_DEBUG ("Session %p will use TVT %p...\n", session, table);
+   assert (!session->target_var_table);
+   /* libgomp wants to handle the TVT.  */
+   allocate_session_kernargs (session, 0);
+   session->target_var_table = table;
+ }
  
  /* Create or reuse a team arena and stack space.
   
*************** alloc_by_agent (struct agent_info *agent
*** 2010,2053 ****
    return ptr;
  }
  
- /* Get a cached kernargs from AGENT, returning an existing one if any are
-    available.  Returns an alloc_cache_node whose value is this allocation.  */
- 
- static struct alloc_cache_node *
- alloc_kernargs_on_agent (struct agent_info *agent, size_t size)
- {
-   struct alloc_cache_node *ka_node = (alloc_cache_try_find
- 				      (&agent->kernarg_cache, size));
- 
-   /* The cache was empty.  */
-   if (!ka_node)
-     {
-       void *ka_addr;
-       hsa_status_t status = hsa_fns.hsa_memory_allocate_fn
- 	(agent->kernarg_region, sizeof (struct kernargs), &ka_addr);
-       if (status != HSA_STATUS_SUCCESS)
- 	hsa_fatal ("Could not allocate memory for GCN kernel arguments", status);
- 
-       ka_node = alloc_cache_add_taken_node (&agent->kernarg_cache,
- 					    ka_addr,
- 					    size);
-       if (!ka_node)
- 	GOMP_PLUGIN_fatal ("Could not allocate cache node for kernel arguments");
-     }
- 
-   return ka_node;
- }
- 
  /* Create kernel dispatch data structure for given KERNEL, along with
     the necessary device signals and memory allocations.  */
  
! static struct kernel_dispatch *
! create_kernel_dispatch (struct kernel_info *kernel, int num_teams,
! 			int num_threads)
  {
    struct agent_info *agent = kernel->agent;
-   struct kernel_dispatch *shadow
-     = GOMP_PLUGIN_malloc_cleared (sizeof (struct kernel_dispatch));
  
    shadow->agent = kernel->agent;
    shadow->object = kernel->object;
--- 2136,2150 ----
    return ptr;
  }
  
  /* Create kernel dispatch data structure for given KERNEL, along with
     the necessary device signals and memory allocations.  */
  
! static inline void
! prepare_kernel_dispatch (struct kernel_dispatch *shadow,
! 			 struct kernel_info *kernel, int num_teams,
! 			 int num_threads, struct kernargs *kernargs)
  {
    struct agent_info *agent = kernel->agent;
  
    shadow->agent = kernel->agent;
    shadow->object = kernel->object;
*************** create_kernel_dispatch (struct kernel_in
*** 2057,2063 ****
    if (status != HSA_STATUS_SUCCESS)
      hsa_fatal ("Error creating the GCN sync signal", status);
  
!   shadow->signal = sync_signal.handle;
    shadow->private_segment_size = kernel->private_segment_size;
  
    if (lowlat_size < 0)
--- 2154,2160 ----
    if (status != HSA_STATUS_SUCCESS)
      hsa_fatal ("Error creating the GCN sync signal", status);
  
!   shadow->signal = sync_signal;
    shadow->private_segment_size = kernel->private_segment_size;
  
    if (lowlat_size < 0)
*************** create_kernel_dispatch (struct kernel_in
*** 2085,2098 ****
    if (kernel->kernarg_segment_size > 8)
      {
        GOMP_PLUGIN_fatal ("Unexpectedly large kernargs segment requested");
!       return NULL;
      }
  
-   /* Get an allocation, if possible from the cache.  */
-   shadow->kernarg_cache_node = (alloc_kernargs_on_agent
- 				(agent, sizeof (struct kernargs)));
-   struct kernargs *kernargs = shadow->kernarg_cache_node->allocation;
- 
    /* Zero-initialize the output_data (minimum needed).  */
    kernargs->abi.out_ptr = (int64_t)&kernargs->output_data;
    kernargs->output_data.next_output = 0;
--- 2182,2190 ----
    if (kernel->kernarg_segment_size > 8)
      {
        GOMP_PLUGIN_fatal ("Unexpectedly large kernargs segment requested");
!       return;
      }
  
    /* Zero-initialize the output_data (minimum needed).  */
    kernargs->abi.out_ptr = (int64_t)&kernargs->output_data;
    kernargs->output_data.next_output = 0;
*************** create_kernel_dispatch (struct kernel_in
*** 2111,2118 ****
  
    /* Ensure we can recognize unset return values.  */
    kernargs->output_data.return_value = 0xcafe0000;
  
!   return shadow;
  }
  
  static void
--- 2203,2221 ----
  
    /* Ensure we can recognize unset return values.  */
    kernargs->output_data.return_value = 0xcafe0000;
+ }
  
! /* Copy information from DISPATCH into PACKET, to get it ready for
!    dispatching.  */
! 
! static inline void
! populate_packet_from_dispatch (hsa_kernel_dispatch_packet_t *packet,
! 			       struct kernel_dispatch *shadow)
! {
!   packet->private_segment_size = shadow->private_segment_size;
!   packet->group_segment_size = shadow->group_segment_size;
!   packet->kernel_object = shadow->object;
!   packet->completion_signal = shadow->signal;
  }
  
  static void
*************** console_output (struct kernel_info *kern
*** 2185,2208 ****
  /* Release data structure created for a kernel dispatch in SHADOW argument,
     and clean up the signal and memory allocations.  */
  
! static void
! release_kernel_dispatch (struct kernel_dispatch *shadow)
  {
    GCN_DEBUG ("Released kernel dispatch: %p\n", shadow);
  
-   struct kernargs *kernargs = shadow->kernarg_cache_node->allocation;
    void *addr = (void *)kernargs->abi.arena_ptr;
    if (!addr)
      addr = (void *)kernargs->abi.stack_ptr;
    release_ephemeral_memories (shadow->agent, addr);
  
!   release_alloc_cache_node (shadow->kernarg_cache_node);
! 
!   hsa_signal_t s;
!   s.handle = shadow->signal;
!   hsa_fns.hsa_signal_destroy_fn (s);
! 
!   free (shadow);
  }
  
  /* Extract the properties from a kernel binary.  */
--- 2288,2305 ----
  /* Release data structure created for a kernel dispatch in SHADOW argument,
     and clean up the signal and memory allocations.  */
  
! static inline void
! cleanup_kernel_dispatch (struct kernel_dispatch *shadow,
! 			 struct kernargs *kernargs)
  {
    GCN_DEBUG ("Released kernel dispatch: %p\n", shadow);
  
    void *addr = (void *)kernargs->abi.arena_ptr;
    if (!addr)
      addr = (void *)kernargs->abi.stack_ptr;
    release_ephemeral_memories (shadow->agent, addr);
  
!   hsa_fns.hsa_signal_destroy_fn (shadow->signal);
  }
  
  /* Extract the properties from a kernel binary.  */
*************** init_kernel (struct kernel_info *kernel)
*** 2295,2309 ****
  		       "mutex");
  }
  
! /* Run KERNEL on its agent, pass VARS to it as arguments and take
!    launch attributes from KLA.
     
     MODULE_LOCKED indicates that the caller already holds the lock and
     run_kernel need not lock it again.
     If AQ is NULL then agent->sync_queue will be used.  */
  
  static void
! run_kernel (struct kernel_info *kernel, void *vars,
  	    struct GOMP_kernel_launch_attributes *kla,
  	    struct goacc_asyncqueue *aq, bool module_locked)
  {
--- 2392,2407 ----
  		       "mutex");
  }
  
! /* Run KERNEL on its agent as part of SESSION and take launch attributes from
!    KLA.
     
     MODULE_LOCKED indicates that the caller already holds the lock and
     run_kernel need not lock it again.
     If AQ is NULL then agent->sync_queue will be used.  */
  
  static void
! run_kernel (struct gomp_offload_session *session,
! 	    struct kernel_info *kernel,
  	    struct GOMP_kernel_launch_attributes *kla,
  	    struct goacc_asyncqueue *aq, bool module_locked)
  {
*************** run_kernel (struct kernel_info *kernel,
*** 2389,2394 ****
--- 2487,2495 ----
  					     packet->grid_size_x,
  					     kla->wdims[0]);
  
+   struct kernargs *kernargs = session->kernarg_cache_node->allocation;
+   packet->kernarg_address = kernargs;
+ 
    if (kla->ndim >= 2)
      {
        packet->grid_size_y = kla->gdims[1];
*************** run_kernel (struct kernel_info *kernel,
*** 2424,2452 ****
  	     packet->workgroup_size_x, packet->workgroup_size_y,
  	     packet->workgroup_size_z);
  
!   struct kernel_dispatch *shadow
!     = create_kernel_dispatch (kernel, packet->grid_size_x,
! 			      packet->grid_size_z);
!   shadow->queue = command_q;
  
    if (debug)
      {
        fprintf (stderr, "\nKernel has following dependencies:\n");
!       print_kernel_dispatch (shadow, 2);
      }
  
!   packet->private_segment_size = shadow->private_segment_size;
!   packet->group_segment_size = shadow->group_segment_size;
!   packet->kernel_object = shadow->object;
!   struct kernargs *kernargs = (packet->kernarg_address
! 			       = shadow->kernarg_cache_node->allocation);
!   hsa_signal_t s;
!   s.handle = shadow->signal;
!   packet->completion_signal = s;
    hsa_fns.hsa_signal_store_relaxed_fn (s, 1);
-   memcpy (kernargs, &vars, sizeof (vars));
  
!   GCN_DEBUG ("Copying kernel runtime pointer to kernarg_address\n");
  
    uint16_t header;
    header = HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE;
--- 2525,2548 ----
  	     packet->workgroup_size_x, packet->workgroup_size_y,
  	     packet->workgroup_size_z);
  
!   struct kernel_dispatch shadow;
!   prepare_kernel_dispatch (&shadow, kernel, packet->grid_size_x,
! 			   packet->grid_size_z, kernargs);
!   shadow.queue = command_q;
  
    if (debug)
      {
        fprintf (stderr, "\nKernel has following dependencies:\n");
!       print_kernel_dispatch (&shadow, 2, kernargs);
      }
  
!   populate_packet_from_dispatch (packet, &shadow);
! 
!   hsa_signal_t s = shadow.signal;
    hsa_fns.hsa_signal_store_relaxed_fn (s, 1);
  
!   GCN_DEBUG ("Copying kernel runtime pointer %p to kernarg_address\n", session->target_var_table);
!   memcpy (kernargs, &session->target_var_table, sizeof (session->target_var_table));
  
    uint16_t header;
    header = HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE;
*************** run_kernel (struct kernel_info *kernel,
*** 2476,2482 ****
  
    unsigned int return_value = (unsigned int)kernargs->output_data.return_value;
  
!   release_kernel_dispatch (shadow);
  
    if (!module_locked && pthread_rwlock_unlock (&agent->module_rwlock))
      GOMP_PLUGIN_fatal ("Unable to unlock a GCN agent rwlock");
--- 2572,2579 ----
  
    unsigned int return_value = (unsigned int)kernargs->output_data.return_value;
  
!   cleanup_kernel_dispatch (&shadow, kernargs);
!   release_session (session);
  
    if (!module_locked && pthread_rwlock_unlock (&agent->module_rwlock))
      GOMP_PLUGIN_fatal ("Unable to unlock a GCN agent rwlock");
*************** destroy_module (struct module_info *modu
*** 2788,2794 ****
    if (module->fini_array_func)
      {
        init_kernel (module->fini_array_func);
!       run_kernel (module->fini_array_func, NULL, &kla, NULL, locked);
      }
    module->constructors_run_p = false;
  
--- 2885,2894 ----
    if (module->fini_array_func)
      {
        init_kernel (module->fini_array_func);
!       struct gomp_offload_session session;
!       init_session (&session, module->fini_array_func->agent);
!       GOMP_OFFLOAD_session_set_target_var_table (&session, NULL);
!       run_kernel (&session, module->fini_array_func, &kla, NULL, locked);
      }
    module->constructors_run_p = false;
  
*************** execute_queue_entry (struct goacc_asyncq
*** 2820,2827 ****
        if (DEBUG_QUEUES)
  	GCN_DEBUG ("Async thread %d:%d: Executing launch entry (%d)\n",
  		   aq->agent->device_id, aq->id, index);
!       run_kernel (entry->u.launch.kernel,
! 		  entry->u.launch.vars,
  		  &entry->u.launch.kla, aq, false);
        if (DEBUG_QUEUES)
  	GCN_DEBUG ("Async thread %d:%d: Executing launch entry (%d) done\n",
--- 2920,2927 ----
        if (DEBUG_QUEUES)
  	GCN_DEBUG ("Async thread %d:%d: Executing launch entry (%d)\n",
  		   aq->agent->device_id, aq->id, index);
!       run_kernel (entry->u.launch.session,
! 		  entry->u.launch.kernel,
  		  &entry->u.launch.kla, aq, false);
        if (DEBUG_QUEUES)
  	GCN_DEBUG ("Async thread %d:%d: Executing launch entry (%d) done\n",
*************** wait_for_queue_nonfull (struct goacc_asy
*** 2983,2990 ****
     kernel to run.  */
  
  static void
! queue_push_launch (struct goacc_asyncqueue *aq, struct kernel_info *kernel,
! 		   void *vars, struct GOMP_kernel_launch_attributes *kla)
  {
    assert (aq->agent == kernel->agent);
  
--- 3083,3092 ----
     kernel to run.  */
  
  static void
! queue_push_launch (struct goacc_asyncqueue *aq,
! 		   struct gomp_offload_session *session,
! 		   struct kernel_info *kernel,
! 		   struct GOMP_kernel_launch_attributes *kla)
  {
    assert (aq->agent == kernel->agent);
  
*************** queue_push_launch (struct goacc_asyncque
*** 2999,3006 ****
  	       aq->id, queue_last);
  
    aq->queue[queue_last].type = KERNEL_LAUNCH;
    aq->queue[queue_last].u.launch.kernel = kernel;
-   aq->queue[queue_last].u.launch.vars = vars;
    aq->queue[queue_last].u.launch.kla = *kla;
  
    aq->queue_n++;
--- 3101,3108 ----
  	       aq->id, queue_last);
  
    aq->queue[queue_last].type = KERNEL_LAUNCH;
+   aq->queue[queue_last].u.launch.session = session;
    aq->queue[queue_last].u.launch.kernel = kernel;
    aq->queue[queue_last].u.launch.kla = *kla;
  
    aq->queue_n++;
*************** managed_heap_create (struct agent_info *
*** 3401,3408 ****
  /* Execute an OpenACC kernel, synchronously or asynchronously.  */
  
  static void
! gcn_exec (struct kernel_info *kernel,
! 	  void **devaddrs, unsigned *dims, void *targ_mem_desc, bool async,
  	  struct goacc_asyncqueue *aq)
  {
    if (!GOMP_OFFLOAD_can_run (kernel))
--- 3503,3510 ----
  /* Execute an OpenACC kernel, synchronously or asynchronously.  */
  
  static void
! gcn_exec (struct kernel_info *kernel, struct gomp_offload_session *session,
! 	  unsigned *dims, void *targ_mem_desc, bool async,
  	  struct goacc_asyncqueue *aq)
  {
    if (!GOMP_OFFLOAD_can_run (kernel))
*************** gcn_exec (struct kernel_info *kernel,
*** 3522,3530 ****
      }
  
    if (!async)
!     run_kernel (kernel, devaddrs, &kla, NULL, false);
    else
!     queue_push_launch (aq, kernel, devaddrs, &kla);
  
    if (profiling_dispatch_p)
      {
--- 3624,3632 ----
      }
  
    if (!async)
!     run_kernel (session, kernel, &kla, NULL, false);
    else
!     queue_push_launch (aq, session, kernel, &kla);
  
    if (profiling_dispatch_p)
      {
*************** GOMP_OFFLOAD_load_image (int ord, unsign
*** 4096,4102 ****
    if (module->init_array_func)
      {
        init_kernel (module->init_array_func);
!       run_kernel (module->init_array_func, NULL, &kla, NULL, false);
      }
    module->constructors_run_p = true;
  
--- 4198,4207 ----
    if (module->init_array_func)
      {
        init_kernel (module->init_array_func);
!       struct gomp_offload_session session;
!       init_session (&session, agent);
!       GOMP_OFFLOAD_session_set_target_var_table (&session, NULL);
!       run_kernel (&session, module->init_array_func, &kla, NULL, false);
      }
    module->constructors_run_p = true;
  
*************** GOMP_OFFLOAD_get_interop_type_desc (stru
*** 5232,5240 ****
     specified device.  */
  
  void
! GOMP_OFFLOAD_run (int device, void *fn_ptr, void *vars, void **args)
  {
!   struct agent_info *agent = get_agent_info (device);
    struct kernel_info *kernel = (struct kernel_info *) fn_ptr;
    struct GOMP_kernel_launch_attributes def;
    struct GOMP_kernel_launch_attributes *kla;
--- 5337,5345 ----
     specified device.  */
  
  void
! GOMP_OFFLOAD_run (struct gomp_offload_session *session, void *fn_ptr, void **args)
  {
!   struct agent_info *agent = session->agent;
    struct kernel_info *kernel = (struct kernel_info *) fn_ptr;
    struct GOMP_kernel_launch_attributes def;
    struct GOMP_kernel_launch_attributes *kla;
*************** GOMP_OFFLOAD_run (int device, void *fn_p
*** 5248,5254 ****
        GCN_WARNING ("Will not run GCN kernel because the grid size is zero\n");
        return;
      }
!   run_kernel (kernel, vars, kla, NULL, false);
  }
  
  /* Run an asynchronous OpenMP kernel on DEVICE.  This is similar to
--- 5353,5359 ----
        GCN_WARNING ("Will not run GCN kernel because the grid size is zero\n");
        return;
      }
!   run_kernel (session, kernel, kla, NULL, false);
  }
  
  /* Run an asynchronous OpenMP kernel on DEVICE.  This is similar to
*************** GOMP_OFFLOAD_run (int device, void *fn_p
*** 5256,5266 ****
     GOMP_PLUGIN_target_task_completion when it has finished.  */
  
  void
! GOMP_OFFLOAD_async_run (int device, void *tgt_fn, void *tgt_vars,
! 			void **args, void *async_data)
  {
    GCN_DEBUG ("GOMP_OFFLOAD_async_run invoked\n");
!   struct agent_info *agent = get_agent_info (device);
    struct kernel_info *kernel = (struct kernel_info *) tgt_fn;
    struct GOMP_kernel_launch_attributes def;
    struct GOMP_kernel_launch_attributes *kla;
--- 5361,5373 ----
     GOMP_PLUGIN_target_task_completion when it has finished.  */
  
  void
! GOMP_OFFLOAD_async_run (struct gomp_offload_session *session,
! 			void *tgt_fn,
! 			void **args,
! 			void *async_data)
  {
    GCN_DEBUG ("GOMP_OFFLOAD_async_run invoked\n");
!   struct agent_info *agent = session->agent;
    struct kernel_info *kernel = (struct kernel_info *) tgt_fn;
    struct GOMP_kernel_launch_attributes def;
    struct GOMP_kernel_launch_attributes *kla;
*************** GOMP_OFFLOAD_async_run (int device, void
*** 5278,5284 ****
    maybe_init_omp_async (agent);
    if (!agent->omp_async_queue)
      GOMP_PLUGIN_fatal ("Asynchronous queue initialization failed");
!   queue_push_launch (agent->omp_async_queue, kernel, tgt_vars, kla);
    queue_push_callback (agent->omp_async_queue,
  		       GOMP_PLUGIN_target_task_completion, async_data);
  }
--- 5385,5391 ----
    maybe_init_omp_async (agent);
    if (!agent->omp_async_queue)
      GOMP_PLUGIN_fatal ("Asynchronous queue initialization failed");
!   queue_push_launch (agent->omp_async_queue, session, kernel, kla);
    queue_push_callback (agent->omp_async_queue,
  		       GOMP_PLUGIN_target_task_completion, async_data);
  }
*************** GOMP_OFFLOAD_is_accessible_ptr (int devi
*** 5422,5451 ****
     already-loaded KERNEL.  */
  
  void
! GOMP_OFFLOAD_openacc_exec (void (*fn_ptr) (void *),
  			   size_t mapnum __attribute__((unused)),
  			   void **hostaddrs __attribute__((unused)),
! 			   void **devaddrs, unsigned *dims,
! 			   void *targ_mem_desc)
  {
    struct kernel_info *kernel = (struct kernel_info *) fn_ptr;
  
!   gcn_exec (kernel, devaddrs, dims, targ_mem_desc, false, NULL);
  }
  
  /* Run an asynchronous OpenACC kernel on the specified queue.  */
  
  void
! GOMP_OFFLOAD_openacc_async_exec (void (*fn_ptr) (void *),
  				 size_t mapnum __attribute__((unused)),
  				 void **hostaddrs __attribute__((unused)),
- 				 void **devaddrs,
  				 unsigned *dims, void *targ_mem_desc,
  				 struct goacc_asyncqueue *aq)
  {
    struct kernel_info *kernel = (struct kernel_info *) fn_ptr;
  
!   gcn_exec (kernel, devaddrs, dims, targ_mem_desc, true, aq);
  }
  
  /* Create a new asynchronous thread and queue for running future kernels.  */
--- 5529,5558 ----
     already-loaded KERNEL.  */
  
  void
! GOMP_OFFLOAD_openacc_exec (struct gomp_offload_session *session,
! 			   void (*fn_ptr) (void *),
  			   size_t mapnum __attribute__((unused)),
  			   void **hostaddrs __attribute__((unused)),
! 			   unsigned *dims, void *targ_mem_desc)
  {
    struct kernel_info *kernel = (struct kernel_info *) fn_ptr;
  
!   gcn_exec (kernel, session, dims, targ_mem_desc, false, NULL);
  }
  
  /* Run an asynchronous OpenACC kernel on the specified queue.  */
  
  void
! GOMP_OFFLOAD_openacc_async_exec (struct gomp_offload_session *session,
! 				 void (*fn_ptr) (void *),
  				 size_t mapnum __attribute__((unused)),
  				 void **hostaddrs __attribute__((unused)),
  				 unsigned *dims, void *targ_mem_desc,
  				 struct goacc_asyncqueue *aq)
  {
    struct kernel_info *kernel = (struct kernel_info *) fn_ptr;
  
!   gcn_exec (kernel, session, dims, targ_mem_desc, true, aq);
  }
  
  /* Create a new asynchronous thread and queue for running future kernels.  */
diff -Nrcpad gcc-17-20260531/libgomp/plugin/plugin-nvptx.c gcc-17-20260607/libgomp/plugin/plugin-nvptx.c
*** gcc-17-20260531/libgomp/plugin/plugin-nvptx.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/plugin/plugin-nvptx.c	Sun Jun  7 22:32:15 2026
*************** link_ptx (CUmodule *module, const struct
*** 828,833 ****
--- 828,860 ----
    return true;
  }
  
+ /* The NVPTX plugin can't make much use of this abstraction, so it has the bare
+    minimum possible.  */
+ struct gomp_offload_session
+ {
+   int device;
+   void **target_var_table;
+ };
+ GOMP_OFFLOAD_session_boilerplate();
+ 
+ void
+ GOMP_OFFLOAD_session_start (struct gomp_offload_session *session, int device)
+ {
+   assert ((((uintptr_t) session) % __BIGGEST_ALIGNMENT__) == 0);
+   *session = (struct gomp_offload_session) {
+     .device = device,
+     .target_var_table = NULL,
+   };
+ }
+ 
+ void
+ GOMP_OFFLOAD_session_set_target_var_table (struct gomp_offload_session *session,
+ 					   void **table)
+ {
+   assert (!session->target_var_table);
+   session->target_var_table = table;
+ }
+ 
  static void
  nvptx_exec (void (*fn), unsigned *dims, void *targ_mem_desc,
  	    CUdeviceptr dp, CUstream stream)
*************** GOMP_OFFLOAD_page_locked_host_free (void
*** 1991,2005 ****
  }
  
  void
! GOMP_OFFLOAD_openacc_exec (void (*fn) (void *),
  			   size_t mapnum  __attribute__((unused)),
  			   void **hostaddrs __attribute__((unused)),
- 			   void **devaddrs,
  			   unsigned *dims, void *targ_mem_desc)
  {
    GOMP_PLUGIN_debug (0, "nvptx %s\n", __FUNCTION__);
  
!   CUdeviceptr dp = (CUdeviceptr) devaddrs;
    nvptx_exec (fn, dims, targ_mem_desc, dp, NULL);
  
    CUresult r = CUDA_CALL_NOCHECK (cuStreamSynchronize, NULL);
--- 2018,2032 ----
  }
  
  void
! GOMP_OFFLOAD_openacc_exec (struct gomp_offload_session *session,
! 			   void (*fn) (void *),
  			   size_t mapnum  __attribute__((unused)),
  			   void **hostaddrs __attribute__((unused)),
  			   unsigned *dims, void *targ_mem_desc)
  {
    GOMP_PLUGIN_debug (0, "nvptx %s\n", __FUNCTION__);
  
!   CUdeviceptr dp = (CUdeviceptr) session->target_var_table;
    nvptx_exec (fn, dims, targ_mem_desc, dp, NULL);
  
    CUresult r = CUDA_CALL_NOCHECK (cuStreamSynchronize, NULL);
*************** GOMP_OFFLOAD_openacc_exec (void (*fn) (v
*** 2012,2027 ****
  }
  
  void
! GOMP_OFFLOAD_openacc_async_exec (void (*fn) (void *),
  				 size_t mapnum __attribute__((unused)),
  				 void **hostaddrs __attribute__((unused)),
- 				 void **devaddrs,
  				 unsigned *dims, void *targ_mem_desc,
  				 struct goacc_asyncqueue *aq)
  {
    GOMP_PLUGIN_debug (0, "nvptx %s\n", __FUNCTION__);
  
!   CUdeviceptr dp = (CUdeviceptr) devaddrs;
    nvptx_exec (fn, dims, targ_mem_desc, dp, aq->cuda_stream);
  }
  
--- 2039,2054 ----
  }
  
  void
! GOMP_OFFLOAD_openacc_async_exec (struct gomp_offload_session *session,
! 				 void (*fn) (void *),
  				 size_t mapnum __attribute__((unused)),
  				 void **hostaddrs __attribute__((unused)),
  				 unsigned *dims, void *targ_mem_desc,
  				 struct goacc_asyncqueue *aq)
  {
    GOMP_PLUGIN_debug (0, "nvptx %s\n", __FUNCTION__);
  
!   CUdeviceptr dp = (CUdeviceptr) session->target_var_table;
    nvptx_exec (fn, dims, targ_mem_desc, dp, aq->cuda_stream);
  }
  
*************** GOMP_OFFLOAD_get_interop_type_desc (stru
*** 2957,2963 ****
  }
  
  void
! GOMP_OFFLOAD_run (int ord, void *tgt_fn, void *tgt_vars, void **args)
  {
    struct targ_fn_descriptor *tgt_fn_desc
      = (struct targ_fn_descriptor *) tgt_fn;
--- 2984,2990 ----
  }
  
  void
! GOMP_OFFLOAD_run (struct gomp_offload_session *session, void *tgt_fn, void **args)
  {
    struct targ_fn_descriptor *tgt_fn_desc
      = (struct targ_fn_descriptor *) tgt_fn;
*************** GOMP_OFFLOAD_run (int ord, void *tgt_fn,
*** 2965,2971 ****
    const struct targ_fn_launch *launch = tgt_fn_desc->launch;
    const char *fn_name = launch->fn;
    CUresult r;
!   struct ptx_device *ptx_dev = ptx_devices[ord];
    const char *maybe_abort_msg = "(perhaps abort was called)";
    int teams = 0, threads = 0;
  
--- 2992,2998 ----
    const struct targ_fn_launch *launch = tgt_fn_desc->launch;
    const char *fn_name = launch->fn;
    CUresult r;
!   struct ptx_device *ptx_dev = ptx_devices[session->device];
    const char *maybe_abort_msg = "(perhaps abort was called)";
    int teams = 0, threads = 0;
  
*************** GOMP_OFFLOAD_run (int ord, void *tgt_fn,
*** 3003,3009 ****
  
    pthread_mutex_lock (&ptx_dev->omp_stacks.lock);
    void *stacks = nvptx_stacks_acquire (ptx_dev, stack_size, teams * threads);
!   void *fn_args[] = {tgt_vars, stacks, (void *) stack_size};
    size_t fn_args_size = sizeof fn_args;
    void *config[] = {
      CU_LAUNCH_PARAM_BUFFER_POINTER, fn_args,
--- 3030,3036 ----
  
    pthread_mutex_lock (&ptx_dev->omp_stacks.lock);
    void *stacks = nvptx_stacks_acquire (ptx_dev, stack_size, teams * threads);
!   void *fn_args[] = {session->target_var_table, stacks, (void *) stack_size};
    size_t fn_args_size = sizeof fn_args;
    void *config[] = {
      CU_LAUNCH_PARAM_BUFFER_POINTER, fn_args,
diff -Nrcpad gcc-17-20260531/libgomp/target.c gcc-17-20260607/libgomp/target.c
*** gcc-17-20260531/libgomp/target.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/target.c	Sun Jun  7 22:32:15 2026
*************** kind_to_name (unsigned short kind, bool
*** 1060,1065 ****
--- 1060,1100 ----
      }
  }
  
+ static void
+ gomp_add_map (size_t idx, size_t *new_idx,
+ 	      void ***hostaddrs, size_t **sizes, unsigned short **skinds,
+ 	      void ***new_hostaddrs, size_t **new_sizes,
+ 	      unsigned short **new_kinds, size_t *iterator_count)
+ {
+   if ((*sizes)[idx] == SIZE_MAX)
+     {
+       uintptr_t *iterator_array = (*hostaddrs)[idx];
+       size_t count = *iterator_array++;
+       for (size_t i = 0; i < count; i++)
+ 	{
+ 	  (*new_hostaddrs)[*new_idx] = (void *) *iterator_array++;
+ 	  (*new_sizes)[*new_idx] = *iterator_array++;
+ 	  (*new_kinds)[*new_idx] = (*skinds)[idx];
+ 	  iterator_count[*new_idx] = i + 1;
+ 	  gomp_debug (1,
+ 		      "Expanding map %u <%s>: "
+ 		      "hostaddrs[%u] = %p, sizes[%u] = %lu\n",
+ 		      (int) idx, kind_to_name ((*new_kinds)[*new_idx], true),
+ 		      (int) *new_idx, (*new_hostaddrs)[*new_idx],
+ 		      (int) *new_idx, (unsigned long) (*new_sizes)[*new_idx]);
+ 	  (*new_idx)++;
+ 	}
+     }
+   else
+     {
+       (*new_hostaddrs)[*new_idx] = (*hostaddrs)[idx];
+       (*new_sizes)[*new_idx] = (*sizes)[idx];
+       (*new_kinds)[*new_idx] = (*skinds)[idx];
+       iterator_count[*new_idx] = 0;
+       (*new_idx)++;
+     }
+ }
+ 
  /*  When GCC encounters a clause with an iterator, e.g.:
  
     #pragma omp target map (iterator(i=0:4), to: x[i])
*************** gomp_merge_iterator_maps (size_t *mapnum
*** 1093,1098 ****
--- 1128,1134 ----
    bool iterator_p = false;
    size_t map_count = 0;
    unsigned short **skinds = (unsigned short **) kinds;
+   const int typemask = 0xff;
  
    for (size_t i = 0; i < *mapnum; i++)
      if ((*sizes)[i] == SIZE_MAX)
*************** gomp_merge_iterator_maps (size_t *mapnum
*** 1119,1151 ****
  
    for (size_t i = 0; i < *mapnum; i++)
      {
!       if ((*sizes)[i] == SIZE_MAX)
  	{
! 	  uintptr_t *iterator_array = (*hostaddrs)[i];
! 	  size_t count = *iterator_array++;
! 	  for (size_t j = 0; j < count; j++)
  	    {
! 	      new_hostaddrs[new_idx] = (void *) *iterator_array++;
! 	      new_sizes[new_idx] = *iterator_array++;
! 	      new_kinds[new_idx] = (*skinds)[i];
! 	      (*iterator_count)[new_idx] = j + 1;
! 	      gomp_debug (1,
! 			  "Expanding map %u <%s>: "
! 			  "hostaddrs[%u] = %p, sizes[%u] = %lu\n",
! 			  (int) i, kind_to_name (new_kinds[new_idx], true),
! 			  (int) new_idx, new_hostaddrs[new_idx],
! 			  (int) new_idx, (unsigned long) new_sizes[new_idx]);
! 	      new_idx++;
  	    }
  	}
        else
! 	{
! 	  new_hostaddrs[new_idx] = (*hostaddrs)[i];
! 	  new_sizes[new_idx] = (*sizes)[i];
! 	  new_kinds[new_idx] = (*skinds)[i];
! 	  (*iterator_count)[new_idx] = 0;
! 	  new_idx++;
! 	}
      }
  
    *mapnum = map_count;
--- 1155,1189 ----
  
    for (size_t i = 0; i < *mapnum; i++)
      {
!       int map_type = get_kind (true, *skinds, i) & typemask;
!       if (map_type == GOMP_MAP_STRUCT || map_type == GOMP_MAP_STRUCT_UNORD)
  	{
! 	  size_t field_count = (*sizes)[i];
! 	  size_t idx_i = new_idx;
! 
! 	  gomp_add_map (i, &new_idx, hostaddrs, sizes, skinds,
! 			&new_hostaddrs, &new_sizes, &new_kinds,
! 			*iterator_count);
! 
! 	  for (size_t j = i + 1; j <= i + field_count; j++)
  	    {
! 	      if ((*sizes)[j] == SIZE_MAX)
! 		{
! 		  uintptr_t *iterator_array = (*hostaddrs)[j];
! 		  size_t count = iterator_array[0];
! 		  new_sizes[idx_i] += count - 1;
! 		}
! 	      gomp_add_map (j, &new_idx, hostaddrs, sizes, skinds,
! 			    &new_hostaddrs, &new_sizes, &new_kinds,
! 			    *iterator_count);
  	    }
+ 	  gomp_debug (1, "Map %u: new field count = %lu\n",
+ 		      (int) i, (unsigned long) new_sizes[idx_i]);
+ 	  i += field_count;
  	}
        else
! 	gomp_add_map (i, &new_idx, hostaddrs, sizes, skinds,
! 		      &new_hostaddrs, &new_sizes, &new_kinds, *iterator_count);
      }
  
    *mapnum = map_count;
*************** gomp_present_fatal (void *addr, size_t s
*** 1173,1186 ****
  #endif
  }
  
  static inline __attribute__((always_inline)) struct target_mem_desc *
  gomp_map_vars_internal (struct gomp_device_descr *devicep,
  			struct goacc_asyncqueue *aq, size_t mapnum,
  			void **hostaddrs, void **devaddrs, size_t *sizes,
  			void *kinds, bool short_mapkind,
  			htab_t *refcount_set,
! 			enum gomp_map_vars_kind pragma_kind)
  {
    size_t i, tgt_align, tgt_size, not_found_cnt = 0;
    bool has_firstprivate = false;
    bool has_always_ptrset = false;
--- 1211,1237 ----
  #endif
  }
  
+ /* Get size of region required for target variable table for MAPNUM
+    mappings.  */
+ 
+ static inline size_t
+ gomp_get_tvt_size (size_t mapnum)
+ {
+   return mapnum * sizeof (void *);
+ }
+ 
  static inline __attribute__((always_inline)) struct target_mem_desc *
  gomp_map_vars_internal (struct gomp_device_descr *devicep,
  			struct goacc_asyncqueue *aq, size_t mapnum,
  			void **hostaddrs, void **devaddrs, size_t *sizes,
  			void *kinds, bool short_mapkind,
  			htab_t *refcount_set,
! 			enum gomp_map_vars_kind pragma_kind,
! 			struct gomp_offload_session *session)
  {
+   bool target_p = pragma_kind & GOMP_MAP_VARS_TARGET;
+   assert (/* SESSION must be present iff doing target offload.  */
+ 	  !!session == target_p);
    size_t i, tgt_align, tgt_size, not_found_cnt = 0;
    bool has_firstprivate = false;
    bool has_always_ptrset = false;
*************** gomp_map_vars_internal (struct gomp_devi
*** 1206,1245 ****
      {
        tgt->tgt_start = 0;
        tgt->tgt_end = 0;
        return tgt;
      }
  
    tgt_align = sizeof (void *);
    tgt_size = 0;
    cbuf.chunks = NULL;
    cbuf.chunk_cnt = -1;
    cbuf.use_cnt = 0;
    cbuf.buf = NULL;
!   if (mapnum > 1 || (pragma_kind & GOMP_MAP_VARS_TARGET))
      {
        size_t chunks_size = (mapnum + 1) * sizeof (struct gomp_coalesce_chunk);
        cbuf.chunks = (struct gomp_coalesce_chunk *) gomp_alloca (chunks_size);
        cbuf.chunk_cnt = 0;
      }
!   if (pragma_kind & GOMP_MAP_VARS_TARGET)
      {
        size_t align = 4 * sizeof (void *);
        tgt_align = align;
!       tgt_size = mapnum * sizeof (void *);
        cbuf.chunk_cnt = 1;
        cbuf.use_cnt = 1 + (mapnum > 1);
        cbuf.chunks[0].start = 0;
        cbuf.chunks[0].end = tgt_size;
      }
  
-   gomp_mutex_lock (&devicep->lock);
-   if (devicep->state == GOMP_DEVICE_FINALIZED)
-     {
-       gomp_mutex_unlock (&devicep->lock);
-       free (tgt);
-       return NULL;
-     }
- 
    for (i = 0; i < mapnum; i++)
      {
        int kind = get_kind (short_mapkind, kinds, i);
--- 1257,1318 ----
      {
        tgt->tgt_start = 0;
        tgt->tgt_end = 0;
+       if (session)
+ 	/* We promise to always call either set_tvt or alloc_tvt.  */
+ 	devicep->session.set_tvt_func (session, NULL);
        return tgt;
      }
  
+   gomp_mutex_lock (&devicep->lock);
+   if (devicep->state == GOMP_DEVICE_FINALIZED)
+     {
+       gomp_mutex_unlock (&devicep->lock);
+       free (tgt);
+       return NULL;
+     }
+ 
+   /* Target variable table in host memory.  If we're doing target offloading,
+      we'll let the plugin attempt to allocate it..  */
+   void **host_tvt = NULL;
+   if (target_p && devicep->session.alloc_tvt_func)
+     {
+       host_tvt = (devicep->session.alloc_tvt_func
+ 		  (session, gomp_get_tvt_size (mapnum)));
+       assert ((((uintptr_t)host_tvt) % __BIGGEST_ALIGNMENT__) == 0);
+     }
+ 
+   /* True if we need to allocate the target var table, i.e. when doing
+      offloading and when we fail to allocate it above.  */
+   bool need_tvt_alloc = !host_tvt && target_p;
+ 
+   /* Initialize size tracking variables.  */
    tgt_align = sizeof (void *);
    tgt_size = 0;
+ 
+   /* Prepare coalesce buffer.  */
    cbuf.chunks = NULL;
    cbuf.chunk_cnt = -1;
    cbuf.use_cnt = 0;
    cbuf.buf = NULL;
!   if (mapnum > 1 || !host_tvt)
      {
        size_t chunks_size = (mapnum + 1) * sizeof (struct gomp_coalesce_chunk);
        cbuf.chunks = (struct gomp_coalesce_chunk *) gomp_alloca (chunks_size);
        cbuf.chunk_cnt = 0;
      }
! 
!   if (need_tvt_alloc)
      {
+       /* Prepare for allocating the target variable table.  */
        size_t align = 4 * sizeof (void *);
        tgt_align = align;
!       tgt_size = gomp_get_tvt_size (mapnum);
        cbuf.chunk_cnt = 1;
        cbuf.use_cnt = 1 + (mapnum > 1);
        cbuf.chunks[0].start = 0;
        cbuf.chunks[0].end = tgt_size;
      }
  
    for (i = 0; i < mapnum; i++)
      {
        int kind = get_kind (short_mapkind, kinds, i);
*************** gomp_map_vars_internal (struct gomp_devi
*** 1496,1502 ****
        tgt->tgt_start = (uintptr_t) tgt->to_free;
        tgt->tgt_end = tgt->tgt_start + sizes[0];
      }
!   else if (not_found_cnt || (pragma_kind & GOMP_MAP_VARS_TARGET))
      {
        /* Allocate tgt_align aligned tgt_size block of memory.  */
        /* FIXME: Perhaps change interface to allocate properly aligned
--- 1569,1575 ----
        tgt->tgt_start = (uintptr_t) tgt->to_free;
        tgt->tgt_end = tgt->tgt_start + sizes[0];
      }
!   else if (not_found_cnt || need_tvt_alloc || has_firstprivate)
      {
        /* Allocate tgt_align aligned tgt_size block of memory.  */
        /* FIXME: Perhaps change interface to allocate properly aligned
*************** gomp_map_vars_internal (struct gomp_devi
*** 1534,1541 ****
      }
  
    tgt_size = 0;
!   if (pragma_kind & GOMP_MAP_VARS_TARGET)
!     tgt_size = mapnum * sizeof (void *);
  
    tgt->array = NULL;
    if (not_found_cnt || has_firstprivate || has_always_ptrset)
--- 1607,1614 ----
      }
  
    tgt_size = 0;
!   if (need_tvt_alloc)
!     tgt_size = gomp_get_tvt_size (mapnum);
  
    tgt->array = NULL;
    if (not_found_cnt || has_firstprivate || has_always_ptrset)
*************** gomp_map_vars_internal (struct gomp_devi
*** 2068,2074 ****
  	  }
      }
  
!   if (pragma_kind & GOMP_MAP_VARS_TARGET)
      {
        /* The target variables table is constructed with maps using iterators
  	 unexpanded. Now that the iterator maps are expanded, we will need to
--- 2141,2147 ----
  	  }
      }
  
!   if (target_p)
      {
        /* The target variables table is constructed with maps using iterators
  	 unexpanded. Now that the iterator maps are expanded, we will need to
*************** gomp_map_vars_internal (struct gomp_devi
*** 2080,2091 ****
  	if (!iterator_count || iterator_count[i] <= 1)
  	  {
  	    cur_node.tgt_offset = gomp_map_val (tgt, hostaddrs, i);
! 	    gomp_copy_host2dev (devicep, aq,
! 				(void *) (tgt->tgt_start + map_num * sizeof (void *)),
! 				(void *) &cur_node.tgt_offset, sizeof (void *),
! 				true, cbufp);
  	    map_num++;
  	  }
      }
  
    if (cbufp)
--- 2153,2176 ----
  	if (!iterator_count || iterator_count[i] <= 1)
  	  {
  	    cur_node.tgt_offset = gomp_map_val (tgt, hostaddrs, i);
! 	    if (host_tvt)
! 	      /* In this case, it's on the host.  */
! 	      memcpy (&host_tvt[map_num], &cur_node.tgt_offset,
! 		      sizeof (void *));
! 	    else
! 	      /* Otherwise, the table is on the device.  */
! 	      gomp_copy_host2dev (devicep, aq,
! 				  (void *) (tgt->tgt_start + map_num * sizeof (void *)),
! 				  (void *) &cur_node.tgt_offset, sizeof (void *),
! 				  true, cbufp);
  	    map_num++;
  	  }
+ 
+       if (!host_tvt)
+ 	/* The call to GOMP_OFFLOAD_session_allocate_target_var_table failed,
+ 	   so we must inform the session about the target var table we
+ 	   allocated.  */
+ 	devicep->session.set_tvt_func (session, (void **) tgt->tgt_start);
      }
  
    if (cbufp)
*************** static struct target_mem_desc *
*** 2133,2139 ****
  gomp_map_vars (struct gomp_device_descr *devicep, size_t mapnum,
  	       void **hostaddrs, void **devaddrs, size_t *sizes, void *kinds,
  	       bool short_mapkind, htab_t *refcount_set,
! 	       enum gomp_map_vars_kind pragma_kind)
  {
    /* This management of a local refcount_set is for convenience of callers
       who do not share a refcount_set over multiple map/unmap uses.  */
--- 2218,2225 ----
  gomp_map_vars (struct gomp_device_descr *devicep, size_t mapnum,
  	       void **hostaddrs, void **devaddrs, size_t *sizes, void *kinds,
  	       bool short_mapkind, htab_t *refcount_set,
! 	       enum gomp_map_vars_kind pragma_kind,
! 	       struct gomp_offload_session *session)
  {
    /* This management of a local refcount_set is for convenience of callers
       who do not share a refcount_set over multiple map/unmap uses.  */
*************** gomp_map_vars (struct gomp_device_descr
*** 2147,2153 ****
    struct target_mem_desc *tgt;
    tgt = gomp_map_vars_internal (devicep, NULL, mapnum, hostaddrs, devaddrs,
  				sizes, kinds, short_mapkind, refcount_set,
! 				pragma_kind);
    if (local_refcount_set)
      htab_free (local_refcount_set);
  
--- 2233,2239 ----
    struct target_mem_desc *tgt;
    tgt = gomp_map_vars_internal (devicep, NULL, mapnum, hostaddrs, devaddrs,
  				sizes, kinds, short_mapkind, refcount_set,
! 				pragma_kind, session);
    if (local_refcount_set)
      htab_free (local_refcount_set);
  
*************** goacc_map_vars (struct gomp_device_descr
*** 2159,2169 ****
  		struct goacc_asyncqueue *aq, size_t mapnum,
  		void **hostaddrs, void **devaddrs, size_t *sizes,
  		void *kinds, bool short_mapkind,
! 		enum gomp_map_vars_kind pragma_kind)
  {
    return gomp_map_vars_internal (devicep, aq, mapnum, hostaddrs, devaddrs,
  				 sizes, kinds, short_mapkind, NULL,
! 				 GOMP_MAP_VARS_OPENACC | pragma_kind);
  }
  
  static void
--- 2245,2257 ----
  		struct goacc_asyncqueue *aq, size_t mapnum,
  		void **hostaddrs, void **devaddrs, size_t *sizes,
  		void *kinds, bool short_mapkind,
! 		enum gomp_map_vars_kind pragma_kind,
! 		struct gomp_offload_session *session)
  {
    return gomp_map_vars_internal (devicep, aq, mapnum, hostaddrs, devaddrs,
  				 sizes, kinds, short_mapkind, NULL,
! 				 GOMP_MAP_VARS_OPENACC | pragma_kind,
! 				 session);
  }
  
  static void
*************** GOMP_target (int device, void (*fn) (voi
*** 3200,3211 ****
        || !(fn_addr = gomp_get_target_fn_addr (devicep, fn)))
      return gomp_target_fallback (fn, hostaddrs, devicep, NULL);
  
    htab_t refcount_set = htab_create (mapnum);
    struct target_mem_desc *tgt_vars
      = gomp_map_vars (devicep, mapnum, hostaddrs, NULL, sizes, kinds, false,
! 		     &refcount_set, GOMP_MAP_VARS_TARGET);
!   devicep->run_func (devicep->target_id, fn_addr, (void *) tgt_vars->tgt_start,
! 		     NULL);
    htab_clear (refcount_set);
    gomp_unmap_vars (tgt_vars, true, &refcount_set);
    htab_free (refcount_set);
--- 3288,3301 ----
        || !(fn_addr = gomp_get_target_fn_addr (devicep, fn)))
      return gomp_target_fallback (fn, hostaddrs, devicep, NULL);
  
+   struct gomp_offload_session *session
+     = gomp_offload_session_new (devicep, gomp_alloca);
+ 
    htab_t refcount_set = htab_create (mapnum);
    struct target_mem_desc *tgt_vars
      = gomp_map_vars (devicep, mapnum, hostaddrs, NULL, sizes, kinds, false,
! 		     &refcount_set, GOMP_MAP_VARS_TARGET, session);
!   devicep->run_func (session, fn_addr, NULL);
    htab_clear (refcount_set);
    gomp_unmap_vars (tgt_vars, true, &refcount_set);
    htab_free (refcount_set);
*************** GOMP_target_ext (int device, void (*fn)
*** 3524,3529 ****
--- 3614,3622 ----
    struct target_mem_desc *tgt_vars;
    htab_t refcount_set = NULL;
  
+   struct gomp_offload_session *session
+     = gomp_offload_session_new (devicep, gomp_alloca);
+ 
    if (devicep->capabilities & GOMP_OFFLOAD_CAP_SHARED_MEM)
      {
        if (!fpc_done)
*************** GOMP_target_ext (int device, void (*fn)
*** 3538,3553 ****
  	    }
  	}
        tgt_vars = NULL;
      }
    else
      {
        refcount_set = htab_create (mapnum);
        tgt_vars = gomp_map_vars (devicep, mapnum, hostaddrs, NULL, sizes, kinds,
! 				true, &refcount_set, GOMP_MAP_VARS_TARGET);
      }
!   devicep->run_func (devicep->target_id, fn_addr,
! 		     tgt_vars ? (void *) tgt_vars->tgt_start : hostaddrs,
! 		     new_args);
    if (tgt_vars)
      {
        htab_clear (refcount_set);
--- 3631,3646 ----
  	    }
  	}
        tgt_vars = NULL;
+       devicep->session.set_tvt_func (session, hostaddrs);
      }
    else
      {
        refcount_set = htab_create (mapnum);
        tgt_vars = gomp_map_vars (devicep, mapnum, hostaddrs, NULL, sizes, kinds,
! 				true, &refcount_set, GOMP_MAP_VARS_TARGET,
! 				session);
      }
!   devicep->run_func (session, fn_addr, new_args);
    if (tgt_vars)
      {
        htab_clear (refcount_set);
*************** gomp_target_data_fallback (struct gomp_d
*** 4146,4152 ****
           would get out of sync.  */
        struct target_mem_desc *tgt
  	= gomp_map_vars (NULL, 0, NULL, NULL, NULL, NULL, false,
! 			 NULL, GOMP_MAP_VARS_DATA);
        tgt->prev = icv->target_data;
        icv->target_data = tgt;
      }
--- 4239,4245 ----
           would get out of sync.  */
        struct target_mem_desc *tgt
  	= gomp_map_vars (NULL, 0, NULL, NULL, NULL, NULL, false,
! 			 NULL, GOMP_MAP_VARS_DATA, NULL);
        tgt->prev = icv->target_data;
        icv->target_data = tgt;
      }
*************** GOMP_target_data (int device, const void
*** 4165,4171 ****
  
    struct target_mem_desc *tgt
      = gomp_map_vars (devicep, mapnum, hostaddrs, NULL, sizes, kinds, false,
! 		     NULL, GOMP_MAP_VARS_DATA);
    struct gomp_task_icv *icv = gomp_icv (true);
    tgt->prev = icv->target_data;
    icv->target_data = tgt;
--- 4258,4264 ----
  
    struct target_mem_desc *tgt
      = gomp_map_vars (devicep, mapnum, hostaddrs, NULL, sizes, kinds, false,
! 		     NULL, GOMP_MAP_VARS_DATA, NULL);
    struct gomp_task_icv *icv = gomp_icv (true);
    tgt->prev = icv->target_data;
    icv->target_data = tgt;
*************** GOMP_target_data_ext (int device, size_t
*** 4184,4190 ****
  
    struct target_mem_desc *tgt
      = gomp_map_vars (devicep, mapnum, hostaddrs, NULL, sizes, kinds, true,
! 		     NULL, GOMP_MAP_VARS_DATA);
    struct gomp_task_icv *icv = gomp_icv (true);
    tgt->prev = icv->target_data;
    icv->target_data = tgt;
--- 4277,4283 ----
  
    struct target_mem_desc *tgt
      = gomp_map_vars (devicep, mapnum, hostaddrs, NULL, sizes, kinds, true,
! 		     NULL, GOMP_MAP_VARS_DATA, NULL);
    struct gomp_task_icv *icv = gomp_icv (true);
    tgt->prev = icv->target_data;
    icv->target_data = tgt;
*************** GOMP_target_enter_exit_data (int device,
*** 4509,4515 ****
  	{
  	  gomp_map_vars (devicep, sizes[i] + 1, &hostaddrs[i], NULL, &sizes[i],
  			 &kinds[i], true, &refcount_set,
! 			 GOMP_MAP_VARS_ENTER_DATA);
  	  i += sizes[i];
  	}
        else if ((kinds[i] & 0xff) == GOMP_MAP_TO_PSET)
--- 4602,4608 ----
  	{
  	  gomp_map_vars (devicep, sizes[i] + 1, &hostaddrs[i], NULL, &sizes[i],
  			 &kinds[i], true, &refcount_set,
! 			 GOMP_MAP_VARS_ENTER_DATA, NULL);
  	  i += sizes[i];
  	}
        else if ((kinds[i] & 0xff) == GOMP_MAP_TO_PSET)
*************** GOMP_target_enter_exit_data (int device,
*** 4520,4526 ****
  	      break;
  	  gomp_map_vars (devicep, j-i, &hostaddrs[i], NULL, &sizes[i],
  			 &kinds[i], true, &refcount_set,
! 			 GOMP_MAP_VARS_ENTER_DATA);
  	  i += j - i - 1;
  	}
        else if (i + 1 < mapnum
--- 4613,4619 ----
  	      break;
  	  gomp_map_vars (devicep, j-i, &hostaddrs[i], NULL, &sizes[i],
  			 &kinds[i], true, &refcount_set,
! 			 GOMP_MAP_VARS_ENTER_DATA, NULL);
  	  i += j - i - 1;
  	}
        else if (i + 1 < mapnum
*************** GOMP_target_enter_exit_data (int device,
*** 4531,4542 ****
  	  /* An attach operation must be processed together with the mapped
  	     base-pointer list item.  */
  	  gomp_map_vars (devicep, 2, &hostaddrs[i], NULL, &sizes[i], &kinds[i],
! 			 true, &refcount_set, GOMP_MAP_VARS_ENTER_DATA);
  	  i += 1;
  	}
        else
  	gomp_map_vars (devicep, 1, &hostaddrs[i], NULL, &sizes[i], &kinds[i],
! 		       true, &refcount_set, GOMP_MAP_VARS_ENTER_DATA);
    else
      gomp_exit_data (devicep, mapnum, hostaddrs, sizes, kinds, &refcount_set);
    htab_free (refcount_set);
--- 4624,4635 ----
  	  /* An attach operation must be processed together with the mapped
  	     base-pointer list item.  */
  	  gomp_map_vars (devicep, 2, &hostaddrs[i], NULL, &sizes[i], &kinds[i],
! 			 true, &refcount_set, GOMP_MAP_VARS_ENTER_DATA, NULL);
  	  i += 1;
  	}
        else
  	gomp_map_vars (devicep, 1, &hostaddrs[i], NULL, &sizes[i], &kinds[i],
! 		       true, &refcount_set, GOMP_MAP_VARS_ENTER_DATA, NULL);
    else
      gomp_exit_data (devicep, mapnum, hostaddrs, sizes, kinds, &refcount_set);
    htab_free (refcount_set);
*************** gomp_target_task_fn (void *data)
*** 4569,4592 ****
  	  return false;
  	}
  
!       void *actual_arguments;
        if (devicep->capabilities & GOMP_OFFLOAD_CAP_SHARED_MEM)
  	{
  	  ttask->tgt = NULL;
! 	  actual_arguments = ttask->hostaddrs;
  	}
        else
! 	{
! 	  ttask->tgt = gomp_map_vars (devicep, ttask->mapnum, ttask->hostaddrs,
! 				      NULL, ttask->sizes, ttask->kinds, true,
! 				      NULL, GOMP_MAP_VARS_TARGET);
! 	  actual_arguments = (void *) ttask->tgt->tgt_start;
! 	}
        ttask->state = GOMP_TARGET_TASK_READY_TO_RUN;
  
        assert (devicep->async_run_func);
!       devicep->async_run_func (devicep->target_id, fn_addr, actual_arguments,
! 			       ttask->args, (void *) ttask);
        return true;
      }
    else if (devicep == NULL
--- 4662,4684 ----
  	  return false;
  	}
  
!       struct gomp_offload_session *session = ttask->offload_session;
!       devicep->session.start_func (session, devicep->target_id);
! 
        if (devicep->capabilities & GOMP_OFFLOAD_CAP_SHARED_MEM)
  	{
  	  ttask->tgt = NULL;
! 	  devicep->session.set_tvt_func (session, ttask->hostaddrs);
  	}
        else
! 	ttask->tgt = gomp_map_vars (devicep, ttask->mapnum, ttask->hostaddrs,
! 				    NULL, ttask->sizes, ttask->kinds, true,
! 				    NULL, GOMP_MAP_VARS_TARGET,
! 				    session);
        ttask->state = GOMP_TARGET_TASK_READY_TO_RUN;
  
        assert (devicep->async_run_func);
!       devicep->async_run_func (session, fn_addr, ttask->args, (void *) ttask);
        return true;
      }
    else if (devicep == NULL
*************** gomp_target_task_fn (void *data)
*** 4608,4620 ****
  	    {
  	      gomp_map_vars (devicep, ttask->sizes[i] + 1, &ttask->hostaddrs[i],
  			     NULL, &ttask->sizes[i], &ttask->kinds[i], true,
! 			     &refcount_set, GOMP_MAP_VARS_ENTER_DATA);
  	      i += ttask->sizes[i];
  	    }
  	  else
  	    gomp_map_vars (devicep, 1, &ttask->hostaddrs[i], NULL, &ttask->sizes[i],
  			   &ttask->kinds[i], true, &refcount_set,
! 			   GOMP_MAP_VARS_ENTER_DATA);
        else
  	gomp_exit_data (devicep, ttask->mapnum, ttask->hostaddrs, ttask->sizes,
  			ttask->kinds, &refcount_set);
--- 4700,4712 ----
  	    {
  	      gomp_map_vars (devicep, ttask->sizes[i] + 1, &ttask->hostaddrs[i],
  			     NULL, &ttask->sizes[i], &ttask->kinds[i], true,
! 			     &refcount_set, GOMP_MAP_VARS_ENTER_DATA, NULL);
  	      i += ttask->sizes[i];
  	    }
  	  else
  	    gomp_map_vars (devicep, 1, &ttask->hostaddrs[i], NULL, &ttask->sizes[i],
  			   &ttask->kinds[i], true, &refcount_set,
! 			   GOMP_MAP_VARS_ENTER_DATA, NULL);
        else
  	gomp_exit_data (devicep, ttask->mapnum, ttask->hostaddrs, ttask->sizes,
  			ttask->kinds, &refcount_set);
*************** gomp_load_plugin_for_device (struct gomp
*** 6020,6027 ****
    /* Check if all required functions are available in the plugin and store
       their handlers.  None of the symbols can legitimately be NULL,
       so we don't need to check dlerror all the time.  */
! #define DLSYM(f)							\
!   if (!(device->f##_func = dlsym (plugin_handle, "GOMP_OFFLOAD_" #f)))	\
      goto dl_fail
    /* Similar, but missing functions are not an error.  Return false if
       failed, true otherwise.  */
--- 6112,6120 ----
    /* Check if all required functions are available in the plugin and store
       their handlers.  None of the symbols can legitimately be NULL,
       so we don't need to check dlerror all the time.  */
! #define DLSYM(f) DLSYM2(f, f)
! #define DLSYM2(f, n)							\
!   if (!(device->f##_func = dlsym (plugin_handle, "GOMP_OFFLOAD_" #n)))	\
      goto dl_fail
    /* Similar, but missing functions are not an error.  Return false if
       failed, true otherwise.  */
*************** gomp_load_plugin_for_device (struct gomp
*** 6065,6072 ****
--- 6158,6173 ----
      }
  
    device->capabilities = device->get_caps_func ();
+   device->session.size = 0;
    if (device->capabilities & GOMP_OFFLOAD_CAP_OPENMP_400)
      {
+       __typeof (GOMP_OFFLOAD_session_size) *size_func
+ 	= dlsym (plugin_handle, "GOMP_OFFLOAD_session_size");
+       device->session.size = size_func ();
+       DLSYM2 (session.start, session_start);
+       DLSYM_OPT (session.alloc_tvt, session_allocate_target_var_table);
+       DLSYM2 (session.set_tvt, session_set_target_var_table);
+ 
        DLSYM (run);
        DLSYM_OPT (async_run, async_run);
        DLSYM_OPT (can_run, can_run);
*************** gomp_load_plugin_for_device (struct gomp
*** 6114,6119 ****
--- 6215,6221 ----
  	}
      }
  #undef DLSYM
+ #undef DLSYM2
  #undef DLSYM_OPT
  
    return 1;
diff -Nrcpad gcc-17-20260531/libgomp/task.c gcc-17-20260607/libgomp/task.c
*** gcc-17-20260531/libgomp/task.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libgomp/task.c	Sun Jun  7 22:32:15 2026
*************** gomp_create_target_task (struct gomp_dev
*** 936,947 ****
  	}
      }
  
!   task = gomp_malloc (sizeof (*task) + depend_size
! 		      + sizeof (*ttask)
! 		      + args_cnt * sizeof (void *)
! 		      + mapnum * (sizeof (void *) + sizeof (size_t)
! 				  + sizeof (unsigned short))
! 		      + tgt_size);
    gomp_init_task (task, parent, gomp_icv (false));
    task->priority = 0;
    task->kind = GOMP_TASK_WAITING;
--- 936,960 ----
  	}
      }
  
!   size_t task_alloc_size = (sizeof (*task) + depend_size
! 		       + sizeof (*ttask)
! 		       + args_cnt * sizeof (void *)
! 		       + mapnum * (sizeof (void *) + sizeof (size_t)
! 				   + sizeof (unsigned short))
! 		       + tgt_size);
!   size_t session_start_offset = 0;
!   if (devicep && devicep->session.size)
!     {
!       /* gomp_malloc always aligns to __BIGGEST_ALIGNMENT__, so, we can just
! 	 round up the size to preserve that alignment...  */
!       size_t align = __BIGGEST_ALIGNMENT__ - 1;
!       task_alloc_size = (task_alloc_size + align) & ~align;
!       session_start_offset = task_alloc_size;
! 
!       /* ... and reserve enough room.  */
!       task_alloc_size += devicep->session.size;
!     }
!   task = gomp_malloc (task_alloc_size);
    gomp_init_task (task, parent, gomp_icv (false));
    task->priority = 0;
    task->kind = GOMP_TASK_WAITING;
*************** gomp_create_target_task (struct gomp_dev
*** 951,956 ****
--- 964,977 ----
    ttask->devicep = devicep;
    ttask->fn = fn;
    ttask->mapnum = mapnum;
+ 
+   ttask->offload_session = NULL;
+   if (session_start_offset)
+     {
+       uintptr_t session_ptr = (uintptr_t) task + session_start_offset;
+       ttask->offload_session = (void *) session_ptr;
+     }
+ 
    memcpy (ttask->hostaddrs, hostaddrs, mapnum * sizeof (void *));
    if (args_cnt)
      {
diff -Nrcpad gcc-17-20260531/libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-no-tvt-alloc.c gcc-17-20260607/libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-no-tvt-alloc.c
*** gcc-17-20260531/libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-no-tvt-alloc.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-no-tvt-alloc.c	Sun Jun  7 22:32:15 2026
***************
*** 0 ****
--- 1,51 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target offload_device_gcn } */
+ #include <assert.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ 
+ int
+ main ()
+ {
+   setenv ("GCN_DEBUG", "1", true);
+ #ifdef INHIBIT_KERNARGS_MERGE
+   /* See gcn-kernel-launch-tvt-alloc.c  */
+   setenv ("GCN_INHIBIT_KERNARGS_TVT_MERGE", "1", true);
+ #endif
+ 
+   int i[1] = { 0 };
+ 
+ #pragma omp target data map(tofrom: i[0:1])
+   {
+     fprintf (stderr, "================\n");
+ 
+ #pragma omp target
+     { i[0] = 1; }
+   }
+ 
+   assert (i[0] == 1);
+ }
+ 
+ /* Here, we want to ensure that we have no allocations after the point
+    delimited by ===...
+ 
+    Past that point, the only data to map onto the device is the target
+    variable table, which should be passed as kernel arguments.  The GCN plugin
+    currently does not log allocating those.  We rely on that here.
+ 
+    So, dg-output lets us match the entire output with a regex.  Multiple
+    dg-output invocations will have their regexes concatenated in order.  The
+    following is that regex, broken down by function:
+ 
+    Ignore ===... marker and everything before it.
+      { dg-output {^.*================[\r\n]+} }
+    Then, each further line is either...
+      { dg-output {((} }
+    ... a line not starting with "GCN debug: "...
+      { dg-output {(?!GCN debug:)[^\r\n]+} }
+    ... or a "GCN debug: ..." line that is not an allocation:
+      { dg-output {|GCN debug: (?!Allocating )[^\r\n]*} }
+    ... followed by a line terminator, of course.
+      { dg-output {)[\r\n]+)*} }
+    There should be nothing left.
+      { dg-output {$} }  */
diff -Nrcpad gcc-17-20260531/libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-tvt-alloc.c gcc-17-20260607/libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-tvt-alloc.c
*** gcc-17-20260531/libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-tvt-alloc.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libgomp/testsuite/libgomp.c-c++-common/gcn-kernel-launch-tvt-alloc.c	Sun Jun  7 22:32:15 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target offload_device_gcn } */
+ 
+ /* Test that the no-merge case still works.  */
+ 
+ #define INHIBIT_KERNARGS_MERGE
+ #include "./gcn-kernel-launch-no-tvt-alloc.c"
+ 
+ /* See commentary in <gcn-kernel-launch-no-tvt-alloc.c>.
+ 
+    Ignore ===... marker and everything before it.
+      { dg-output {^.*================[\r\n]+} }
+    We expect at least "GCN debug: Allocating \d+ bytes..."
+      { dg-output {.*[\r\n]+GCN debug: Allocating \d+ bytes.*} }
+    There should be nothing left.
+      { dg-output {$} }  */
diff -Nrcpad gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-map-iterators-1.f90 gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-map-iterators-1.f90
*** gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-map-iterators-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-map-iterators-1.f90	Sun Jun  7 22:32:15 2026
***************
*** 0 ****
--- 1,45 ----
+ ! { dg-do run }
+ 
+ ! Test transfer of dynamically-allocated arrays to target using map
+ ! iterators.
+ 
+ program test
+   implicit none
+ 
+   integer, parameter :: DIM1 = 8
+   integer, parameter :: DIM2 = 15
+ 
+   type :: array_ptr
+     integer, pointer :: arr(:)
+   end type
+ 
+   type (array_ptr) :: x(DIM1)
+   integer :: expected, sum, i, j
+ 
+   expected = mkarray ()
+ 
+   !$omp target map(iterator(i=1:DIM1), to: x(i)%arr(:)) map(from: sum)
+     sum = 0
+     do i = 1, DIM1
+       do j = 1, DIM2
+ 	sum = sum + x(i)%arr(j)
+       end do
+     end do
+   !$omp end target
+ 
+   if (sum .ne. expected) stop 1
+ contains
+   integer function mkarray ()
+     integer :: exp = 0
+ 
+     do i = 1, DIM1
+       allocate (x(i)%arr(DIM2))
+       do j = 1, DIM2
+         x(i)%arr(j) = i * j
+ 	exp = exp + x(i)%arr(j)
+       end do
+     end do
+ 
+     mkarray = exp
+   end function
+ end program
diff -Nrcpad gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-map-iterators-2.f90 gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-map-iterators-2.f90
*** gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-map-iterators-2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-map-iterators-2.f90	Sun Jun  7 22:32:15 2026
***************
*** 0 ****
--- 1,45 ----
+ ! { dg-do run }
+ 
+ ! Test transfer of dynamically-allocated arrays from target using map
+ ! iterators.
+ 
+ program test
+   implicit none
+ 
+   integer, parameter :: DIM1 = 8
+   integer, parameter :: DIM2 = 15
+ 
+   type :: array_ptr
+     integer, pointer :: arr(:)
+   end type
+ 
+   type (array_ptr) :: x(DIM1)
+   integer :: expected, sum, i, j
+ 
+   call mkarray
+ 
+   !$omp target map(iterator(i=1:DIM1), from: x(i)%arr(:)) map(from: expected)
+     expected = 0
+     do i = 1, DIM1
+       do j = 1, DIM2
+ 	x(i)%arr(j) = (i+1) * (j+1)
+ 	expected = expected + x(i)%arr(j)
+       end do
+     end do
+   !$omp end target
+ 
+   sum = 0
+   do i = 1, DIM1
+     do j = 1, DIM2
+       sum = sum + x(i)%arr(j)
+     end do
+   end do
+ 
+   if (sum .ne. expected) stop 1
+ contains
+   subroutine mkarray
+     do i = 1, DIM1
+       allocate (x(i)%arr(DIM2))
+     end do
+   end subroutine
+ end program
diff -Nrcpad gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-map-iterators-3.f90 gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-map-iterators-3.f90
*** gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-map-iterators-3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-map-iterators-3.f90	Sun Jun  7 22:32:15 2026
***************
*** 0 ****
--- 1,50 ----
+ ! { dg-do run }
+ 
+ ! Test transfer of dynamically-allocated arrays to target using map
+ ! iterators, with multiple iterators and function calls in the iterator
+ ! expression.
+ 
+ program test
+   implicit none
+ 
+   integer, parameter :: DIM1 = 16
+   integer, parameter :: DIM2 = 4
+ 
+   type :: array_ptr
+     integer, pointer :: arr(:)
+   end type
+ 
+   type (array_ptr) :: x(DIM1), y(DIM1)
+   integer :: expected, sum, i, j, k
+ 
+   expected = mkarrays ()
+ 
+   !$omp target map(iterator(i=0:DIM1/4-1, j=0:3), to: x(i * 4 + j + 1)%arr(:)) &
+   !$omp        map(iterator(k=1:DIM1), to: y(k)%arr(:)) &
+   !$omp        map(from: sum)
+     sum = 0
+     do i = 1, DIM1
+       do j = 1, DIM2
+ 	sum = sum + x(i)%arr(j) * y(i)%arr(j)
+       end do
+     end do
+   !$omp end target
+ 
+   if (sum .ne. expected) stop 1
+ contains
+   integer function mkarrays ()
+     integer :: exp = 0
+ 
+     do i = 1, DIM1
+       allocate (x(i)%arr(DIM2))
+       allocate (y(i)%arr(DIM2))
+       do j = 1, DIM2
+ 	x(i)%arr(j) = i * j
+ 	y(i)%arr(j) = i + j
+ 	exp = exp + x(i)%arr(j) * y(i)%arr(j)
+       end do
+     end do
+ 
+     mkarrays = exp
+   end function
+ end program
diff -Nrcpad gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-update-iterators-1.f90 gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-update-iterators-1.f90
*** gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-update-iterators-1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-update-iterators-1.f90	Sun Jun  7 22:32:15 2026
***************
*** 0 ****
--- 1,68 ----
+ ! { dg-do run }
+ 
+ ! Test target enter data and target update to the target using map
+ ! iterators.
+ 
+ program test
+   integer, parameter :: DIM1 = 8
+   integer, parameter :: DIM2 = 15
+ 
+   type :: array_ptr
+     integer, pointer :: arr(:)
+   end type
+ 
+   type (array_ptr) :: x(DIM1)
+   integer :: expected, sum, i, j
+ 
+   expected = mkarray (x)
+ 
+   !$omp target enter data map(to: x)
+   !$omp target enter data map(iterator(i=1:DIM1), to: x(i)%arr(:))
+   !$omp target map(from: sum)
+     sum = 0
+     do i = 1, DIM1
+       do j = 1, DIM2
+ 	sum = sum + x(i)%arr(j)
+       end do
+     end do
+   !$omp end target
+ 
+   print *, sum, expected
+   if (sum .ne. expected) stop 1
+ 
+   expected = 0
+   do i = 1, DIM1
+     do j = 1, DIM2
+       x(i)%arr(j) = x(i)%arr(j) * i * j
+       expected = expected + x(i)%arr(j)
+     end do
+   end do
+ 
+   !$omp target update to(iterator(i=1:DIM1): x(i)%arr(:))
+ 
+   !$omp target map(from: sum)
+     sum = 0
+     do i = 1, DIM1
+       do j = 1, DIM2
+ 	sum = sum + x(i)%arr(j)
+       end do
+     end do
+   !$omp end target
+ 
+   if (sum .ne. expected) stop 2
+ contains
+   integer function mkarray (x)
+     type (array_ptr), intent(inout) :: x(DIM1)
+     integer :: exp = 0
+ 
+     do i = 1, DIM1
+       allocate (x(i)%arr(DIM2))
+       do j = 1, DIM2
+ 	x(i)%arr(j) = i * j
+ 	exp = exp + x(i)%arr(j)
+       end do
+     end do
+ 
+     mkarray = exp
+   end function
+ end program
diff -Nrcpad gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-update-iterators-2.f90 gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-update-iterators-2.f90
*** gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-update-iterators-2.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-update-iterators-2.f90	Sun Jun  7 22:32:15 2026
***************
*** 0 ****
--- 1,63 ----
+ ! { dg-do run }
+ ! { dg-require-effective-target offload_device_nonshared_as }
+ 
+ ! Test target enter data and target update from the target using map
+ ! iterators.
+ 
+ program test
+   integer, parameter :: DIM1 = 8
+   integer, parameter :: DIM2 = 15
+ 
+   type :: array_ptr
+     integer, pointer :: arr(:)
+   end type
+ 
+   type (array_ptr) :: x(DIM1)
+   integer :: sum, expected
+ 
+   call mkarray (x)
+ 
+   !$omp target enter data map(to: x(:DIM1))
+   !$omp target enter data map(iterator(i=1:DIM1), to: x(i)%arr(:))
+   !$omp target map(from: expected)
+     expected = 0
+     do i = 1, DIM1
+       do j = 1, DIM2
+ 	x(i)%arr(j) = (i + 1) * (j + 2)
+ 	expected = expected + x(i)%arr(j)
+       end do
+     end do
+   !$omp end target
+ 
+   ! Host copy of x should remain unchanged.
+   sum = 0
+   do i = 1, DIM1
+     do j = 1, DIM2
+       sum = sum + x(i)%arr(j)
+     end do
+   end do
+   if (sum .ne. 0) stop 1
+ 
+   !$omp target update from(iterator(i=1:DIM1): x(i)%arr(:))
+ 
+   ! Host copy should now be updated.
+   sum = 0
+   do i = 1, DIM1
+     do j = 1, DIM2
+       sum = sum + x(i)%arr(j)
+     end do
+   end do
+ 
+   if (sum .ne. expected) stop 2
+ contains
+   subroutine mkarray (x)
+     type (array_ptr), intent(inout) :: x(DIM1)
+ 
+     do i = 1, DIM1
+       allocate (x(i)%arr(DIM2))
+       do j = 1, DIM2
+ 	x(i)%arr(j) = 0
+       end do
+     end do
+   end subroutine
+ end program
diff -Nrcpad gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-update-iterators-3.f90 gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-update-iterators-3.f90
*** gcc-17-20260531/libgomp/testsuite/libgomp.fortran/target-update-iterators-3.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libgomp/testsuite/libgomp.fortran/target-update-iterators-3.f90	Sun Jun  7 22:32:15 2026
***************
*** 0 ****
--- 1,78 ----
+ ! { dg-do run }
+ ! { dg-require-effective-target offload_device_nonshared_as }
+ 
+ ! Test target enter data and target update to the target using map
+ ! iterators with a function.
+ 
+ program test
+   implicit none
+ 
+   integer, parameter :: DIM1 = 8
+   integer, parameter :: DIM2 = 15
+ 
+   type :: array_ptr
+     integer, pointer :: arr(:)
+   end type
+ 
+   type (array_ptr) :: x(DIM1)
+   integer :: x_new(DIM1, DIM2)
+   integer :: expected, sum, i, j
+ 
+   call mkarray (x)
+ 
+   !$omp target enter data map(to: x(:DIM1))
+   !$omp target enter data map(iterator(i=1:DIM1), to: x(i)%arr(:))
+ 
+   ! Update x on host.
+   do i = 1, DIM1
+     do j = 1, DIM2
+       x_new(i, j) = x(i)%arr(j)
+       x(i)%arr(j) = (i + 1) * (j + 2);
+     end do
+   end do
+ 
+   ! Update a subset of x on target.
+   !$omp target update to(iterator(i=1:DIM1/2): x(f (i))%arr(:))
+ 
+   !$omp target map(from: sum)
+     sum = 0
+     do i = 1, DIM1
+       do j = 1, DIM2
+ 	sum = sum + x(i)%arr(j)
+       end do
+     end do
+   !$omp end target
+ 
+   ! Calculate expected value on host.
+   do i = 1, DIM1/2
+     do j = 1, DIM2
+       x_new(f (i), j) = x(f (i))%arr(j)
+     end do
+   end do
+ 
+   expected = 0
+   do i = 1, DIM1
+     do j = 1, DIM2
+       expected = expected + x_new(i, j)
+     end do
+   end do
+ 
+   if (sum .ne. expected) stop 1
+ contains
+   subroutine mkarray (x)
+     type (array_ptr), intent(inout) :: x(DIM1)
+ 
+     do i = 1, DIM1
+       allocate (x(i)%arr(DIM2))
+       do j = 1, DIM2
+ 	x(i)%arr(j) = i * j
+       end do
+     end do
+   end subroutine
+ 
+   integer function f (i)
+     integer, intent(in) :: i
+ 
+     f = i * 2
+   end function
+ end program
diff -Nrcpad gcc-17-20260531/libiberty/ChangeLog gcc-17-20260607/libiberty/ChangeLog
*** gcc-17-20260531/libiberty/ChangeLog	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libiberty/ChangeLog	Sun Jun  7 22:32:16 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* configure: Regenerate.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* simple-object-mach-o.c (simple_object_mach_o_write_segment): Reflow
diff -Nrcpad gcc-17-20260531/libiberty/configure gcc-17-20260607/libiberty/configure
*** gcc-17-20260531/libiberty/configure	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libiberty/configure	Sun Jun  7 22:32:16 2026
*************** _ACEOF
*** 6234,6240 ****
  
  
  
! # Check for presense of long long
  ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
  if test "x$ac_cv_type_long_long" = xyes; then :
  
--- 6234,6240 ----
  
  
  
! # Check for presence of long long
  ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default"
  if test "x$ac_cv_type_long_long" = xyes; then :
  
diff -Nrcpad gcc-17-20260531/libiberty/d-demangle.c gcc-17-20260607/libiberty/d-demangle.c
*** gcc-17-20260531/libiberty/d-demangle.c	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libiberty/d-demangle.c	Sun Jun  7 22:32:16 2026
*************** struct dlang_info
*** 175,182 ****
--- 175,207 ----
  {
    /* The string we are demangling.  */
    const char *s;
+ 
+   /* The options passed to the demangler.  */
+   int options;
+ 
    /* The index of the last back reference.  */
    int last_backref;
+ 
+   /* The total number of back referenced types, including nested back
+      referenced types.  This is reset to zero each time a back
+      reference is processed at the "top level" (i.e. not a nested back
+      reference).
+ 
+      Cases have been encountered where a back reference type includes
+      references to other back reference types, which include further
+      back references.  This was observed to a depth of 57.  If each
+      layer only references the layer before twice then the innermost
+      string will be duplicated 2^57 times!
+ 
+      We count the number of nested back references and compare this to
+      the recursion limit, even though this isn't strictly recursion.  */
+   int num_backrefs;
+ 
+   /* Track the depth of back references.  Depth 0 is considered the
+      top level.  When we encounter a back reference at this depth the
+      NUM_BACKREFS field is reset to 0.  At greater depths,
+      NUM_BACKREFS will be incremented.  */
+   int backref_depth;
  };
  
  /* Pass as the LEN to dlang_parse_template if symbol length is not known.  */
*************** dlang_type_backref (string *decl, const
*** 411,416 ****
--- 436,459 ----
    if (mangled - info->s >= info->last_backref)
      return NULL;
  
+   /* A back reference might point to a type that itself contains back
+      references, which might themselves contain back references.
+      There might not be recursion going on, but we can run into
+      problems of exponential growth caused by the inner type appearing
+      to be referenced 10s of millions of times.  */
+   if (info->backref_depth > 0)
+     {
+       if ((info->options & DMGL_NO_RECURSE_LIMIT) == 0
+ 	  && info->num_backrefs > DEMANGLE_RECURSION_LIMIT)
+ 	return NULL;
+ 
+       info->num_backrefs++;
+     }
+   else
+     info->num_backrefs = 0;
+ 
+   info->backref_depth++;
+ 
    int save_refpos = info->last_backref;
    info->last_backref = mangled - info->s;
  
*************** dlang_type_backref (string *decl, const
*** 424,429 ****
--- 467,473 ----
      backref = dlang_type (decl, backref, info);
  
    info->last_backref = save_refpos;
+   info->backref_depth--;
  
    if (backref == NULL)
      return NULL;
*************** dlang_parse_template (string *decl, cons
*** 1931,1947 ****
  /* Initialize the information structure we use to pass around information.  */
  static void
  dlang_demangle_init_info (const char *mangled, int last_backref,
! 			  struct dlang_info *info)
  {
    info->s = mangled;
    info->last_backref = last_backref;
  }
  
  /* Extract and demangle the symbol in MANGLED.  Returns the demangled
     signature on success or NULL on failure.  */
  
  char *
! dlang_demangle (const char *mangled, int option ATTRIBUTE_UNUSED)
  {
    string decl;
    char *demangled = NULL;
--- 1975,1994 ----
  /* Initialize the information structure we use to pass around information.  */
  static void
  dlang_demangle_init_info (const char *mangled, int last_backref,
! 			  int options, struct dlang_info *info)
  {
    info->s = mangled;
+   info->options = options;
    info->last_backref = last_backref;
+   info->num_backrefs = 0;
+   info->backref_depth = 0;
  }
  
  /* Extract and demangle the symbol in MANGLED.  Returns the demangled
     signature on success or NULL on failure.  */
  
  char *
! dlang_demangle (const char *mangled, int options)
  {
    string decl;
    char *demangled = NULL;
*************** dlang_demangle (const char *mangled, int
*** 1962,1968 ****
      {
        struct dlang_info info;
  
!       dlang_demangle_init_info (mangled, strlen (mangled), &info);
        mangled = dlang_parse_mangle (&decl, mangled, &info);
  
        /* Check that the entire symbol was successfully demangled.  */
--- 2009,2015 ----
      {
        struct dlang_info info;
  
!       dlang_demangle_init_info (mangled, strlen (mangled), options, &info);
        mangled = dlang_parse_mangle (&decl, mangled, &info);
  
        /* Check that the entire symbol was successfully demangled.  */
diff -Nrcpad gcc-17-20260531/libiberty/testsuite/d-demangle-expected gcc-17-20260607/libiberty/testsuite/d-demangle-expected
*** gcc-17-20260531/libiberty/testsuite/d-demangle-expected	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libiberty/testsuite/d-demangle-expected	Sun Jun  7 22:32:16 2026
*************** demangle.anonymous.foo
*** 1475,1477 ****
--- 1475,1489 ----
  --format=auto
  _D8demangle9anonymous03fooZ
  demangle.anonymous.foo
+ #
+ # This symbol was seen in the wild.  It has a pattern of back
+ # references that result in exponential growth, with the innermost
+ # type being referenced 10s of millions of times.  We use the
+ # demangler's recursion limit to place a hard cap on back reference
+ # usage, which causes the demangler to safely bail out before
+ # consuming an excessive amount of memory.  Trying to demangle this
+ # without the recursion limit in place will eventually cause the OOM
+ # killer to kick in.
+ --format=dlang
+  
+  
diff -Nrcpad gcc-17-20260531/libitm/ChangeLog gcc-17-20260607/libitm/ChangeLog
*** gcc-17-20260531/libitm/ChangeLog	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libitm/ChangeLog	Sun Jun  7 22:32:16 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/linux/futex_bits.h: Fix typo.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-17-20260531/libitm/config/linux/futex_bits.h gcc-17-20260607/libitm/config/linux/futex_bits.h
*** gcc-17-20260531/libitm/config/linux/futex_bits.h	Sun May 31 22:32:14 2026
--- gcc-17-20260607/libitm/config/linux/futex_bits.h	Sun Jun  7 22:32:16 2026
***************
*** 22,28 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! /* Provide target-independant access to the futex system call.  */
  
  /* Note for ARM:
     There are two styles of syscall, and in the eabi style the syscall
--- 22,28 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! /* Provide target-independent access to the futex system call.  */
  
  /* Note for ARM:
     There are two styles of syscall, and in the eabi style the syscall
diff -Nrcpad gcc-17-20260531/libsanitizer/ChangeLog gcc-17-20260607/libsanitizer/ChangeLog
*** gcc-17-20260531/libsanitizer/ChangeLog	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libsanitizer/ChangeLog	Sun Jun  7 22:32:16 2026
***************
*** 1,3 ****
--- 1,9 ----
+ 2026-06-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* sanitizer_common/sanitizer_platform_limits_solaris.cpp:
+ 	Cherry-pick llvm-project revision
+ 	0e92b557a78eddc7493ade4cfc0a3b6b93ee61cf.
+ 
  2026-04-29  Jakub Jelinek  <jakub@redhat.com>
  
  	* sanitizer_common/sanitizer_platform_limits_posix.cpp: Cherry picked
diff -Nrcpad gcc-17-20260531/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp gcc-17-20260607/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
*** gcc-17-20260531/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp	Sun Jun  7 22:32:16 2026
***************
*** 51,56 ****
--- 51,57 ----
  #include <sys/timeb.h>
  #include <sys/times.h>
  #include <sys/types.h>
+ #include <sys/ucontext.h>
  #include <sys/utsname.h>
  #include <termios.h>
  #include <time.h>
diff -Nrcpad gcc-17-20260531/libstdc++-v3/ChangeLog gcc-17-20260607/libstdc++-v3/ChangeLog
*** gcc-17-20260531/libstdc++-v3/ChangeLog	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/ChangeLog	Sun Jun  7 22:32:16 2026
***************
*** 1,3 ****
--- 1,172 ----
+ 2026-06-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/version.def: Define macros for hardened
+ 	preconditions.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/array: Define "want" macro for hardened
+ 	precondition macro.
+ 	* include/std/bitset: Likewise.
+ 	* include/std/deque: Likewise.
+ 	* include/std/expected: Likewise.
+ 	* include/std/forward_list: Likewise.
+ 	* include/std/inplace_vector: Likewise.
+ 	* include/std/iterator: Likewise.
+ 	* include/std/list: Likewise.
+ 	* include/std/memory: Likewise.
+ 	* include/std/optional: Likewise.
+ 	* include/std/ranges: Likewise.
+ 	* include/std/span: Likewise.
+ 	* include/std/stacktrace: Likewise.
+ 	* include/std/string: Likewise.
+ 	* include/std/string_view: Likewise.
+ 	* include/std/valarray: Likewise.
+ 	* include/std/vector: Likewise.
+ 	* testsuite/23_containers/array/tuple_interface/get_neg.cc:
+ 	Adjust dg-error line numbers.
+ 
+ 2026-06-03  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/version.def (hardened_mdspan): Define.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/mdspan (__cpp_lib_hardened_mdspan): Define.
+ 	(mdspan::operator[]): Replace __mdspan::__index_type_cast
+ 	with cast to __index_int_t, and inline negative value checks.
+ 
+ 2026-06-03  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/fs_path.h (path::string, path::generic_string):
+ 	Add deprecated attribute in C++26 via _GLIBCXX26_DEPRECATED_SUGGEST.
+ 	(path::display_string, path::native_encoded_string)
+ 	(path::generic_display_string, path::generic_native_encoded_string)
+ 	[__glibcxx_format_path >= 202506L]: Define.
+ 	* include/bits/version.def (format_path): Bump to 202506.
+ 	* include/bits/version.h: Regenerate.
+ 	* testsuite/util/testsuite_fs.h (__gnu_test::compare_paths):
+ 	Ignored deprecated declarations warning.
+ 	* testsuite/27_io/filesystem/filesystem_error/cons.cc:
+ 	Disable -Wdeprecated-declarations warning with pragmas.
+ 	* testsuite/27_io/filesystem/operations/canonical.cc: Likewise.
+ 	* testsuite/27_io/filesystem/operations/copy_file.cc: Likewise.
+ 	* testsuite/27_io/filesystem/path/concat/strings.cc: Likwise.
+ 	* testsuite/27_io/filesystem/path/itr/traversal.cc: Likewise.
+ 	* testsuite/27_io/filesystem/operations/temp_directory_path.cc:
+ 	Likewise.
+ 	* testsuite/27_io/filesystem/path/decompose/root_directory.cc:
+ 	Likewise.
+ 	* testsuite/27_io/filesystem/path/generic/generic_string.cc:
+ 	Likewise.
+ 	* testsuite/27_io/print/1.cc: Likewise.
+ 	* testsuite/27_io/print/2.cc: Likewise.
+ 	* testsuite/27_io/print/3.cc: Likewise.
+ 	* testsuite/27_io/filesystem/path/append/source.cc:
+ 	Add dg-warning for deprecated functions use.
+ 	* testsuite/27_io/filesystem/path/decompose/stem.cc: Likewise.
+ 	* testsuite/27_io/filesystem/path/native/string-char8_t.cc:
+ 	Likewise.
+ 	* testsuite/27_io/filesystem/path/generic/display_native_string.cc:
+ 	New test.
+ 	* testsuite/27_io/filesystem/path/native/display_native_string.cc:
+ 	New test.
+ 
+ 2026-06-02  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* include/bits/stl_queue.h: Add constexpr.
+ 	* testsuite/23_containers/priority_queue/constexpr.cc: New test.
+ 
+ 2026-06-02  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/random.h (__rand_uint128::operator bool):
+ 	(__rand_uint128::operator-=(const type& __r))
+ 	(__rand_uint128::operator-(type __l, const type& __r)):
+ 	Implement.
+ 	(__rand_uint128::operator/=(uint64_t __r))
+ 	(__rand_uint128::operator/(type __l, uint64_t __r)):
+ 	Define by converting to type.
+ 	(__rand_uint128::operator*=(const type& __r)): Remove
+ 	precondition and handle _M_hi != 0.
+ 
+ 2026-06-02  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/version.tpl: Fix typo.
+ 
+ 2026-06-02  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/format (__format::__write_escaped_ascii): Mark as
+ 	_GLIBCXX_CONSTEXPR_FORMAT and at compile time, reject strings
+ 	containing characters other than printable ASCII and standard
+ 	escapes.
+ 	* testsuite/std/format/debug.cc: Test basic_escapes and \0
+ 	at compile-time.
+ 	* testsuite/std/format/debug_nonunicode_neg.cc: New test.
+ 
+ 2026-06-02  Ivan Lazaric  <ivan.lazaric1@gmail.com>
+ 	    Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/version.def (constexpr_exceptions): Move before
+ 	format.
+ 	(constexpr_format): Define.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/format (_GLIBCXX_CONSTEXPR_FORMAT): Define and
+ 	apply to all of functions except __write_escaped_ascii and
+ 	__formatter_fp members.
+ 	(_GLIBCXX_CONSTEXPR_FORMAT_ERROR): Replace with
+ 	_GLIBCXX_CONSTEXPR_FORMAT.
+ 	(basic_format_string::basic_format_string(const _Tp&)):
+ 	Mark as noexcept.
+ 	(__format::__toupper_numeric): Define.
+ 	(__formatter_int::format): Use __format::__toupper_numeric
+ 	and replace __builtin_memcpy with ranges::copy.
+ 	(__formatter_fp::format): Use __format::__toupper_numeric.
+ 	(__formatter_ptr::format): Avoid reinterpret_cast for
+ 	null-pointer value to support std::nullptr_t formatting.
+ 	(__format::__do_vformat_to): Replace __builtin_memcpy with
+ 	ranges::copy.
+ 	(basic_format_parse_context::__check_dynamic_spec):
+ 	Skip checks if __args pointer is null.
+ 	* testsuite/std/format/arguments/args_neg.cc: Diagnostics change.
+ 	* testsuite/std/format/constexpr.cc: New test.
+ 	* testsuite/std/format/debug.cc: Test at compile-time in C++26
+ 	and update iteration limit for paddding tests.
+ 	* testsuite/std/format/tuple.cc: Likewise.
+ 	* testsuite/std/format/functions/format.cc: Test at compile-time
+ 	in C++26.
+ 	* testsuite/std/format/dynamic_format.cc: Likewise.
+ 	* testsuite/std/format/functions/format_to.cc: Likewise.
+ 	* testsuite/std/format/functions/size.cc: Likewise.
+ 	* testsuite/std/format/ranges/format_kind.cc: Likewise.
+ 	* testsuite/std/format/ranges/formatter.cc: Likewise.
+ 	* testsuite/std/format/ranges/sequence.cc: Likewise.
+ 	* testsuite/std/format/string.cc: Likewise.
+ 	* testsuite/std/time/format/data_not_present_neg.cc: Diagnostics
+ 	change.
+ 
+ 2026-06-02  Ivan Lazaric  <ivan.lazaric1@gmail.com>
+ 	    Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/version.def (constexpr_string): Bump to 202511.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/bits/basic_string.h (std::to_string, std::to_wstring)
+ 	[__glibcxx_constexpr_string >= 202511L]: Mark as constexpr.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc:
+ 	New test.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc:
+ 	New test.
+ 	* testsuite/21_strings/basic_string/cons/char/constexpr.cc: Update
+ 	__cpp_lib_constexpr_string check.
+ 	* testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc: Likewise.
+ 	* testsuite/21_strings/basic_string/version.cc: Add check for value of
+ 	__cpp_lib_constexpr_string in C++26.
+ 
+ 2026-06-01  Dhruv Chawla  <dhruvc@nvidia.com>
+ 
+ 	* config/os/vxworks/os_defines.h: Fix typos.
+ 
+ 2026-06-01  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/random.tcc
+ 	(piecewise_constant_distribution:::param_type::param_type):
+ 	Replace * with + in __fw argument.
+ 
  2026-05-30  Dhruv Chawla  <dhruvc@nvidia.com>
  
  	* include/bits/stl_algo.h: Reflow long line.
diff -Nrcpad gcc-17-20260531/libstdc++-v3/config/os/vxworks/os_defines.h gcc-17-20260607/libstdc++-v3/config/os/vxworks/os_defines.h
*** gcc-17-20260531/libstdc++-v3/config/os/vxworks/os_defines.h	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/config/os/vxworks/os_defines.h	Sun Jun  7 22:32:16 2026
***************
*** 54,60 ****
  // are going to include for libstdc++ have a few related intrinsic
  // assumptions.  We control our own configuration here to best integrate with
  // this environment: use C99 math headers, do not use the FP macros for
! // dynamic cast by default (overriden for RTPs below) and arrange to disable
  // the system TR1 declarations as we'll provide ours.
  
  #if _VXWORKS_MAJOR_GE(7)
--- 54,60 ----
  // are going to include for libstdc++ have a few related intrinsic
  // assumptions.  We control our own configuration here to best integrate with
  // this environment: use C99 math headers, do not use the FP macros for
! // dynamic cast by default (overridden for RTPs below) and arrange to disable
  // the system TR1 declarations as we'll provide ours.
  
  #if _VXWORKS_MAJOR_GE(7)
***************
*** 90,96 ****
  
  #endif // _VXWORKS_MAJOR >= 7
  
! // The min/max "functions" may be refered to with a namespace prefix.
  // Prevent possible redefinitions as macros from VxWorks headers.
  #undef NOMINMAX
  #define NOMINMAX 1
--- 90,96 ----
  
  #endif // _VXWORKS_MAJOR >= 7
  
! // The min/max "functions" may be referred to with a namespace prefix.
  // Prevent possible redefinitions as macros from VxWorks headers.
  #undef NOMINMAX
  #define NOMINMAX 1
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/bits/basic_string.h gcc-17-20260607/libstdc++-v3/include/bits/basic_string.h
*** gcc-17-20260531/libstdc++-v3/include/bits/basic_string.h	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/bits/basic_string.h	Sun Jun  7 22:32:16 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 4607,4617 ****
    { return std::stod(__str, __idx); }
  #endif
  
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // DR 1261. Insufficient overloads for to_string / to_wstring
  
    _GLIBCXX_NODISCARD
!   inline string
    to_string(int __val)
  #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_INT__) <= 32
    noexcept // any 32-bit value fits in the SSO buffer
--- 4607,4623 ----
    { return std::stod(__str, __idx); }
  #endif
  
+ #if __glibcxx_constexpr_string >= 202511L
+ # define _GLIBCXX_TO_STRING_CONSTEXPR constexpr
+ #else
+ # define _GLIBCXX_TO_STRING_CONSTEXPR inline
+ #endif
+ 
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // DR 1261. Insufficient overloads for to_string / to_wstring
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR string
    to_string(int __val)
  #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_INT__) <= 32
    noexcept // any 32-bit value fits in the SSO buffer
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 4630,4636 ****
    }
  
    _GLIBCXX_NODISCARD
!   inline string
    to_string(unsigned __val)
  #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_INT__) <= 32
    noexcept // any 32-bit value fits in the SSO buffer
--- 4636,4642 ----
    }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR string
    to_string(unsigned __val)
  #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_INT__) <= 32
    noexcept // any 32-bit value fits in the SSO buffer
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 4646,4652 ****
    }
  
    _GLIBCXX_NODISCARD
!   inline string
    to_string(long __val)
  #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_LONG__) <= 32
    noexcept // any 32-bit value fits in the SSO buffer
--- 4652,4658 ----
    }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR string
    to_string(long __val)
  #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_LONG__) <= 32
    noexcept // any 32-bit value fits in the SSO buffer
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 4665,4671 ****
    }
  
    _GLIBCXX_NODISCARD
!   inline string
    to_string(unsigned long __val)
  #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_LONG__) <= 32
    noexcept // any 32-bit value fits in the SSO buffer
--- 4671,4677 ----
    }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR string
    to_string(unsigned long __val)
  #if _GLIBCXX_USE_CXX11_ABI && (__CHAR_BIT__ * __SIZEOF_LONG__) <= 32
    noexcept // any 32-bit value fits in the SSO buffer
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 4681,4687 ****
    }
  
    _GLIBCXX_NODISCARD
!   inline string
    to_string(long long __val)
    {
      const bool __neg = __val < 0;
--- 4687,4693 ----
    }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR string
    to_string(long long __val)
    {
      const bool __neg = __val < 0;
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 4698,4704 ****
    }
  
    _GLIBCXX_NODISCARD
!   inline string
    to_string(unsigned long long __val)
    {
      const auto __len = __detail::__to_chars_len(__val);
--- 4704,4710 ----
    }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR string
    to_string(unsigned long long __val)
    {
      const auto __len = __detail::__to_chars_len(__val);
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 4922,4953 ****
  #pragma GCC diagnostic pop
  
    _GLIBCXX_NODISCARD
!   inline wstring
    to_wstring(int __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   inline wstring
    to_wstring(unsigned __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   inline wstring
    to_wstring(long __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   inline wstring
    to_wstring(unsigned long __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   inline wstring
    to_wstring(long long __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   inline wstring
    to_wstring(unsigned long long __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
--- 4928,4959 ----
  #pragma GCC diagnostic pop
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR wstring
    to_wstring(int __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR wstring
    to_wstring(unsigned __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR wstring
    to_wstring(long __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR wstring
    to_wstring(unsigned long __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR wstring
    to_wstring(long long __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
    _GLIBCXX_NODISCARD
!   _GLIBCXX_TO_STRING_CONSTEXPR wstring
    to_wstring(unsigned long long __val)
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 4968,4973 ****
--- 4974,4980 ----
    { return std::__to_wstring_numeric(std::to_string(__val)); }
  #endif
  #endif // _GLIBCXX_USE_WCHAR_T
+ #undef _GLIBCXX_TO_STRING_CONSTEXPR
  
  _GLIBCXX_END_NAMESPACE_CXX11
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/bits/fs_path.h gcc-17-20260607/libstdc++-v3/include/bits/fs_path.h
*** gcc-17-20260531/libstdc++-v3/include/bits/fs_path.h	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/bits/fs_path.h	Sun Jun  7 22:32:16 2026
*************** namespace __detail
*** 462,468 ****
--- 462,473 ----
        std::basic_string<_CharT, _Traits, _Allocator>
        string(const _Allocator& __a = _Allocator()) const;
  
+     _GLIBCXX26_DEPRECATED_SUGGEST("display_string' or 'native_encoded_string")
      std::string    string() const;
+ #if __glibcxx_format_path >= 202506L // C++ >= 26 && HOSTED
+     std::string    display_string() const;
+     std::string    native_encoded_string() const;
+ #endif
  #if _GLIBCXX_USE_WCHAR_T
      std::wstring   wstring() const;
  #endif
*************** namespace __detail
*** 481,487 ****
--- 486,497 ----
        std::basic_string<_CharT, _Traits, _Allocator>
        generic_string(const _Allocator& __a = _Allocator()) const;
  
+     _GLIBCXX26_DEPRECATED_SUGGEST("generic_display_string' or 'generic_native_encoded_string")
      std::string    generic_string() const;
+ #if __glibcxx_format_path >= 202506L // C++ >= 26 && HOSTED
+     std::string    generic_display_string() const;
+     std::string    generic_native_encoded_string() const;
+ #endif
  #if _GLIBCXX_USE_WCHAR_T
      std::wstring   generic_wstring() const;
  #endif
*************** namespace __detail
*** 1173,1178 ****
--- 1183,1205 ----
    inline std::string
    path::string() const { return string<char>(); }
  
+ #if __glibcxx_format_path >= 202506L // C++ >= 26 && HOSTED
+   inline std::string
+   path::display_string() const
+   {
+ #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
+     return std::string(from_range,
+ 	     __unicode::_Utf_view<char, wstring_view>(native()));
+ #else
+     return native();
+ #endif
+   }
+ 
+   inline std::string
+   path::native_encoded_string() const
+   { return string<char>(); }
+ #endif
+ 
  #if _GLIBCXX_USE_WCHAR_T
    inline std::wstring
    path::wstring() const { return string<wchar_t>(); }
*************** namespace __detail
*** 1251,1256 ****
--- 1278,1301 ----
    path::generic_string() const
    { return generic_string<char>(); }
  
+ #if __glibcxx_format_path >= 202506L // C++ >= 26 && HOSTED
+   inline std::string
+   path::generic_display_string() const
+   {
+ #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
+     string_type __str = generic_string<wchar_t>();
+     return std::string(from_range,
+ 	     __unicode::_Utf_view<char, wstring_view>(__str));
+ #else
+     return generic_string<char>();
+ #endif
+   }
+ 
+   inline std::string
+   path::generic_native_encoded_string() const
+   { return generic_string<char>(); }
+ #endif
+ 
  #if _GLIBCXX_USE_WCHAR_T
    inline std::wstring
    path::generic_wstring() const
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/bits/random.h gcc-17-20260607/libstdc++-v3/include/bits/random.h
*** gcc-17-20260531/libstdc++-v3/include/bits/random.h	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/bits/random.h	Sun Jun  7 22:32:16 2026
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 90,95 ****
--- 90,99 ----
        __rand_uint128(const __rand_uint128&) = default;
        __rand_uint128& operator=(const __rand_uint128&) = default;
  
+       constexpr explicit
+       operator bool() const noexcept
+       { return _M_lo || _M_hi; }
+ 
        _GLIBCXX14_CONSTEXPR type&
        operator=(uint64_t __x) noexcept
        { return *this = type(__x); }
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 134,139 ****
--- 138,150 ----
        operator+(type __l, uint64_t __r) noexcept
        { return __l += type(__r); }
  
+       _GLIBCXX14_CONSTEXPR type&
+       operator-=(const type& __r) noexcept
+       {
+ 	_M_hi -= __r._M_hi + __builtin_sub_overflow(_M_lo, __r._M_lo, &_M_lo);
+ 	return *this;
+       }
+ 
        // Subtraction with 64-bit operand
        _GLIBCXX14_CONSTEXPR type&
        operator-=(uint64_t __r) noexcept
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 143,148 ****
--- 154,163 ----
        }
  
        friend _GLIBCXX14_CONSTEXPR type
+       operator-(type __l, const type& __r) noexcept
+       { return __l -= __r; }
+ 
+       friend _GLIBCXX14_CONSTEXPR type
        operator-(type __l, uint64_t __r) noexcept
        { return __l -= __r; }
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 172,178 ****
        }
  
        // Multiplication with a 64-bit operand is simpler.
-       // pre: _M_hi == 0
        _GLIBCXX14_CONSTEXPR type&
        operator*=(uint64_t __x) noexcept
        {
--- 187,192 ----
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 190,196 ****
  	// These bits are the low half of _M_hi and the high half of _M_lo.
  	uint64_t __mid
  	  = (__l0x1 & __mask) + (__l1x0 & __mask) + (__l1x1 >> 32);
! 	_M_hi = __l0x0 + (__l0x1 >> 32) + (__l1x0 >> 32) + (__mid >> 32);
  	_M_lo = (__mid << 32) + (__l1x1 & __mask);
  	return *this;
        }
--- 204,212 ----
  	// These bits are the low half of _M_hi and the high half of _M_lo.
  	uint64_t __mid
  	  = (__l0x1 & __mask) + (__l1x0 & __mask) + (__l1x1 >> 32);
! 
! 	_M_hi *= __x;
! 	_M_hi += __l0x0 + (__l0x1 >> 32) + (__l1x0 >> 32) + (__mid >> 32);
  	_M_lo = (__mid << 32) + (__l1x1 & __mask);
  	return *this;
        }
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 296,301 ****
--- 312,321 ----
  	return *this;
        }
  
+       _GLIBCXX14_CONSTEXPR type&
+       operator/=(uint64_t __r) noexcept
+       { return *this /= type(__r); }
+ 
        // Currently only supported for 64-bit operands.
        _GLIBCXX14_CONSTEXPR type&
        operator%=(uint64_t __m) noexcept
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 346,351 ****
--- 366,375 ----
        { return __l /= __r; }
  
        friend _GLIBCXX14_CONSTEXPR type
+       operator/(type __l, uint64_t __r) noexcept
+       { return __l /= __r; }
+ 
+       friend _GLIBCXX14_CONSTEXPR type
        operator%(type __l, uint64_t __m) noexcept
        { return __l %= __m; }
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/bits/random.tcc gcc-17-20260607/libstdc++-v3/include/bits/random.tcc
*** gcc-17-20260531/libstdc++-v3/include/bits/random.tcc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/bits/random.tcc	Sun Jun  7 22:32:16 2026
*************** namespace __detail
*** 3084,3090 ****
  	if (__n == 1)
  	  {
  	    _RealType __ints[2] = { __xmin, __xmin + __delta };
! 	    _RealType __den = __fw(__xmin * 0.5 * __delta);
  	    _M_initialize2(__ints, __den);
  	    return;
  	  }
--- 3084,3090 ----
  	if (__n == 1)
  	  {
  	    _RealType __ints[2] = { __xmin, __xmin + __delta };
! 	    _RealType __den = __fw(__xmin + 0.5 * __delta);
  	    _M_initialize2(__ints, __den);
  	    return;
  	  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/bits/stl_queue.h gcc-17-20260607/libstdc++-v3/include/bits/stl_queue.h
*** gcc-17-20260531/libstdc++-v3/include/bits/stl_queue.h	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/bits/stl_queue.h	Sun Jun  7 22:32:16 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 607,620 ****
--- 607,623 ----
        template<typename _Seq = _Sequence, typename _Requires = typename
  	       enable_if<__and_<is_default_constructible<_Compare>,
  				is_default_constructible<_Seq>>::value>::type>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue()
  	: c(), comp() { }
  
+       _GLIBCXX26_CONSTEXPR
        explicit
        priority_queue(const _Compare& __x, const _Sequence& __s)
        : c(__s), comp(__x)
        { std::make_heap(c.begin(), c.end(), comp); }
  
+       _GLIBCXX26_CONSTEXPR
        explicit
        priority_queue(const _Compare& __x, _Sequence&& __s = _Sequence())
        : c(std::move(__s)), comp(__x)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 623,634 ****
--- 626,639 ----
        priority_queue(const priority_queue&) = default;
        priority_queue& operator=(const priority_queue&) = default;
  
+       _GLIBCXX26_CONSTEXPR
        priority_queue(priority_queue&& __q)
        noexcept(__and_<is_nothrow_move_constructible<_Sequence>,
  		      is_nothrow_move_constructible<_Compare>>::value)
        : c(std::move(__q.c)), comp(std::move(__q.comp))
        { __q.c.clear(); }
  
+       _GLIBCXX26_CONSTEXPR
        priority_queue&
        operator=(priority_queue&& __q)
        noexcept(__and_<is_nothrow_move_assignable<_Sequence>,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 641,672 ****
--- 646,683 ----
        }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	explicit
  	priority_queue(const _Alloc& __a)
  	: c(__a), comp() { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(const _Compare& __x, const _Alloc& __a)
  	: c(__a), comp(__x) { }
  
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 2537. Constructors [...] taking allocators should call make_heap
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(const _Compare& __x, const _Sequence& __c,
  		       const _Alloc& __a)
  	: c(__c, __a), comp(__x)
  	{ std::make_heap(c.begin(), c.end(), comp); }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a)
  	: c(std::move(__c), __a), comp(__x)
  	{ std::make_heap(c.begin(), c.end(), comp); }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(const priority_queue& __q, const _Alloc& __a)
  	: c(__q.c, __a), comp(__q.comp) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(priority_queue&& __q, const _Alloc& __a)
  	: c(std::move(__q.c), __a), comp(std::move(__q.comp))
  	{ __q.c.clear(); }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 704,709 ****
--- 715,721 ----
        // 3529. priority_queue(first, last) should construct c with (first, last)
        template<typename _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(_InputIterator __first, _InputIterator __last,
  		       const _Compare& __x = _Compare())
  	: c(__first, __last), comp(__x)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 713,718 ****
--- 725,731 ----
        // 3522. Missing requirement on InputIterator template parameter
        template<typename _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(_InputIterator __first, _InputIterator __last,
  		       const _Compare& __x, const _Sequence& __s)
  	: c(__s), comp(__x)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 724,729 ****
--- 737,743 ----
  
        template<typename _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(_InputIterator __first, _InputIterator __last,
  		       const _Compare& __x, _Sequence&& __s)
  	: c(std::move(__s)), comp(__x)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 741,746 ****
--- 755,761 ----
        template<typename _InputIterator, typename _Alloc,
  	       typename = std::_RequireInputIter<_InputIterator>,
  	       typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(_InputIterator __first, _InputIterator __last,
  		       const _Alloc& __alloc)
  	: c(__first, __last, __alloc), comp()
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 749,754 ****
--- 764,770 ----
        template<typename _InputIterator, typename _Alloc,
  	       typename = std::_RequireInputIter<_InputIterator>,
  	       typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(_InputIterator __first, _InputIterator __last,
  		       const _Compare& __x, const _Alloc& __alloc)
  	: c(__first, __last, __alloc), comp(__x)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 757,762 ****
--- 773,779 ----
        template<typename _InputIterator, typename _Alloc,
  	       typename = std::_RequireInputIter<_InputIterator>,
  	       typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(_InputIterator __first, _InputIterator __last,
  		       const _Compare& __x, const _Sequence& __s,
  		       const _Alloc& __alloc)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 769,774 ****
--- 786,792 ----
  
        template<typename _InputIterator, typename _Alloc,
  	       typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(_InputIterator __first, _InputIterator __last,
  		       const _Compare& __x, _Sequence&& __s,
  		       const _Alloc& __alloc)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 788,805 ****
--- 806,826 ----
         * @{
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(from_range_t, _Rg&& __rg,
  		       const _Compare& __x = _Compare())
  	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg))), comp(__x)
  	{ std::make_heap(c.begin(), c.end(), comp); }
  
        template<__detail::__container_compatible_range<_Tp> _Rg, typename _Alloc>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(from_range_t, _Rg&& __rg, const _Compare& __x,
  		       const _Alloc& __a)
  	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg), __a)), comp(__x)
  	{ std::make_heap(c.begin(), c.end(), comp); }
  
        template<__detail::__container_compatible_range<_Tp> _Rg, typename _Alloc>
+ 	_GLIBCXX26_CONSTEXPR
  	priority_queue(from_range_t, _Rg&& __rg, const _Alloc& __a)
  	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg), __a)), comp()
  	{ std::make_heap(c.begin(), c.end(), comp); }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 809,820 ****
        /**
         *  Returns true if the %queue is empty.
         */
!       _GLIBCXX_NODISCARD bool
        empty() const
        { return c.empty(); }
  
        /**  Returns the number of elements in the %queue.  */
!       _GLIBCXX_NODISCARD
        size_type
        size() const
        { return c.size(); }
--- 830,842 ----
        /**
         *  Returns true if the %queue is empty.
         */
!       _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
!       bool
        empty() const
        { return c.empty(); }
  
        /**  Returns the number of elements in the %queue.  */
!       _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
        size_type
        size() const
        { return c.size(); }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 823,829 ****
         *  Returns a read-only (constant) reference to the data at the first
         *  element of the %queue.
         */
!       _GLIBCXX_NODISCARD
        const_reference
        top() const
        {
--- 845,851 ----
         *  Returns a read-only (constant) reference to the data at the first
         *  element of the %queue.
         */
!       _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
        const_reference
        top() const
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 839,844 ****
--- 861,867 ----
         *  The time complexity of the operation depends on the underlying
         *  sequence.
         */
+       _GLIBCXX26_CONSTEXPR
        void
        push(const value_type& __x)
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 847,852 ****
--- 870,876 ----
        }
  
  #if __cplusplus >= 201103L
+       _GLIBCXX26_CONSTEXPR
        void
        push(value_type&& __x)
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 855,860 ****
--- 879,885 ----
        }
  
        template<typename... _Args>
+ 	_GLIBCXX26_CONSTEXPR
  	void
  	emplace(_Args&&... __args)
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 865,870 ****
--- 890,896 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	_GLIBCXX26_CONSTEXPR
  	void
  	push_range(_Rg&& __rg)
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 887,892 ****
--- 913,919 ----
         *  data is needed, it should be retrieved before pop() is
         *  called.
         */
+       _GLIBCXX26_CONSTEXPR
        void
        pop()
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 896,901 ****
--- 923,929 ----
        }
  
  #if __cplusplus >= 201103L
+       _GLIBCXX26_CONSTEXPR
        void
        swap(priority_queue& __pq)
        noexcept(__and_<
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 964,969 ****
--- 992,998 ----
  
  #if __cplusplus >= 201103L
    template<typename _Tp, typename _Sequence, typename _Compare>
+     _GLIBCXX26_CONSTEXPR
      inline
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
      // Constrained free swap overload, see p0185r1
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/bits/version.def gcc-17-20260607/libstdc++-v3/include/bits/version.def
*** gcc-17-20260531/libstdc++-v3/include/bits/version.def	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/bits/version.def	Sun Jun  7 22:32:16 2026
*************** ftms = {
*** 1329,1334 ****
--- 1329,1344 ----
  };
  
  ftms = {
+   name = constexpr_exceptions;
+   values = {
+     v = 202502;
+     cxxmin = 26;
+     extra_cond = "__cpp_constexpr_exceptions >= 202411L";
+     cxx11abi = yes;
+   };
+ };
+ 
+ ftms = {
    name = format;
    // 202305 P2757R3 Type checking format args
    // 202306 P2637R3 Member visit
*************** ftms = {
*** 1352,1357 ****
--- 1362,1379 ----
  };
  
  ftms = {
+   name = constexpr_format;
+   // 202511 P3391R2 constexpr std::format
+   values = {
+     v = 202511;
+     cxxmin = 26;
+     hosted = yes;
+     extra_cond = "__cpp_lib_constexpr_exceptions >= 202502L";
+     cxx11abi = yes;
+   };
+ };
+ 
+ ftms = {
    name = format_uchar;
    values = {
      v = 202311;
*************** ftms = {
*** 1398,1403 ****
--- 1420,1433 ----
  
  ftms = {
    name = constexpr_string;
+   // 202511 LWG4531 Should there be a feature-test macro update for constexpr std::to_(w)string?
+   //        P3391R2 constexpr std::format
+   values = {
+     v = 202511;
+     cxxmin = 26;
+     hosted = yes;
+     cxx11abi = yes;
+   };
    values = {
      v = 201907;
      cxxmin = 20;
*************** ftms = {
*** 1585,1592 ****
  ftms = {
    name = format_path;
    // 202403 P2845R8 Formatting of std::filesystem::path
    values = {
!     v = 202403;
      cxxmin = 26;
      hosted = yes;
    };
--- 1615,1623 ----
  ftms = {
    name = format_path;
    // 202403 P2845R8 Formatting of std::filesystem::path
+   // 202506 P2319R5 Prevent path presentation problems
    values = {
!     v = 202506;
      cxxmin = 26;
      hosted = yes;
    };
*************** ftms = {
*** 2323,2338 ****
  };
  
  ftms = {
-   name = constexpr_exceptions;
-   values = {
-     v = 202502;
-     cxxmin = 26;
-     extra_cond = "__cpp_constexpr_exceptions >= 202411L";
-     cxx11abi = yes;
-   };
- };
- 
- ftms = {
    name = philox_engine;
    values = {
      v = 202406;
--- 2354,2359 ----
*************** ftms = {
*** 2427,2433 ****
    name = valarray;
    values = {
      v = 202511;
!     cxxmin = 26; 
    };
  };
  
--- 2448,2610 ----
    name = valarray;
    values = {
      v = 202511;
!     cxxmin = 26;
!   };
! };
! 
! ftms = {
!   name = hardened_array;
!   values = {
!     v = 202502;
!     cxxmin = 11;
!     extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_basic_stacktrace;
!   values = {
!     v = 202502;
!     cxxmin = 23;
!     hosted = yes;
!     extra_cond = "defined(__glibcxx_stacktrace) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_basic_string;
!   values = {
!     v = 202502;
!     extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_basic_string_view;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_string_view) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_bitset;
!   values = {
!     v = 202502;
!     extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_common_iterator;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_counted_iterator;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_deque;
!   values = {
!     v = 202502;
!     extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_expected;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_expected) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_forward_list;
!   values = {
!     v = 202502;
!     cxxmin = 11;
!     extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_inplace_vector;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_inplace_vector) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_list;
!   values = {
!     v = 202502;
!     extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_mdspan;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_mdspan) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_optional;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_optional) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_shared_ptr_array;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_shared_ptr_arrays) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_span;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_span) && defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_valarray;
!   values = {
!     v = 202502;
!     extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_vector;
!   values = {
!     v = 202502;
!     extra_cond = "defined(_GLIBCXX_ASSERTIONS)";
!   };
! };
! 
! ftms = {
!   name = hardened_view_interface;
!   values = {
!     v = 202502;
!     extra_cond = "defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS)";
    };
  };
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/bits/version.h gcc-17-20260607/libstdc++-v3/include/bits/version.h
*** gcc-17-20260531/libstdc++-v3/include/bits/version.h	Sun May 31 22:32:17 2026
--- gcc-17-20260607/libstdc++-v3/include/bits/version.h	Sun Jun  7 22:32:19 2026
***************
*** 1476,1481 ****
--- 1476,1491 ----
  #endif /* !defined(__cpp_lib_barrier) */
  #undef __glibcxx_want_barrier
  
+ #if !defined(__cpp_lib_constexpr_exceptions)
+ # if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_constexpr_exceptions >= 202411L)
+ #  define __glibcxx_constexpr_exceptions 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_exceptions)
+ #   define __cpp_lib_constexpr_exceptions 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_constexpr_exceptions) */
+ #undef __glibcxx_want_constexpr_exceptions
+ 
  #if !defined(__cpp_lib_format)
  # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
  #  define __glibcxx_format 202603L
***************
*** 1491,1496 ****
--- 1501,1516 ----
  #endif /* !defined(__cpp_lib_format) */
  #undef __glibcxx_want_format
  
+ #if !defined(__cpp_lib_constexpr_format)
+ # if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED && (__cpp_lib_constexpr_exceptions >= 202502L)
+ #  define __glibcxx_constexpr_format 202511L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_format)
+ #   define __cpp_lib_constexpr_format 202511L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_constexpr_format) */
+ #undef __glibcxx_want_constexpr_format
+ 
  #if !defined(__cpp_lib_format_uchar)
  # if (__cplusplus >= 202002L) && _GLIBCXX_HOSTED
  #  define __glibcxx_format_uchar 202311L
***************
*** 1542,1548 ****
  #undef __glibcxx_want_constexpr_flat_set
  
  #if !defined(__cpp_lib_constexpr_string)
! # if (__cplusplus >= 202002L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED && (defined(__glibcxx_is_constant_evaluated))
  #  define __glibcxx_constexpr_string 201907L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_string)
  #   define __cpp_lib_constexpr_string 201907L
--- 1562,1573 ----
  #undef __glibcxx_want_constexpr_flat_set
  
  #if !defined(__cpp_lib_constexpr_string)
! # if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED
! #  define __glibcxx_constexpr_string 202511L
! #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_string)
! #   define __cpp_lib_constexpr_string 202511L
! #  endif
! # elif (__cplusplus >= 202002L) && _GLIBCXX_USE_CXX11_ABI && _GLIBCXX_HOSTED && (defined(__glibcxx_is_constant_evaluated))
  #  define __glibcxx_constexpr_string 201907L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_string)
  #   define __cpp_lib_constexpr_string 201907L
***************
*** 1738,1746 ****
  
  #if !defined(__cpp_lib_format_path)
  # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
! #  define __glibcxx_format_path 202403L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_format_path)
! #   define __cpp_lib_format_path 202403L
  #  endif
  # endif
  #endif /* !defined(__cpp_lib_format_path) */
--- 1763,1771 ----
  
  #if !defined(__cpp_lib_format_path)
  # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
! #  define __glibcxx_format_path 202506L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_format_path)
! #   define __cpp_lib_format_path 202506L
  #  endif
  # endif
  #endif /* !defined(__cpp_lib_format_path) */
***************
*** 2581,2596 ****
  #endif /* !defined(__cpp_lib_bitset) */
  #undef __glibcxx_want_bitset
  
- #if !defined(__cpp_lib_constexpr_exceptions)
- # if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_constexpr_exceptions >= 202411L)
- #  define __glibcxx_constexpr_exceptions 202502L
- #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_exceptions)
- #   define __cpp_lib_constexpr_exceptions 202502L
- #  endif
- # endif
- #endif /* !defined(__cpp_lib_constexpr_exceptions) */
- #undef __glibcxx_want_constexpr_exceptions
- 
  #if !defined(__cpp_lib_philox_engine)
  # if (__cplusplus >  202302L)
  #  define __glibcxx_philox_engine 202406L
--- 2606,2611 ----
***************
*** 2695,2698 ****
--- 2710,2903 ----
  #endif /* !defined(__cpp_lib_valarray) */
  #undef __glibcxx_want_valarray
  
+ #if !defined(__cpp_lib_hardened_array)
+ # if (__cplusplus >= 201103L) && (defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_array 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_array)
+ #   define __cpp_lib_hardened_array 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_array) */
+ #undef __glibcxx_want_hardened_array
+ 
+ #if !defined(__cpp_lib_hardened_basic_stacktrace)
+ # if (__cplusplus >= 202100L) && _GLIBCXX_HOSTED && (defined(__glibcxx_stacktrace) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_basic_stacktrace 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_basic_stacktrace)
+ #   define __cpp_lib_hardened_basic_stacktrace 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_basic_stacktrace) */
+ #undef __glibcxx_want_hardened_basic_stacktrace
+ 
+ #if !defined(__cpp_lib_hardened_basic_string)
+ # if (defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_basic_string 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_basic_string)
+ #   define __cpp_lib_hardened_basic_string 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_basic_string) */
+ #undef __glibcxx_want_hardened_basic_string
+ 
+ #if !defined(__cpp_lib_hardened_basic_string_view)
+ # if (defined(__glibcxx_string_view) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_basic_string_view 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_basic_string_view)
+ #   define __cpp_lib_hardened_basic_string_view 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_basic_string_view) */
+ #undef __glibcxx_want_hardened_basic_string_view
+ 
+ #if !defined(__cpp_lib_hardened_bitset)
+ # if (defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_bitset 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_bitset)
+ #   define __cpp_lib_hardened_bitset 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_bitset) */
+ #undef __glibcxx_want_hardened_bitset
+ 
+ #if !defined(__cpp_lib_hardened_common_iterator)
+ # if (defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_common_iterator 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_common_iterator)
+ #   define __cpp_lib_hardened_common_iterator 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_common_iterator) */
+ #undef __glibcxx_want_hardened_common_iterator
+ 
+ #if !defined(__cpp_lib_hardened_counted_iterator)
+ # if (defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_counted_iterator 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_counted_iterator)
+ #   define __cpp_lib_hardened_counted_iterator 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_counted_iterator) */
+ #undef __glibcxx_want_hardened_counted_iterator
+ 
+ #if !defined(__cpp_lib_hardened_deque)
+ # if (defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_deque 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_deque)
+ #   define __cpp_lib_hardened_deque 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_deque) */
+ #undef __glibcxx_want_hardened_deque
+ 
+ #if !defined(__cpp_lib_hardened_expected)
+ # if (defined(__glibcxx_expected) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_expected 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_expected)
+ #   define __cpp_lib_hardened_expected 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_expected) */
+ #undef __glibcxx_want_hardened_expected
+ 
+ #if !defined(__cpp_lib_hardened_forward_list)
+ # if (__cplusplus >= 201103L) && (defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_forward_list 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_forward_list)
+ #   define __cpp_lib_hardened_forward_list 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_forward_list) */
+ #undef __glibcxx_want_hardened_forward_list
+ 
+ #if !defined(__cpp_lib_hardened_inplace_vector)
+ # if (defined(__glibcxx_inplace_vector) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_inplace_vector 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_inplace_vector)
+ #   define __cpp_lib_hardened_inplace_vector 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_inplace_vector) */
+ #undef __glibcxx_want_hardened_inplace_vector
+ 
+ #if !defined(__cpp_lib_hardened_list)
+ # if (defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_list 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_list)
+ #   define __cpp_lib_hardened_list 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_list) */
+ #undef __glibcxx_want_hardened_list
+ 
+ #if !defined(__cpp_lib_hardened_mdspan)
+ # if (defined(__glibcxx_mdspan) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_mdspan 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_mdspan)
+ #   define __cpp_lib_hardened_mdspan 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_mdspan) */
+ #undef __glibcxx_want_hardened_mdspan
+ 
+ #if !defined(__cpp_lib_hardened_optional)
+ # if (defined(__glibcxx_optional) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_optional 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_optional)
+ #   define __cpp_lib_hardened_optional 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_optional) */
+ #undef __glibcxx_want_hardened_optional
+ 
+ #if !defined(__cpp_lib_hardened_shared_ptr_array)
+ # if (defined(__glibcxx_shared_ptr_arrays) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_shared_ptr_array 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_shared_ptr_array)
+ #   define __cpp_lib_hardened_shared_ptr_array 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_shared_ptr_array) */
+ #undef __glibcxx_want_hardened_shared_ptr_array
+ 
+ #if !defined(__cpp_lib_hardened_span)
+ # if (defined(__glibcxx_span) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_span 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_span)
+ #   define __cpp_lib_hardened_span 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_span) */
+ #undef __glibcxx_want_hardened_span
+ 
+ #if !defined(__cpp_lib_hardened_valarray)
+ # if (defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_valarray 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_valarray)
+ #   define __cpp_lib_hardened_valarray 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_valarray) */
+ #undef __glibcxx_want_hardened_valarray
+ 
+ #if !defined(__cpp_lib_hardened_vector)
+ # if (defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_vector 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_vector)
+ #   define __cpp_lib_hardened_vector 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_vector) */
+ #undef __glibcxx_want_hardened_vector
+ 
+ #if !defined(__cpp_lib_hardened_view_interface)
+ # if (defined(__glibcxx_ranges) && defined(_GLIBCXX_ASSERTIONS))
+ #  define __glibcxx_hardened_view_interface 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_hardened_view_interface)
+ #   define __cpp_lib_hardened_view_interface 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_hardened_view_interface) */
+ #undef __glibcxx_want_hardened_view_interface
+ 
  #undef __glibcxx_want_all
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/bits/version.tpl gcc-17-20260607/libstdc++-v3/include/bits/version.tpl
*** gcc-17-20260531/libstdc++-v3/include/bits/version.tpl	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/bits/version.tpl	Sun Jun  7 22:32:16 2026
*************** h
*** 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
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/debug/safe_iterator.h gcc-17-20260607/libstdc++-v3/include/debug/safe_iterator.h
*** gcc-17-20260531/libstdc++-v3/include/debug/safe_iterator.h	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/debug/safe_iterator.h	Sun Jun  7 22:32:16 2026
*************** namespace __gnu_debug
*** 1149,1155 ****
      inline bool
      __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
  		  _Size __n)
!     { 
        if (std::__is_constant_evaluated())
  	return true;
  
--- 1149,1155 ----
      inline bool
      __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
  		  _Size __n)
!     {
        if (std::__is_constant_evaluated())
  	return true;
  
*************** namespace __gnu_debug
*** 1166,1172 ****
      {
        if (std::__is_constant_evaluated())
  	return true;
!     
        return __it._M_can_advance(__dist, __way);
      }
  
--- 1166,1172 ----
      {
        if (std::__is_constant_evaluated())
  	return true;
! 
        return __it._M_can_advance(__dist, __way);
      }
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/array gcc-17-20260607/libstdc++-v3/include/std/array
*** gcc-17-20260531/libstdc++-v3/include/std/array	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/array	Sun Jun  7 22:32:16 2026
***************
*** 49,54 ****
--- 49,55 ----
  
  #define __glibcxx_want_array_constexpr
  #define __glibcxx_want_freestanding_array
+ #define __glibcxx_want_hardened_array
  #define __glibcxx_want_nonmember_container_access
  #define __glibcxx_want_to_array
  #include <bits/version.h>
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/bitset gcc-17-20260607/libstdc++-v3/include/std/bitset
*** gcc-17-20260531/libstdc++-v3/include/std/bitset	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/bitset	Sun Jun  7 22:32:16 2026
***************
*** 62,67 ****
--- 62,68 ----
  
  #define __glibcxx_want_constexpr_bitset
  #define __glibcxx_want_bitset  // ...construct from string_view
+ #define __glibcxx_want_hardened_bitset
  #include <bits/version.h>
  
  #ifdef __cpp_lib_bitset // ...construct from string_view
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/deque gcc-17-20260607/libstdc++-v3/include/std/deque
*** gcc-17-20260531/libstdc++-v3/include/std/deque	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/deque	Sun Jun  7 22:32:16 2026
***************
*** 75,80 ****
--- 75,81 ----
  #define __glibcxx_want_allocator_traits_is_always_equal
  #define __glibcxx_want_containers_ranges
  #define __glibcxx_want_erase_if
+ #define __glibcxx_want_hardened_deque
  #define __glibcxx_want_nonmember_container_access
  #include <bits/version.h>
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/expected gcc-17-20260607/libstdc++-v3/include/std/expected
*** gcc-17-20260531/libstdc++-v3/include/std/expected	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/expected	Sun Jun  7 22:32:16 2026
***************
*** 37,42 ****
--- 37,43 ----
  #define __glibcxx_want_freestanding_expected
  #define __glibcxx_want_constrained_equality
  #define __glibcxx_want_constexpr_exceptions
+ #define __glibcxx_want_hardened_expected
  #include <bits/version.h>
  
  #ifdef __cpp_lib_expected // C++ >= 23 && __cpp_concepts >= 202002L
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/format gcc-17-20260607/libstdc++-v3/include/std/format
*** gcc-17-20260531/libstdc++-v3/include/std/format	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/format	Sun Jun  7 22:32:16 2026
***************
*** 39,44 ****
--- 39,45 ----
  #define __glibcxx_want_format_ranges
  #define __glibcxx_want_format_uchar
  #define __glibcxx_want_constexpr_exceptions
+ #define __glibcxx_want_constexpr_format
  #include <bits/version.h>
  
  #ifdef __cpp_lib_format // C++ >= 20 && HOSTED
***************
*** 63,70 ****
  #include <bits/utility.h>      // tuple_size_v
  #include <ext/numeric_traits.h> // __int_traits
  
! #if !__has_builtin(__builtin_toupper)
! # include <cctype>
  #endif
  
  #pragma GCC diagnostic push
--- 64,73 ----
  #include <bits/utility.h>      // tuple_size_v
  #include <ext/numeric_traits.h> // __int_traits
  
! #ifdef __glibcxx_constexpr_format // C++ >= 26 && HOSTED && CXX11 strings
! # define _GLIBCXX_CONSTEXPR_FORMAT constexpr
! #else
! # define _GLIBCXX_CONSTEXPR_FORMAT
  #endif
  
  #pragma GCC diagnostic push
*************** namespace __format
*** 128,133 ****
--- 131,137 ----
      struct _Dynamic_format_string
      {
        [[__gnu__::__always_inline__]]
+       _GLIBCXX_CONSTEXPR_FORMAT
        _Dynamic_format_string(basic_string_view<_CharT> __s) noexcept
        : _M_str(__s) { }
  
*************** namespace __format
*** 170,178 ****
        template<typename _Tp>
  	requires convertible_to<const _Tp&, basic_string_view<_CharT>>
  	consteval
! 	basic_format_string(const _Tp& __s);
  
        [[__gnu__::__always_inline__]]
        basic_format_string(__format::_Dynamic_format_string<_CharT> __s) noexcept
        : _M_str(__s._M_str)
        { }
--- 174,183 ----
        template<typename _Tp>
  	requires convertible_to<const _Tp&, basic_string_view<_CharT>>
  	consteval
! 	basic_format_string(const _Tp& __s) noexcept;
  
        [[__gnu__::__always_inline__]]
+       _GLIBCXX_CONSTEXPR_FORMAT
        basic_format_string(__format::_Dynamic_format_string<_CharT> __s) noexcept
        : _M_str(__s._M_str)
        { }
*************** namespace __format
*** 197,209 ****
  
  #if __cpp_lib_format >= 202603L // >= C++26
    [[__gnu__::__always_inline__]]
!   inline __format::_Dynamic_format_string<char>
    dynamic_format(string_view __fmt) noexcept
    { return __fmt; }
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    [[__gnu__::__always_inline__]]
!   inline __format::_Dynamic_format_string<wchar_t>
    dynamic_format(wstring_view __fmt) noexcept
    { return __fmt; }
  #endif
--- 202,214 ----
  
  #if __cpp_lib_format >= 202603L // >= C++26
    [[__gnu__::__always_inline__]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT __format::_Dynamic_format_string<char>
    dynamic_format(string_view __fmt) noexcept
    { return __fmt; }
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    [[__gnu__::__always_inline__]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT __format::_Dynamic_format_string<wchar_t>
    dynamic_format(wstring_view __fmt) noexcept
    { return __fmt; }
  #endif
*************** namespace __format
*** 220,275 ****
        formatter& operator=(const formatter&) = delete;
      };
  
- #if __cpp_lib_constexpr_exceptions >= 202502L
- #define _GLIBCXX_CONSTEXPR_FORMAT_ERROR constexpr
- #else
- #define _GLIBCXX_CONSTEXPR_FORMAT_ERROR
- #endif
- 
    // [format.error], class format_error
    class format_error : public runtime_error
    {
    public:
!     _GLIBCXX_CONSTEXPR_FORMAT_ERROR explicit format_error(const string& __what)
      : runtime_error(__what) { }
!     _GLIBCXX_CONSTEXPR_FORMAT_ERROR explicit format_error(const char* __what)
      : runtime_error(__what) { }
    };
  
    /// @cond undocumented
    [[noreturn]]
!   inline void
    __throw_format_error(const char* __what)
    { _GLIBCXX_THROW_OR_ABORT(format_error(__what)); }
  
- #undef _GLIBCXX_CONSTEXPR_FORMAT_ERROR
- 
  namespace __format
  {
    // XXX use named functions for each constexpr error?
  
    [[noreturn]]
!   inline void
    __unmatched_left_brace_in_format_string()
    { __throw_format_error("format error: unmatched '{' in format string"); }
  
    [[noreturn]]
!   inline void
    __unmatched_right_brace_in_format_string()
    { __throw_format_error("format error: unmatched '}' in format string"); }
  
    [[noreturn]]
!   inline void
    __conflicting_indexing_in_format_string()
    { __throw_format_error("format error: conflicting indexing style in format string"); }
  
    [[noreturn]]
!   inline void
    __invalid_arg_id_in_format_string()
    { __throw_format_error("format error: invalid arg-id in format string"); }
  
    [[noreturn]]
!   inline void
    __failed_to_parse_format_spec()
    { __throw_format_error("format error: failed to parse format-spec"); }
  
--- 225,275 ----
        formatter& operator=(const formatter&) = delete;
      };
  
    // [format.error], class format_error
    class format_error : public runtime_error
    {
    public:
!     _GLIBCXX_CONSTEXPR_FORMAT
!     explicit format_error(const string& __what)
      : runtime_error(__what) { }
! 
!     _GLIBCXX_CONSTEXPR_FORMAT explicit
!     format_error(const char* __what)
      : runtime_error(__what) { }
    };
  
    /// @cond undocumented
    [[noreturn]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT void
    __throw_format_error(const char* __what)
    { _GLIBCXX_THROW_OR_ABORT(format_error(__what)); }
  
  namespace __format
  {
    // XXX use named functions for each constexpr error?
  
    [[noreturn]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT void
    __unmatched_left_brace_in_format_string()
    { __throw_format_error("format error: unmatched '{' in format string"); }
  
    [[noreturn]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT void
    __unmatched_right_brace_in_format_string()
    { __throw_format_error("format error: unmatched '}' in format string"); }
  
    [[noreturn]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT void
    __conflicting_indexing_in_format_string()
    { __throw_format_error("format error: conflicting indexing style in format string"); }
  
    [[noreturn]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT void
    __invalid_arg_id_in_format_string()
    { __throw_format_error("format error: invalid arg-id in format string"); }
  
    [[noreturn]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT void
    __failed_to_parse_format_spec()
    { __throw_format_error("format error: failed to parse format-spec"); }
  
*************** namespace __format
*** 517,523 ****
    using enum _WidthPrec;
  
    template<typename _Context>
!     size_t
      __int_from_arg(const basic_format_arg<_Context>& __arg);
  
    constexpr bool __is_digit(char __c)
--- 517,523 ----
    using enum _WidthPrec;
  
    template<typename _Context>
!     _GLIBCXX_CONSTEXPR_FORMAT size_t
      __int_from_arg(const basic_format_arg<_Context>& __arg);
  
    constexpr bool __is_digit(char __c)
*************** namespace __format
*** 750,756 ****
        }
  
        template<typename _Context>
! 	size_t
  	_M_get_width(_Context& __ctx) const
  	{
  	  size_t __width = 0;
--- 750,756 ----
        }
  
        template<typename _Context>
! 	_GLIBCXX_CONSTEXPR_FORMAT size_t
  	_M_get_width(_Context& __ctx) const
  	{
  	  size_t __width = 0;
*************** namespace __format
*** 762,768 ****
  	}
  
        template<typename _Context>
! 	size_t
  	_M_get_precision(_Context& __ctx) const
  	{
  	  size_t __prec = -1;
--- 762,768 ----
  	}
  
        template<typename _Context>
! 	_GLIBCXX_CONSTEXPR_FORMAT size_t
  	_M_get_precision(_Context& __ctx) const
  	{
  	  size_t __prec = -1;
*************** namespace __format
*** 775,781 ****
      };
  
    template<typename _Int>
!     inline char*
      __put_sign(_Int __i, _Sign __sign, char* __dest) noexcept
      {
        if (__i < 0)
--- 775,781 ----
      };
  
    template<typename _Int>
!     inline _GLIBCXX_CONSTEXPR_FORMAT char*
      __put_sign(_Int __i, _Sign __sign, char* __dest) noexcept
      {
        if (__i < 0)
*************** namespace __format
*** 792,798 ****
    // Write STR to OUT (and do so efficiently if OUT is a _Sink_iter).
    template<typename _Out, typename _CharT>
      requires output_iterator<_Out, const _CharT&>
!     inline _Out
      __write(_Out __out, basic_string_view<_CharT> __str)
      {
        if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
--- 792,798 ----
    // Write STR to OUT (and do so efficiently if OUT is a _Sink_iter).
    template<typename _Out, typename _CharT>
      requires output_iterator<_Out, const _CharT&>
!     inline _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write(_Out __out, basic_string_view<_CharT> __str)
      {
        if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
*************** namespace __format
*** 809,815 ****
    // Write STR to OUT with NFILL copies of FILL_CHAR specified by ALIGN.
    // pre: __align != _Align_default
    template<typename _Out, typename _CharT>
!     _Out
      __write_padded(_Out __out, basic_string_view<_CharT> __str,
  		   _Align __align, size_t __nfill, char32_t __fill_char)
      {
--- 809,815 ----
    // Write STR to OUT with NFILL copies of FILL_CHAR specified by ALIGN.
    // pre: __align != _Align_default
    template<typename _Out, typename _CharT>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write_padded(_Out __out, basic_string_view<_CharT> __str,
  		   _Align __align, size_t __nfill, char32_t __fill_char)
      {
*************** namespace __format
*** 883,889 ****
    // Write STR to OUT, with alignment and padding as determined by SPEC.
    // pre: __spec._M_align != _Align_default || __align != _Align_default
    template<typename _CharT, typename _Out>
!     _Out
      __write_padded_as_spec(basic_string_view<type_identity_t<_CharT>> __str,
  			   size_t __estimated_width,
  			   basic_format_context<_Out, _CharT>& __fc,
--- 883,889 ----
    // Write STR to OUT, with alignment and padding as determined by SPEC.
    // pre: __spec._M_align != _Align_default || __align != _Align_default
    template<typename _CharT, typename _Out>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write_padded_as_spec(basic_string_view<type_identity_t<_CharT>> __str,
  			   size_t __estimated_width,
  			   basic_format_context<_Out, _CharT>& __fc,
*************** namespace __format
*** 905,911 ****
      }
  
     template<typename _CharT>
!      size_t
       __truncate(basic_string_view<_CharT>& __s, size_t __prec)
       {
         if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
--- 905,911 ----
      }
  
     template<typename _CharT>
!      _GLIBCXX_CONSTEXPR_FORMAT size_t
       __truncate(basic_string_view<_CharT>& __s, size_t __prec)
       {
         if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
*************** namespace __format
*** 1049,1055 ****
  
    using uint_least32_t = __UINT_LEAST32_TYPE__;
    template<typename _Out, typename _CharT>
!     _Out
      __write_escape_seq(_Out __out, uint_least32_t __val,
  		       basic_string_view<_CharT> __prefix)
      {
--- 1049,1055 ----
  
    using uint_least32_t = __UINT_LEAST32_TYPE__;
    template<typename _Out, typename _CharT>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write_escape_seq(_Out __out, uint_least32_t __val,
  		       basic_string_view<_CharT> __prefix)
      {
*************** namespace __format
*** 1079,1085 ****
      }
  
    template<typename _Out, typename _CharT>
!     _Out
      __write_escape_seqs(_Out __out, basic_string_view<_CharT> __units)
      {
        using _UChar = make_unsigned_t<_CharT>;
--- 1079,1085 ----
      }
  
    template<typename _Out, typename _CharT>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write_escape_seqs(_Out __out, basic_string_view<_CharT> __units)
      {
        using _UChar = make_unsigned_t<_CharT>;
*************** namespace __format
*** 1090,1096 ****
      }
  
    template<typename _Out, typename _CharT>
!     _Out
      __write_escaped_char(_Out __out, _CharT __c)
      {
        using _UChar = make_unsigned_t<_CharT>;
--- 1090,1096 ----
      }
  
    template<typename _Out, typename _CharT>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write_escaped_char(_Out __out, _CharT __c)
      {
        using _UChar = make_unsigned_t<_CharT>;
*************** namespace __format
*** 1116,1127 ****
      }
  
    template<typename _CharT, typename _Out>
!     _Out
      __write_escaped_ascii(_Out __out,
  			  basic_string_view<_CharT> __str,
  			  _Term_char __term)
      {
        using _Str_view = basic_string_view<_CharT>;
        auto __first = __str.begin();
        auto const __last = __str.end();
        while (__first != __last)
--- 1116,1148 ----
      }
  
    template<typename _CharT, typename _Out>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write_escaped_ascii(_Out __out,
  			  basic_string_view<_CharT> __str,
  			  _Term_char __term)
      {
        using _Str_view = basic_string_view<_CharT>;
+       if consteval {
+ 	// As set of the escaped characters depends on the encoding, for
+ 	// compile time allow only printable ASCII and standard escapes.
+ 	constexpr _Str_view __supported(_GLIBCXX_WIDEN(
+ 	    "ABCDEFGHIJKLMNOPQRSTUWXYZ"
+ 	    "abdeefghijklmnopqrstuwzyz"
+ 	    " !#$%&'()*+-./:;<=>?[]^_{|}~"
+ 	    "0123456789" "\t\n\r\\\"\'\0"
+ 	  ), 95);
+ 	if (__str.find_first_not_of(__supported) != _Str_view::npos)
+ #if __has_builtin(__builtin_constexpr_diag)
+ 	  __builtin_constexpr_diag (2, "",
+ 				    "for non-Unicode literal encodings, only"
+ 				    " printable ASCII characters and standard"
+ 				    " escape sequencess can be escaped in constant"
+ 				    " expressions");
+ #else
+ 	  __asm__("");
+ #endif
+       }
+ 
        auto __first = __str.begin();
        auto const __last = __str.end();
        while (__first != __last)
*************** namespace __format
*** 1146,1152 ****
      }
  
    template<typename _CharT, typename _Out>
!     _Out
      __write_escaped_unicode_part(_Out __out, basic_string_view<_CharT>& __str,
  				 bool& __prev_esc, _Term_char __term)
      {
--- 1167,1173 ----
      }
  
    template<typename _CharT, typename _Out>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write_escaped_unicode_part(_Out __out, basic_string_view<_CharT>& __str,
  				 bool& __prev_esc, _Term_char __term)
      {
*************** namespace __format
*** 1224,1230 ****
      }
  
    template<typename _CharT, typename _Out>
!     _Out
      __write_escaped_unicode(_Out __out, basic_string_view<_CharT> __str,
  			    _Term_char __term)
      {
--- 1245,1251 ----
      }
  
    template<typename _CharT, typename _Out>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write_escaped_unicode(_Out __out, basic_string_view<_CharT> __str,
  			    _Term_char __term)
      {
*************** namespace __format
*** 1236,1242 ****
      }
  
    template<typename _CharT, typename _Out>
!     _Out
      __write_escaped(_Out __out,  basic_string_view<_CharT> __str, _Term_char __term)
      {
        __out = __format::__write(__out, _Escapes<_CharT>::_S_term(__term));
--- 1257,1263 ----
      }
  
    template<typename _CharT, typename _Out>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __write_escaped(_Out __out,  basic_string_view<_CharT> __str, _Term_char __term)
      {
        __out = __format::__write(__out, _Escapes<_CharT>::_S_term(__term));
*************** namespace __format
*** 1257,1268 ****
--- 1278,1291 ----
    struct _Optional_locale
    {
      [[__gnu__::__always_inline__]]
+     _GLIBCXX_CONSTEXPR_FORMAT
      _Optional_locale() : _M_dummy(), _M_hasval(false) { }
  
      _Optional_locale(const locale& __loc) noexcept
      : _M_loc(__loc), _M_hasval(true)
      { }
  
+     _GLIBCXX_CONSTEXPR_FORMAT
      _Optional_locale(const _Optional_locale& __l) noexcept
      : _M_dummy(), _M_hasval(__l._M_hasval)
      {
*************** namespace __format
*** 1270,1275 ****
--- 1293,1299 ----
  	std::construct_at(&_M_loc, __l._M_loc);
      }
  
+     _GLIBCXX_CONSTEXPR_FORMAT
      _Optional_locale&
      operator=(const _Optional_locale& __l) noexcept
      {
*************** namespace __format
*** 1291,1296 ****
--- 1315,1321 ----
        return *this;
      }
  
+     _GLIBCXX_CONSTEXPR_FORMAT
      ~_Optional_locale() { if (_M_hasval) _M_loc.~locale(); }
  
      _Optional_locale&
*************** namespace __format
*** 1317,1323 ****
        return _M_loc;
      }
  
!     bool has_value() const noexcept { return _M_hasval; }
  
      union {
        char _M_dummy = '\0';
--- 1342,1349 ----
        return _M_loc;
      }
  
!     _GLIBCXX_CONSTEXPR_FORMAT bool
!     has_value() const noexcept { return _M_hasval; }
  
      union {
        char _M_dummy = '\0';
*************** namespace __format
*** 1391,1397 ****
        }
  
        template<typename _Out>
! 	_Out
  	format(basic_string_view<_CharT> __s,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
--- 1417,1423 ----
        }
  
        template<typename _Out>
! 	_GLIBCXX_CONSTEXPR_FORMAT _Out
  	format(basic_string_view<_CharT> __s,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
*************** namespace __format
*** 1408,1414 ****
  	}
  
        template<typename _Out>
! 	_Out
  	_M_format_escaped(basic_string_view<_CharT> __s,
  			  basic_format_context<_Out, _CharT>& __fc) const
  	{
--- 1434,1440 ----
  	}
  
        template<typename _Out>
! 	_GLIBCXX_CONSTEXPR_FORMAT _Out
  	_M_format_escaped(basic_string_view<_CharT> __s,
  			  basic_format_context<_Out, _CharT>& __fc) const
  	{
*************** namespace __format
*** 1433,1439 ****
  #if __glibcxx_format_ranges // C++ >= 23 && HOSTED
        template<ranges::input_range _Rg, typename _Out>
  	requires same_as<remove_cvref_t<ranges::range_reference_t<_Rg>>, _CharT>
! 	_Out
  	_M_format_range(_Rg&& __rg, basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  using _Range = remove_reference_t<_Rg>;
--- 1459,1465 ----
  #if __glibcxx_format_ranges // C++ >= 23 && HOSTED
        template<ranges::input_range _Rg, typename _Out>
  	requires same_as<remove_cvref_t<ranges::range_reference_t<_Rg>>, _CharT>
! 	_GLIBCXX_CONSTEXPR_FORMAT _Out
  	_M_format_range(_Rg&& __rg, basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  using _Range = remove_reference_t<_Rg>;
*************** namespace __format
*** 1482,1487 ****
--- 1508,1535 ----
        _Spec<_CharT> _M_spec{};
      };
  
+   // A partial implementation of std::toupper that is constexpr-enabled,
+   // sufficient for formatting purposes.
+   [[__gnu__::__always_inline__]]
+   constexpr char
+   __toupper_numeric(char __c)
+   {
+     switch (__c)
+     {
+       case 'a': return 'A';
+       case 'b': return 'B';
+       case 'c': return 'C';
+       case 'd': return 'D';
+       case 'e': return 'E';
+       case 'f': return 'F';
+       case 'i': return 'I';
+       case 'n': return 'N';
+       case 'p': return 'P';
+       case 'x': return 'X';
+       default: return __c;
+     }
+   }
+ 
    template<__char _CharT>
      struct __formatter_int
      {
*************** namespace __format
*** 1641,1646 ****
--- 1689,1695 ----
  	}
  
        template<typename _Int, typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(_Int __i, basic_format_context<_Out, _CharT>& __fc) const
  	{
*************** namespace __format
*** 1690,1700 ****
  	      __res = to_chars(__start, __end, __u, 16);
  	      if (_M_spec._M_type == _Pres_X)
  		for (auto __p = __start; __p != __res.ptr; ++__p)
! #if __has_builtin(__builtin_toupper)
! 		  *__p = __builtin_toupper(*__p);
! #else
! 		  *__p = std::toupper(*__p);
! #endif
  	      break;
  	    default:
  	      __builtin_unreachable();
--- 1739,1745 ----
  	      __res = to_chars(__start, __end, __u, 16);
  	      if (_M_spec._M_type == _Pres_X)
  		for (auto __p = __start; __p != __res.ptr; ++__p)
! 		  *__p = __format::__toupper_numeric(*__p);
  	      break;
  	    default:
  	      __builtin_unreachable();
*************** namespace __format
*** 1703,1710 ****
  	  if (_M_spec._M_alt && __base_prefix.size())
  	    {
  	      __start -= __base_prefix.size();
! 	      __builtin_memcpy(__start, __base_prefix.data(),
! 			       __base_prefix.size());
  	    }
  	  __start = __format::__put_sign(__i, _M_spec._M_sign, __start - 1);
  
--- 1748,1754 ----
  	  if (_M_spec._M_alt && __base_prefix.size())
  	    {
  	      __start -= __base_prefix.size();
! 	      ranges::copy(__base_prefix, __start);
  	    }
  	  __start = __format::__put_sign(__i, _M_spec._M_sign, __start - 1);
  
*************** namespace __format
*** 1728,1733 ****
--- 1772,1778 ----
  	}
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(bool __i, basic_format_context<_Out, _CharT>& __fc) const
  	{
*************** namespace __format
*** 1758,1763 ****
--- 1803,1809 ----
  	}
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	_M_format_character(_CharT __c,
  			    basic_format_context<_Out, _CharT>& __fc) const
*************** namespace __format
*** 1789,1795 ****
  	}
  
        template<typename _Int>
! 	static _CharT
  	_S_to_character(_Int __i)
  	{
  	  using _Traits = __gnu_cxx::__int_traits<_CharT>;
--- 1835,1841 ----
  	}
  
        template<typename _Int>
! 	static _GLIBCXX_CONSTEXPR_FORMAT _CharT
  	_S_to_character(_Int __i)
  	{
  	  using _Traits = __gnu_cxx::__int_traits<_CharT>;
*************** namespace __format
*** 1810,1815 ****
--- 1856,1862 ----
  	}
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	_M_format_int(basic_string_view<_CharT> __str, size_t __prefix_len,
  		      basic_format_context<_Out, _CharT>& __fc) const
*************** namespace __format
*** 2199,2205 ****
  	  if (__upper)
  	    {
  	      for (char* __p = __start; __p != __res.ptr; ++__p)
! 		*__p = std::toupper(*__p);
  	    }
  
  	  bool __have_sign = true;
--- 2246,2252 ----
  	  if (__upper)
  	    {
  	      for (char* __p = __start; __p != __res.ptr; ++__p)
! 		*__p = __format::__toupper_numeric(*__p);
  	    }
  
  	  bool __have_sign = true;
*************** namespace __format
*** 2512,2521 ****
        }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const void* __v, basic_format_context<_Out, _CharT>& __fc) const
  	{
! 	  auto __u = reinterpret_cast<__UINTPTR_TYPE__>(__v);
  	  return __formatter_int<_CharT>(_M_spec).format(__u, __fc);
  	}
  
--- 2559,2571 ----
        }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const void* __v, basic_format_context<_Out, _CharT>& __fc) const
  	{
! 	  auto __u = __v
! 	    ? reinterpret_cast<__UINTPTR_TYPE__>(__v)
! 	    : static_cast<__UINTPTR_TYPE__>(0);
  	  return __formatter_int<_CharT>(_M_spec).format(__u, __fc);
  	}
  
*************** namespace __format
*** 2550,2555 ****
--- 2600,2606 ----
        }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(_CharT __u, basic_format_context<_Out, _CharT>& __fc) const
  	{
*************** namespace __format
*** 2588,2593 ****
--- 2639,2645 ----
        }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, wchar_t>::iterator
  	format(char __u, basic_format_context<_Out, wchar_t>& __fc) const
  	{
*************** namespace __format
*** 2623,2628 ****
--- 2675,2681 ----
  
        template<typename _Out>
  	[[__gnu__::__nonnull__]]
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(_CharT* __u, basic_format_context<_Out, _CharT>& __fc) const
  	{ return _M_f.format(__u, __fc); }
*************** namespace __format
*** 2652,2657 ****
--- 2705,2711 ----
  
        template<typename _Out>
  	[[__gnu__::__nonnull__]]
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const _CharT* __u,
  	       basic_format_context<_Out, _CharT>& __fc) const
*************** namespace __format
*** 2682,2687 ****
--- 2736,2742 ----
        { return _M_f.parse(__pc); }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const _CharT (&__u)[_Nm],
  	       basic_format_context<_Out, _CharT>& __fc) const
*************** namespace __format
*** 2711,2716 ****
--- 2766,2772 ----
        { return _M_f.parse(__pc); }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, char>::iterator
  	format(const basic_string<char, _Traits, _Alloc>& __u,
  	       basic_format_context<_Out, char>& __fc) const
*************** namespace __format
*** 2743,2748 ****
--- 2799,2805 ----
        { return _M_f.parse(__pc); }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, wchar_t>::iterator
  	format(const basic_string<wchar_t, _Traits, _Alloc>& __u,
  	       basic_format_context<_Out, wchar_t>& __fc) const
*************** namespace __format
*** 2776,2781 ****
--- 2833,2839 ----
        { return _M_f.parse(__pc); }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, char>::iterator
  	format(basic_string_view<char, _Traits> __u,
  	       basic_format_context<_Out, char>& __fc) const
*************** namespace __format
*** 2808,2813 ****
--- 2866,2872 ----
        { return _M_f.parse(__pc); }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, wchar_t>::iterator
  	format(basic_string_view<wchar_t, _Traits> __u,
  	       basic_format_context<_Out, wchar_t>& __fc) const
*************** namespace __format
*** 2871,2876 ****
--- 2930,2936 ----
        }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(_Tp __u, basic_format_context<_Out, _CharT>& __fc) const
  	{ return _M_f.format(__u, __fc); }
*************** namespace __format
*** 3082,3087 ****
--- 3142,3148 ----
        { return _M_f.parse(__pc); }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const void* __v, basic_format_context<_Out, _CharT>& __fc) const
  	{ return _M_f.format(__v, __fc); }
*************** namespace __format
*** 3107,3112 ****
--- 3168,3174 ----
        { return _M_f.parse(__pc); }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(void* __v, basic_format_context<_Out, _CharT>& __fc) const
  	{ return _M_f.format(__v, __fc); }
*************** namespace __format
*** 3132,3137 ****
--- 3194,3200 ----
        { return _M_f.parse(__pc); }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(nullptr_t, basic_format_context<_Out, _CharT>& __fc) const
  	{ return _M_f.format(nullptr, __fc); }
*************** namespace __format
*** 3276,3286 ****
        constexpr _Sink_iter
        operator++(int) { return *this; }
  
!       auto
        _M_reserve(size_t __n) const
        { return _M_sink->_M_reserve(__n); }
  
!       bool
        _M_discarding() const
        { return _M_sink->_M_discarding(); }
      };
--- 3339,3349 ----
        constexpr _Sink_iter
        operator++(int) { return *this; }
  
!       _GLIBCXX_CONSTEXPR_FORMAT auto
        _M_reserve(size_t __n) const
        { return _M_sink->_M_reserve(__n); }
  
!       _GLIBCXX_CONSTEXPR_FORMAT bool
        _M_discarding() const
        { return _M_sink->_M_discarding(); }
      };
*************** namespace __format
*** 3312,3318 ****
  
        // The portion of the span that has been written to.
        [[__gnu__::__always_inline__]]
!       span<_CharT>
        _M_used() const noexcept
        { return _M_span.first(_M_next - _M_span.begin()); }
  
--- 3375,3381 ----
  
        // The portion of the span that has been written to.
        [[__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT span<_CharT>
        _M_used() const noexcept
        { return _M_span.first(_M_next - _M_span.begin()); }
  
*************** namespace __format
*** 3329,3335 ****
        { _M_next = _M_span.begin(); }
  
        // Replace the current output range.
!       void
        _M_reset(span<_CharT> __s, size_t __pos = 0) noexcept
        {
  	_M_span = __s;
--- 3392,3398 ----
        { _M_next = _M_span.begin(); }
  
        // Replace the current output range.
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_reset(span<_CharT> __s, size_t __pos = 0) noexcept
        {
  	_M_span = __s;
*************** namespace __format
*** 3369,3379 ****
        struct _Reservation
        {
  	// True if the reservation was successful, false otherwise.
  	explicit operator bool() const noexcept { return _M_sink; }
  	// A pointer to write directly to the sink.
! 	_CharT* get() const noexcept { return _M_sink->_M_next.operator->(); }
  	// Add n to the _M_next iterator for the sink.
! 	void _M_bump(size_t __n) { _M_sink->_M_bump(__n); }
  	_Sink* _M_sink;
        };
  
--- 3432,3445 ----
        struct _Reservation
        {
  	// True if the reservation was successful, false otherwise.
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	explicit operator bool() const noexcept { return _M_sink; }
  	// A pointer to write directly to the sink.
! 	_GLIBCXX_CONSTEXPR_FORMAT _CharT*
! 	get() const noexcept { return _M_sink->_M_next.operator->(); }
  	// Add n to the _M_next iterator for the sink.
! 	_GLIBCXX_CONSTEXPR_FORMAT void
! 	_M_bump(size_t __n) { _M_sink->_M_bump(__n); }
  	_Sink* _M_sink;
        };
  
*************** namespace __format
*** 3381,3387 ****
        // If anything is written to the reservation then there must be a call
        // to _M_bump(N2) before any call to another member function of *this,
        // where N2 is the number of characters written.
!       virtual _Reservation
        _M_reserve(size_t __n)
        {
  	if (__n <= _M_unused().size())
--- 3447,3453 ----
        // If anything is written to the reservation then there must be a call
        // to _M_bump(N2) before any call to another member function of *this,
        // where N2 is the number of characters written.
!       _GLIBCXX_CONSTEXPR_FORMAT virtual _Reservation
        _M_reserve(size_t __n)
        {
  	if (__n <= _M_unused().size())
*************** namespace __format
*** 3398,3409 ****
  
        // Update the next output position after writing directly to the sink.
        // pre: no calls to _M_write or _M_overflow since _M_reserve.
!       virtual void
        _M_bump(size_t __n)
        { _M_next += __n; }
  
        // Returns true if the _Sink is discarding incoming characters.
!       virtual bool
        _M_discarding() const
        { return false; }
  
--- 3464,3475 ----
  
        // Update the next output position after writing directly to the sink.
        // pre: no calls to _M_write or _M_overflow since _M_reserve.
!       _GLIBCXX_CONSTEXPR_FORMAT virtual void
        _M_bump(size_t __n)
        { _M_next += __n; }
  
        // Returns true if the _Sink is discarding incoming characters.
!       _GLIBCXX_CONSTEXPR_FORMAT virtual bool
        _M_discarding() const
        { return false; }
  
*************** namespace __format
*** 3421,3427 ****
    template<typename _CharT>
      class _Fixedbuf_sink final : public _Sink<_CharT>
      {
!       void
        _M_overflow() override
        {
  	__glibcxx_assert(false);
--- 3487,3493 ----
    template<typename _CharT>
      class _Fixedbuf_sink final : public _Sink<_CharT>
      {
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_overflow() override
        {
  	__glibcxx_assert(false);
*************** namespace __format
*** 3469,3475 ****
        _Seq _M_seq;
      protected:
        // Transfer buffer contents to the sequence, so buffer can be refilled.
!       void
        _M_overflow() override
        {
  	auto __s = this->_M_used();
--- 3535,3541 ----
        _Seq _M_seq;
      protected:
        // Transfer buffer contents to the sequence, so buffer can be refilled.
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_overflow() override
        {
  	auto __s = this->_M_used();
*************** namespace __format
*** 3488,3494 ****
  	this->_M_rewind();
        }
  
!       typename _Sink<_CharT>::_Reservation
        _M_reserve(size_t __n) override
        {
  	// We might already have n characters available in this->_M_unused(),
--- 3554,3560 ----
  	this->_M_rewind();
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT typename _Sink<_CharT>::_Reservation
        _M_reserve(size_t __n) override
        {
  	// We might already have n characters available in this->_M_unused(),
*************** namespace __format
*** 3524,3530 ****
  	  return _Sink<_CharT>::_M_reserve(__n);
        }
  
!       void
        _M_bump(size_t __n) override
        {
  	if constexpr (__is_specialization_of<_Seq, basic_string>
--- 3590,3596 ----
  	  return _Sink<_CharT>::_M_reserve(__n);
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_bump(size_t __n) override
        {
  	if constexpr (__is_specialization_of<_Seq, basic_string>
*************** namespace __format
*** 3539,3545 ****
  	  }
        }
  
!       void _M_trim(span<const _CharT> __s)
  	requires __is_specialization_of<_Seq, basic_string>
        {
  	_GLIBCXX_DEBUG_ASSERT(__s.data() == this->_M_buf
--- 3605,3612 ----
  	  }
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
!       _M_trim(span<const _CharT> __s)
  	requires __is_specialization_of<_Seq, basic_string>
        {
  	_GLIBCXX_DEBUG_ASSERT(__s.data() == this->_M_buf
*************** namespace __format
*** 3555,3570 ****
        // to _M_buf if it overflows? Or even do that for all unused capacity?
  
        [[__gnu__::__always_inline__]]
        _Seq_sink() noexcept(is_nothrow_default_constructible_v<_Seq>)
        { }
  
        _Seq_sink(_Seq&& __s) noexcept(is_nothrow_move_constructible_v<_Seq>)
        : _M_seq(std::move(__s))
        { }
  
        using _Sink<_CharT>::out;
  
!       _Seq
        get() &&
        {
  	if (this->_M_used().size() != 0)
--- 3622,3639 ----
        // to _M_buf if it overflows? Or even do that for all unused capacity?
  
        [[__gnu__::__always_inline__]]
+       _GLIBCXX_CONSTEXPR_FORMAT
        _Seq_sink() noexcept(is_nothrow_default_constructible_v<_Seq>)
        { }
  
+       _GLIBCXX_CONSTEXPR_FORMAT
        _Seq_sink(_Seq&& __s) noexcept(is_nothrow_move_constructible_v<_Seq>)
        : _M_seq(std::move(__s))
        { }
  
        using _Sink<_CharT>::out;
  
!       _GLIBCXX_CONSTEXPR_FORMAT _Seq
        get() &&
        {
  	if (this->_M_used().size() != 0)
*************** namespace __format
*** 3574,3580 ****
  
        // A writable span that views everything written to the sink.
        // Will be either a view over _M_seq or the used part of _M_buf.
!       span<_CharT>
        _M_span()
        {
  	auto __s = this->_M_used();
--- 3643,3649 ----
  
        // A writable span that views everything written to the sink.
        // Will be either a view over _M_seq or the used part of _M_buf.
!       _GLIBCXX_CONSTEXPR_FORMAT span<_CharT>
        _M_span()
        {
  	auto __s = this->_M_used();
*************** namespace __format
*** 3587,3593 ****
  	return __s;
        }
  
!       basic_string_view<_CharT>
        view()
        {
  	auto __span = _M_span();
--- 3656,3662 ----
  	return __s;
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT basic_string_view<_CharT>
        view()
        {
  	auto __span = _M_span();
*************** namespace __format
*** 3612,3618 ****
      protected:
        size_t _M_count = 0;
  
!       void
        _M_overflow() override
        {
  	auto __s = this->_M_used();
--- 3681,3687 ----
      protected:
        size_t _M_count = 0;
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_overflow() override
        {
  	auto __s = this->_M_used();
*************** namespace __format
*** 3632,3638 ****
  	_M_count += __s.size();
        }
  
!       bool
        _M_discarding() const override
        {
  	// format_to_n return total number of characters, that would be written,
--- 3701,3707 ----
  	_M_count += __s.size();
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT bool
        _M_discarding() const override
        {
  	// format_to_n return total number of characters, that would be written,
*************** namespace __format
*** 3642,3655 ****
  
      public:
        [[__gnu__::__always_inline__]]
!       explicit
        _Iter_sink(_OutIter __out, iter_difference_t<_OutIter> __max = -1)
        : _M_out(std::move(__out)), _M_max(__max)
        { }
  
        using _Sink<_CharT>::out;
  
!       format_to_n_result<_OutIter>
        _M_finish() &&
        {
  	if (this->_M_used().size() != 0)
--- 3711,3724 ----
  
      public:
        [[__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT explicit
        _Iter_sink(_OutIter __out, iter_difference_t<_OutIter> __max = -1)
        : _M_out(std::move(__out)), _M_max(__max)
        { }
  
        using _Sink<_CharT>::out;
  
!       _GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_OutIter>
        _M_finish() &&
        {
  	if (this->_M_used().size() != 0)
*************** namespace __format
*** 3678,3684 ****
        _CharT _M_buf[64]; // Write here after outputting _M_max characters.
  
      protected:
!       void
        _M_overflow() override
        {
  	if (this->_M_unused().size() != 0)
--- 3747,3753 ----
        _CharT _M_buf[64]; // Write here after outputting _M_max characters.
  
      protected:
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_overflow() override
        {
  	if (this->_M_unused().size() != 0)
*************** namespace __format
*** 3702,3708 ****
  	  }
        }
  
!       bool
        _M_discarding() const override
        {
  	// format_to_n return total number of characters, that would be written,
--- 3771,3777 ----
  	  }
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT bool
        _M_discarding() const override
        {
  	// format_to_n return total number of characters, that would be written,
*************** namespace __format
*** 3710,3716 ****
  	return false;
        }
  
!       typename _Sink<_CharT>::_Reservation
        _M_reserve(size_t __n) final
        {
  	auto __avail = this->_M_unused();
--- 3779,3785 ----
  	return false;
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT typename _Sink<_CharT>::_Reservation
        _M_reserve(size_t __n) final
        {
  	auto __avail = this->_M_unused();
*************** namespace __format
*** 3727,3733 ****
  
      private:
        template<typename _IterDifference>
! 	static size_t
  	_S_trim_max(_IterDifference __max)
  	{
  	  if (__max < 0)
--- 3796,3802 ----
  
      private:
        template<typename _IterDifference>
! 	static _GLIBCXX_CONSTEXPR_FORMAT size_t
  	_S_trim_max(_IterDifference __max)
  	{
  	  if (__max < 0)
*************** namespace __format
*** 3740,3746 ****
  	}
  
        [[__gnu__::__always_inline__]]
!       void
        _M_rebuf(_CharT* __ptr, size_t __total, size_t __inuse = 0)
        {
  	std::span<_CharT> __span(__ptr, __total);
--- 3809,3815 ----
  	}
  
        [[__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_rebuf(_CharT* __ptr, size_t __total, size_t __inuse = 0)
        {
  	std::span<_CharT> __span(__ptr, __total);
*************** namespace __format
*** 3748,3754 ****
        }
  
      public:
!       explicit
        _Ptr_sink(_CharT* __ptr, size_t __n = _S_no_limit) noexcept
        : _Sink<_CharT>(_M_buf), _M_max(__n)
        {
--- 3817,3823 ----
        }
  
      public:
!       _GLIBCXX_CONSTEXPR_FORMAT explicit
        _Ptr_sink(_CharT* __ptr, size_t __n = _S_no_limit) noexcept
        : _Sink<_CharT>(_M_buf), _M_max(__n)
        {
*************** namespace __format
*** 3773,3785 ****
        }
  
        template<contiguous_iterator _OutIter>
! 	explicit
  	_Ptr_sink(_OutIter __out, iter_difference_t<_OutIter> __n = -1)
  	: _Ptr_sink(std::to_address(__out), _S_trim_max(__n))
  	{ }
  
        template<contiguous_iterator _OutIter>
! 	format_to_n_result<_OutIter>
  	_M_finish(_OutIter __first) const
  	{
  	  auto __s = this->_M_used();
--- 3842,3854 ----
        }
  
        template<contiguous_iterator _OutIter>
! 	_GLIBCXX_CONSTEXPR_FORMAT explicit
  	_Ptr_sink(_OutIter __out, iter_difference_t<_OutIter> __n = -1)
  	: _Ptr_sink(std::to_address(__out), _S_trim_max(__n))
  	{ }
  
        template<contiguous_iterator _OutIter>
! 	_GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_OutIter>
  	_M_finish(_OutIter __first) const
  	{
  	  auto __s = this->_M_used();
*************** namespace __format
*** 3821,3832 ****
        size_t _M_printwidth;
  
        [[__gnu__::__always_inline__]]
!       bool
        _M_ignoring() const
        { return _M_printwidth >= _M_maxwidth; }
  
        [[__gnu__::__always_inline__]]
!       bool
        _M_buffering() const
        {
  	if (_M_printwidth < _M_padwidth)
--- 3890,3901 ----
        size_t _M_printwidth;
  
        [[__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT bool
        _M_ignoring() const
        { return _M_printwidth >= _M_maxwidth; }
  
        [[__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT bool
        _M_buffering() const
        {
  	if (_M_printwidth < _M_padwidth)
*************** namespace __format
*** 3836,3842 ****
  	return false;
        }
  
!       void
        _M_sync_discarding()
        {
  	if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
--- 3905,3911 ----
  	return false;
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_sync_discarding()
        {
  	if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
*************** namespace __format
*** 3844,3850 ****
  	    _M_maxwidth = _M_printwidth;
        }
  
!       void
        _M_flush()
        {
  	span<_CharT> __new = this->_M_used();
--- 3913,3919 ----
  	    _M_maxwidth = _M_printwidth;
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_flush()
        {
  	span<_CharT> __new = this->_M_used();
*************** namespace __format
*** 3854,3860 ****
  	this->_M_rewind();
        }
  
!       bool
        _M_force_update()
        {
  	auto __str = this->view();
--- 3923,3929 ----
  	this->_M_rewind();
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT bool
        _M_force_update()
        {
  	auto __str = this->view();
*************** namespace __format
*** 3882,3888 ****
  	return false;
        }
  
!       bool
        _M_update(size_t __new)
        {
  	_M_printwidth += __new;
--- 3951,3957 ----
  	return false;
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT bool
        _M_update(size_t __new)
        {
  	_M_printwidth += __new;
*************** namespace __format
*** 3892,3898 ****
  	return true;
        }
  
!       void
        _M_overflow() override
        {
  	// Ignore characters in buffer, and override it.
--- 3961,3967 ----
  	return true;
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_overflow() override
        {
  	// Ignore characters in buffer, and override it.
*************** namespace __format
*** 3907,3917 ****
  	  _Str_sink<_CharT>::_M_overflow();
        }
  
!       bool
        _M_discarding() const override
        { return _M_ignoring(); }
  
!       typename _Sink<_CharT>::_Reservation
        _M_reserve(size_t __n) override
        {
  	// Ignore characters in buffer, if any.
--- 3976,3986 ----
  	  _Str_sink<_CharT>::_M_overflow();
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT bool
        _M_discarding() const override
        { return _M_ignoring(); }
  
!       _GLIBCXX_CONSTEXPR_FORMAT typename _Sink<_CharT>::_Reservation
        _M_reserve(size_t __n) override
        {
  	// Ignore characters in buffer, if any.
*************** namespace __format
*** 3930,3936 ****
  	return _Sink<_CharT>::_M_reserve(__n);
        }
  
!       void
        _M_bump(size_t __n) override
        {
  	// Ignore the written characters.
--- 3999,4005 ----
  	return _Sink<_CharT>::_M_reserve(__n);
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_bump(size_t __n) override
        {
  	// Ignore the written characters.
*************** namespace __format
*** 3945,3963 ****
  
      public:
        [[__gnu__::__always_inline__]]
!       explicit
        _Padding_sink(_Out __out, size_t __padwidth, size_t __maxwidth)
        : _M_padwidth(__padwidth), _M_maxwidth(__maxwidth),
  	_M_out(std::move(__out)), _M_printwidth(0)
        { _M_sync_discarding(); }
  
        [[__gnu__::__always_inline__]]
!       explicit
        _Padding_sink(_Out __out, size_t __padwidth)
        : _Padding_sink(std::move(__out), __padwidth, (size_t)-1)
        { }
  
!       _Out
        _M_finish(_Align __align, char32_t __fill_char)
        {
  	// Handle any characters in the buffer.
--- 4014,4032 ----
  
      public:
        [[__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT explicit
        _Padding_sink(_Out __out, size_t __padwidth, size_t __maxwidth)
        : _M_padwidth(__padwidth), _M_maxwidth(__maxwidth),
  	_M_out(std::move(__out)), _M_printwidth(0)
        { _M_sync_discarding(); }
  
        [[__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT explicit
        _Padding_sink(_Out __out, size_t __padwidth)
        : _Padding_sink(std::move(__out), __padwidth, (size_t)-1)
        { }
  
!       _GLIBCXX_CONSTEXPR_FORMAT _Out
        _M_finish(_Align __align, char32_t __fill_char)
        {
  	// Handle any characters in the buffer.
*************** namespace __format
*** 3996,4009 ****
        unsigned _M_prev_escape : 1;
        unsigned _M_out_discards : 1;
  
!       void
        _M_sync_discarding()
        {
  	if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
  	  _M_out_discards = _M_out._M_discarding();
        }
  
!       void
        _M_write()
        {
  	span<_CharT> __bytes = this->_M_used();
--- 4065,4078 ----
        unsigned _M_prev_escape : 1;
        unsigned _M_out_discards : 1;
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_sync_discarding()
        {
  	if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
  	  _M_out_discards = _M_out._M_discarding();
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_write()
        {
  	span<_CharT> __bytes = this->_M_used();
*************** namespace __format
*** 4029,4035 ****
  	_M_sync_discarding();
        }
  
!       void
        _M_overflow() override
        {
  	if (_M_out_discards)
--- 4098,4104 ----
  	_M_sync_discarding();
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
        _M_overflow() override
        {
  	if (_M_out_discards)
*************** namespace __format
*** 4038,4050 ****
  	  _M_write();
        }
  
!       bool
        _M_discarding() const override
        { return _M_out_discards; }
  
      public:
        [[__gnu__::__always_inline__]]
!       explicit
        _Escaping_sink(_Out __out, _Term_char __term)
        : _M_out(std::move(__out)), _M_term(__term),
  	_M_prev_escape(true), _M_out_discards(false)
--- 4107,4119 ----
  	  _M_write();
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT bool
        _M_discarding() const override
        { return _M_out_discards; }
  
      public:
        [[__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT explicit
        _Escaping_sink(_Out __out, _Term_char __term)
        : _M_out(std::move(__out)), _M_term(__term),
  	_M_prev_escape(true), _M_out_discards(false)
*************** namespace __format
*** 4053,4059 ****
  	_M_sync_discarding();
        }
  
!       _Out
        _M_finish()
        {
  	if (_M_out_discards)
--- 4122,4128 ----
  	_M_sync_discarding();
        }
  
!       _GLIBCXX_CONSTEXPR_FORMAT _Out
        _M_finish()
        {
  	if (_M_out_discards)
*************** namespace __format
*** 4105,4111 ****
  			      const _Tp, _Tp>;
  
  	template<typename _Tq>
! 	  static void
  	  _S_format(basic_format_parse_context<_CharT>& __parse_ctx,
  		    _Context& __format_ctx, const void* __ptr)
  	  {
--- 4174,4180 ----
  			      const _Tp, _Tp>;
  
  	template<typename _Tq>
! 	  static _GLIBCXX_CONSTEXPR_FORMAT void
  	  _S_format(basic_format_parse_context<_CharT>& __parse_ctx,
  		    _Context& __format_ctx, const void* __ptr)
  	  {
*************** namespace __format
*** 4118,4124 ****
  
  	template<typename _Tp>
  	  requires (!is_same_v<remove_cv_t<_Tp>, handle>)
! 	  explicit
  	  handle(_Tp& __val) noexcept
  	  : _M_ptr(__builtin_addressof(__val))
  	  , _M_func(&_S_format<__maybe_const_t<_Tp>>)
--- 4187,4193 ----
  
  	template<typename _Tp>
  	  requires (!is_same_v<remove_cv_t<_Tp>, handle>)
! 	  explicit _GLIBCXX_CONSTEXPR_FORMAT
  	  handle(_Tp& __val) noexcept
  	  : _M_ptr(__builtin_addressof(__val))
  	  , _M_func(&_S_format<__maybe_const_t<_Tp>>)
*************** namespace __format
*** 4131,4137 ****
  	handle& operator=(const handle&) = default;
  
  	[[__gnu__::__always_inline__]]
! 	void
  	format(basic_format_parse_context<_CharT>& __pc, _Context& __fc) const
  	{ _M_func(__pc, __fc, this->_M_ptr); }
  
--- 4200,4206 ----
  	handle& operator=(const handle&) = default;
  
  	[[__gnu__::__always_inline__]]
! 	void _GLIBCXX_CONSTEXPR_FORMAT
  	format(basic_format_parse_context<_CharT>& __pc, _Context& __fc) const
  	{ _M_func(__pc, __fc, this->_M_ptr); }
  
*************** namespace __format
*** 4183,4192 ****
--- 4252,4263 ----
        };
  
        [[__gnu__::__always_inline__]]
+       _GLIBCXX_CONSTEXPR_FORMAT
        _Arg_value() : _M_none() { }
  
  #if 0
        template<typename _Tp>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	_Arg_value(in_place_type_t<_Tp>, _Tp __val)
  	{ _S_get<_Tp>() = __val; }
  #endif
*************** namespace __format
*** 4195,4201 ****
        // Value of second argument (if provided), is assigned to that member.
        template<typename _Tp, typename _Self, typename... _Value>
  	[[__gnu__::__always_inline__]]
! 	static auto&
  	_S_access(_Self& __u, _Value... __value) noexcept
  	{
  	  static_assert(sizeof...(_Value) <= 1);
--- 4266,4272 ----
        // Value of second argument (if provided), is assigned to that member.
        template<typename _Tp, typename _Self, typename... _Value>
  	[[__gnu__::__always_inline__]]
! 	static _GLIBCXX_CONSTEXPR_FORMAT auto&
  	_S_access(_Self& __u, _Value... __value) noexcept
  	{
  	  static_assert(sizeof...(_Value) <= 1);
*************** namespace __format
*** 4259,4281 ****
  	  else if constexpr (is_same_v<_Tp, handle>)
  	    return __u._M_handle;
  	  // Otherwise, ill-formed.
  	}
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
! 	auto&
  	_M_get() noexcept
  	{ return _S_access<_Tp>(*this); }
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
! 	const auto&
  	_M_get() const noexcept
  	{ return _S_access<_Tp>(*this); }
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
! 	void
  	_M_set(_Tp __v) noexcept
  	{
  	  // Explicitly construct types without trivial default constructor.
--- 4330,4353 ----
  	  else if constexpr (is_same_v<_Tp, handle>)
  	    return __u._M_handle;
  	  // Otherwise, ill-formed.
+ 	  __builtin_unreachable();
  	}
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
! 	_GLIBCXX_CONSTEXPR_FORMAT auto&
  	_M_get() noexcept
  	{ return _S_access<_Tp>(*this); }
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
! 	_GLIBCXX_CONSTEXPR_FORMAT const auto&
  	_M_get() const noexcept
  	{ return _S_access<_Tp>(*this); }
  
        template<typename _Tp>
  	[[__gnu__::__always_inline__]]
! 	_GLIBCXX_CONSTEXPR_FORMAT void
  	_M_set(_Tp __v) noexcept
  	{
  	  // Explicitly construct types without trivial default constructor.
*************** namespace __format
*** 4295,4301 ****
      class _Arg_store;
  
    template<typename _Visitor, typename _Ctx>
!     decltype(auto) __visit_format_arg(_Visitor&&, basic_format_arg<_Ctx>);
  
    template<typename _Ch, typename _Tp>
      consteval _Arg_t
--- 4367,4374 ----
      class _Arg_store;
  
    template<typename _Visitor, typename _Ctx>
!     _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
!     __visit_format_arg(_Visitor&&, basic_format_arg<_Ctx>);
  
    template<typename _Ch, typename _Tp>
      consteval _Arg_t
*************** namespace __format
*** 4312,4331 ****
        using handle = __format::_Arg_value<_Context>::handle;
  
        [[__gnu__::__always_inline__]]
        basic_format_arg() noexcept : _M_type(__format::_Arg_none) { }
  
        [[nodiscard,__gnu__::__always_inline__]]
!       explicit operator bool() const noexcept
        { return _M_type != __format::_Arg_none; }
  
  #if __cpp_lib_format >= 202306L // >= C++26
        template<typename _Visitor>
! 	decltype(auto)
  	visit(this basic_format_arg __arg, _Visitor&& __vis)
  	{ return __arg._M_visit_user(std::forward<_Visitor>(__vis), __arg._M_type); }
  
        template<typename _Res, typename _Visitor>
! 	_Res
  	visit(this basic_format_arg __arg, _Visitor&& __vis)
  	{ return __arg._M_visit_user(std::forward<_Visitor>(__vis), __arg._M_type); }
  #endif
--- 4385,4405 ----
        using handle = __format::_Arg_value<_Context>::handle;
  
        [[__gnu__::__always_inline__]]
+       _GLIBCXX_CONSTEXPR_FORMAT
        basic_format_arg() noexcept : _M_type(__format::_Arg_none) { }
  
        [[nodiscard,__gnu__::__always_inline__]]
!       explicit _GLIBCXX_CONSTEXPR_FORMAT operator bool() const noexcept
        { return _M_type != __format::_Arg_none; }
  
  #if __cpp_lib_format >= 202306L // >= C++26
        template<typename _Visitor>
! 	_GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
  	visit(this basic_format_arg __arg, _Visitor&& __vis)
  	{ return __arg._M_visit_user(std::forward<_Visitor>(__vis), __arg._M_type); }
  
        template<typename _Res, typename _Visitor>
! 	_GLIBCXX_CONSTEXPR_FORMAT _Res
  	visit(this basic_format_arg __arg, _Visitor&& __vis)
  	{ return __arg._M_visit_user(std::forward<_Visitor>(__vis), __arg._M_type); }
  #endif
*************** namespace __format
*** 4502,4508 ****
  	}
  
        template<typename _Tp>
! 	void
  	_M_set(_Tp __v) noexcept
  	{
  	  _M_type = _S_to_enum<_Tp>();
--- 4576,4582 ----
  	}
  
        template<typename _Tp>
! 	_GLIBCXX_CONSTEXPR_FORMAT void
  	_M_set(_Tp __v) noexcept
  	{
  	  _M_type = _S_to_enum<_Tp>();
*************** namespace __format
*** 4511,4517 ****
  
        template<typename _Tp>
  	requires __format::__formattable_with<_Tp, _Context>
! 	explicit
  	basic_format_arg(_Tp& __v) noexcept
  	{
  	  using _Td = _Normalize<_Tp>;
--- 4585,4591 ----
  
        template<typename _Tp>
  	requires __format::__formattable_with<_Tp, _Context>
! 	_GLIBCXX_CONSTEXPR_FORMAT explicit
  	basic_format_arg(_Tp& __v) noexcept
  	{
  	  using _Td = _Normalize<_Tp>;
*************** namespace __format
*** 4525,4539 ****
  	}
  
        template<typename _Ctx, typename... _Argz>
! 	friend auto
  	make_format_args(_Argz&...) noexcept;
  
        template<typename _Visitor, typename _Ctx>
! 	friend decltype(auto)
  	visit_format_arg(_Visitor&& __vis, basic_format_arg<_Ctx>);
  
        template<typename _Visitor, typename _Ctx>
! 	friend decltype(auto)
  	__format::__visit_format_arg(_Visitor&&, basic_format_arg<_Ctx>);
  
        template<typename _Ch, typename _Tp>
--- 4599,4613 ----
  	}
  
        template<typename _Ctx, typename... _Argz>
! 	friend _GLIBCXX_CONSTEXPR_FORMAT auto
  	make_format_args(_Argz&...) noexcept;
  
        template<typename _Visitor, typename _Ctx>
! 	friend _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
  	visit_format_arg(_Visitor&& __vis, basic_format_arg<_Ctx>);
  
        template<typename _Visitor, typename _Ctx>
! 	friend _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
  	__format::__visit_format_arg(_Visitor&&, basic_format_arg<_Ctx>);
  
        template<typename _Ch, typename _Tp>
*************** namespace __format
*** 4541,4547 ****
  	__format::__to_arg_t_enum() noexcept;
  
        template<typename _Visitor>
! 	decltype(auto)
  	_M_visit(_Visitor&& __vis, __format::_Arg_t __type)
  	{
  	  using namespace __format;
--- 4615,4621 ----
  	__format::__to_arg_t_enum() noexcept;
  
        template<typename _Visitor>
! 	_GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
  	_M_visit(_Visitor&& __vis, __format::_Arg_t __type)
  	{
  	  using namespace __format;
*************** namespace __format
*** 4616,4622 ****
  	}
  
        template<typename _Visitor>
! 	decltype(auto)
  	_M_visit_user(_Visitor&& __vis, __format::_Arg_t __type)
  	{
  	  return _M_visit([&__vis]<typename _Tp>(_Tp& __val) -> decltype(auto)
--- 4690,4696 ----
  	}
  
        template<typename _Visitor>
! 	_GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
  	_M_visit_user(_Visitor&& __vis, __format::_Arg_t __type)
  	{
  	  return _M_visit([&__vis]<typename _Tp>(_Tp& __val) -> decltype(auto)
*************** namespace __format
*** 4640,4646 ****
  
    template<typename _Visitor, typename _Context>
      _GLIBCXX26_DEPRECATED_SUGGEST("std::basic_format_arg::visit")
!     inline decltype(auto)
      visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg)
      {
        return __arg._M_visit_user(std::forward<_Visitor>(__vis), __arg._M_type);
--- 4714,4720 ----
  
    template<typename _Visitor, typename _Context>
      _GLIBCXX26_DEPRECATED_SUGGEST("std::basic_format_arg::visit")
!     inline _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
      visit_format_arg(_Visitor&& __vis, basic_format_arg<_Context> __arg)
      {
        return __arg._M_visit_user(std::forward<_Visitor>(__vis), __arg._M_type);
*************** namespace __format
*** 4650,4656 ****
  namespace __format
  {
    template<typename _Visitor, typename _Ctx>
!     inline decltype(auto)
      __visit_format_arg(_Visitor&& __vis, basic_format_arg<_Ctx> __arg)
      {
        return __arg._M_visit(std::forward<_Visitor>(__vis), __arg._M_type);
--- 4724,4730 ----
  namespace __format
  {
    template<typename _Visitor, typename _Ctx>
!     inline _GLIBCXX_CONSTEXPR_FORMAT decltype(auto)
      __visit_format_arg(_Visitor&& __vis, basic_format_arg<_Ctx> __arg)
      {
        return __arg._M_visit(std::forward<_Visitor>(__vis), __arg._M_type);
*************** namespace __format
*** 4659,4665 ****
    struct _WidthPrecVisitor
    {
      template<typename _Tp>
!       size_t
        operator()(_Tp& __arg) const
        {
  	if constexpr (is_same_v<_Tp, monostate>)
--- 4733,4739 ----
    struct _WidthPrecVisitor
    {
      template<typename _Tp>
!       _GLIBCXX_CONSTEXPR_FORMAT size_t
        operator()(_Tp& __arg) const
        {
  	if constexpr (is_same_v<_Tp, monostate>)
*************** namespace __format
*** 4685,4691 ****
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
    template<typename _Context>
!     inline size_t
      __int_from_arg(const basic_format_arg<_Context>& __arg)
      { return __format::__visit_format_arg(_WidthPrecVisitor(), __arg); }
  
--- 4759,4765 ----
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
    template<typename _Context>
!     inline _GLIBCXX_CONSTEXPR_FORMAT size_t
      __int_from_arg(const basic_format_arg<_Context>& __arg)
      { return __format::__visit_format_arg(_WidthPrecVisitor(), __arg); }
  
*************** namespace __format
*** 4733,4743 ****
  	const _Format_arg* _M_args;       // Active when _M_packed_size == 0
        };
  
!       size_t
        _M_size() const noexcept
        { return _M_packed_size ? _M_packed_size : _M_unpacked_size; }
  
!       typename __format::_Arg_t
        _M_type(size_t __i) const noexcept
        {
  	uint64_t __t = _M_unpacked_size >> (__i * _S_packed_type_bits);
--- 4807,4817 ----
  	const _Format_arg* _M_args;       // Active when _M_packed_size == 0
        };
  
!       _GLIBCXX_CONSTEXPR_FORMAT size_t
        _M_size() const noexcept
        { return _M_packed_size ? _M_packed_size : _M_unpacked_size; }
  
!       _GLIBCXX_CONSTEXPR_FORMAT typename __format::_Arg_t
        _M_type(size_t __i) const noexcept
        {
  	uint64_t __t = _M_unpacked_size >> (__i * _S_packed_type_bits);
*************** namespace __format
*** 4745,4751 ****
        }
  
        template<typename _Ctx, typename... _Args>
! 	friend auto
  	make_format_args(_Args&...) noexcept;
  
        // An array of _Arg_t enums corresponding to _Args...
--- 4819,4825 ----
        }
  
        template<typename _Ctx, typename... _Args>
! 	friend _GLIBCXX_CONSTEXPR_FORMAT auto
  	make_format_args(_Args&...) noexcept;
  
        // An array of _Arg_t enums corresponding to _Args...
*************** namespace __format
*** 4756,4765 ****
  
      public:
        template<typename... _Args>
  	basic_format_args(const _Store<_Args...>& __store) noexcept;
  
        [[nodiscard,__gnu__::__always_inline__]]
!       basic_format_arg<_Context>
        get(size_t __i) const noexcept
        {
  	basic_format_arg<_Context> __arg;
--- 4830,4840 ----
  
      public:
        template<typename... _Args>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	basic_format_args(const _Store<_Args...>& __store) noexcept;
  
        [[nodiscard,__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT basic_format_arg<_Context>
        get(size_t __i) const noexcept
        {
  	basic_format_arg<_Context> __arg;
*************** namespace __format
*** 4781,4787 ****
        -> basic_format_args<_Context>;
  
    template<typename _Context, typename... _Args>
!     auto
      make_format_args(_Args&... __fmt_args) noexcept;
  
    // An array of type-erased formatting arguments.
--- 4856,4862 ----
        -> basic_format_args<_Context>;
  
    template<typename _Context, typename... _Args>
!     _GLIBCXX_CONSTEXPR_FORMAT auto
      make_format_args(_Args&... __fmt_args) noexcept;
  
    // An array of type-erased formatting arguments.
*************** namespace __format
*** 4791,4797 ****
        friend std::basic_format_args<_Context>;
  
        template<typename _Ctx, typename... _Argz>
! 	friend auto std::
  #if _GLIBCXX_INLINE_VERSION
  	__8:: // Needed for PR c++/59256
  #endif
--- 4866,4872 ----
        friend std::basic_format_args<_Context>;
  
        template<typename _Ctx, typename... _Argz>
! 	friend _GLIBCXX_CONSTEXPR_FORMAT auto std::
  #if _GLIBCXX_INLINE_VERSION
  	__8:: // Needed for PR c++/59256
  #endif
*************** namespace __format
*** 4810,4816 ****
        _Element_t _M_args[sizeof...(_Args)];
  
        template<typename _Tp>
! 	static _Element_t
  	_S_make_elt(_Tp& __v)
  	{
  	  using _Tq = remove_const_t<_Tp>;
--- 4885,4891 ----
        _Element_t _M_args[sizeof...(_Args)];
  
        template<typename _Tp>
! 	static _GLIBCXX_CONSTEXPR_FORMAT _Element_t
  	_S_make_elt(_Tp& __v)
  	{
  	  using _Tq = remove_const_t<_Tp>;
*************** namespace __format
*** 4836,4841 ****
--- 4911,4917 ----
        template<typename... _Tp>
  	requires (sizeof...(_Tp) == sizeof...(_Args))
  	[[__gnu__::__always_inline__]]
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	_Arg_store(_Tp&... __a) noexcept
  	: _M_args{_S_make_elt(__a)...}
  	{ }
*************** namespace __format
*** 4847,4853 ****
  
    template<typename _Context>
      template<typename... _Args>
!       inline
        basic_format_args<_Context>::
        basic_format_args(const _Store<_Args...>& __store) noexcept
        {
--- 4923,4929 ----
  
    template<typename _Context>
      template<typename... _Args>
!       inline _GLIBCXX_CONSTEXPR_FORMAT
        basic_format_args<_Context>::
        basic_format_args(const _Store<_Args...>& __store) noexcept
        {
*************** namespace __format
*** 4881,4887 ****
    /// Capture formatting arguments for use by `std::vformat`.
    template<typename _Context = format_context, typename... _Args>
      [[nodiscard,__gnu__::__always_inline__]]
!     inline auto
      make_format_args(_Args&... __fmt_args) noexcept
      {
        using _Fmt_arg = basic_format_arg<_Context>;
--- 4957,4963 ----
    /// Capture formatting arguments for use by `std::vformat`.
    template<typename _Context = format_context, typename... _Args>
      [[nodiscard,__gnu__::__always_inline__]]
!     inline _GLIBCXX_CONSTEXPR_FORMAT auto
      make_format_args(_Args&... __fmt_args) noexcept
      {
        using _Fmt_arg = basic_format_arg<_Context>;
*************** namespace __format
*** 4894,4900 ****
    /// Capture formatting arguments for use by `std::vformat` (for wide output).
    template<typename... _Args>
      [[nodiscard,__gnu__::__always_inline__]]
!     inline auto
      make_wformat_args(_Args&... __args) noexcept
      { return std::make_format_args<wformat_context>(__args...); }
  #endif
--- 4970,4976 ----
    /// Capture formatting arguments for use by `std::vformat` (for wide output).
    template<typename... _Args>
      [[nodiscard,__gnu__::__always_inline__]]
!     inline _GLIBCXX_CONSTEXPR_FORMAT auto
      make_wformat_args(_Args&... __args) noexcept
      { return std::make_format_args<wformat_context>(__args...); }
  #endif
*************** namespace __format
*** 4903,4909 ****
  namespace __format
  {
    template<typename _Out, typename _CharT, typename _Context>
!     _Out
      __do_vformat_to(_Out, basic_string_view<_CharT>,
  		    const basic_format_args<_Context>&,
  		    const locale* = nullptr);
--- 4979,4985 ----
  namespace __format
  {
    template<typename _Out, typename _CharT, typename _Context>
!     _GLIBCXX_CONSTEXPR_FORMAT _Out
      __do_vformat_to(_Out, basic_string_view<_CharT>,
  		    const basic_format_args<_Context>&,
  		    const locale* = nullptr);
*************** namespace __format
*** 4935,4945 ****
--- 5011,5023 ----
        _Out _M_out;
        __format::_Optional_locale _M_loc;
  
+       _GLIBCXX_CONSTEXPR_FORMAT
        basic_format_context(basic_format_args<basic_format_context> __args,
  			   _Out __out)
        : _M_args(__args), _M_out(std::move(__out))
        { }
  
+       _GLIBCXX_CONSTEXPR_FORMAT
        basic_format_context(basic_format_args<basic_format_context> __args,
  			   _Out __out, const std::locale& __loc)
        : _M_args(__args), _M_out(std::move(__out)), _M_loc(__loc)
*************** namespace __format
*** 4952,4958 ****
        basic_format_context& operator=(const basic_format_context&) = delete;
  
        template<typename _Out2, typename _CharT2, typename _Context2>
! 	friend _Out2
  	__format::__do_vformat_to(_Out2, basic_string_view<_CharT2>,
  				  const basic_format_args<_Context2>&,
  				  const locale*);
--- 5030,5036 ----
        basic_format_context& operator=(const basic_format_context&) = delete;
  
        template<typename _Out2, typename _CharT2, typename _Context2>
! 	friend _GLIBCXX_CONSTEXPR_FORMAT _Out2
  	__format::__do_vformat_to(_Out2, basic_string_view<_CharT2>,
  				  const basic_format_args<_Context2>&,
  				  const locale*);
*************** namespace __format
*** 4968,4974 ****
  	using formatter_type = formatter<_Tp, _CharT>;
  
        [[nodiscard]]
!       basic_format_arg<basic_format_context>
        arg(size_t __id) const noexcept
        { return _M_args.get(__id); }
  
--- 5046,5052 ----
  	using formatter_type = formatter<_Tp, _CharT>;
  
        [[nodiscard]]
!       _GLIBCXX_CONSTEXPR_FORMAT basic_format_arg<basic_format_context>
        arg(size_t __id) const noexcept
        { return _M_args.get(__id); }
  
*************** namespace __format
*** 4976,4984 ****
        std::locale locale() { return _M_loc.value(); }
  
        [[nodiscard]]
!       iterator out() { return std::move(_M_out); }
  
!       void advance_to(iterator __it) { _M_out = std::move(__it); }
      };
  
  
--- 5054,5064 ----
        std::locale locale() { return _M_loc.value(); }
  
        [[nodiscard]]
!       _GLIBCXX_CONSTEXPR_FORMAT iterator
!       out() { return std::move(_M_out); }
  
!       _GLIBCXX_CONSTEXPR_FORMAT void
!       advance_to(iterator __it) { _M_out = std::move(__it); }
      };
  
  
*************** namespace __format
*** 5117,5122 ****
--- 5197,5203 ----
      class _Formatting_scanner : public _Scanner<_CharT>
      {
      public:
+       _GLIBCXX_CONSTEXPR_FORMAT
        _Formatting_scanner(basic_format_context<_Out, _CharT>& __fc,
  			  basic_string_view<_CharT> __str)
        : _Scanner<_CharT>(__str), _M_fc(__fc)
*************** namespace __format
*** 5224,5230 ****
      };
  
    template<typename _CharT, unsigned = __unicode::__literal_encoding_is_unicode<_CharT>()>
!     _Sink_iter<_CharT>
      __do_vformat_to(_Sink_iter<_CharT> __out, basic_string_view<_CharT> __fmt,
  		    __format_context<_CharT>& __ctx)
      {
--- 5305,5311 ----
      };
  
    template<typename _CharT, unsigned = __unicode::__literal_encoding_is_unicode<_CharT>()>
!     _GLIBCXX_CONSTEXPR_FORMAT _Sink_iter<_CharT>
      __do_vformat_to(_Sink_iter<_CharT> __out, basic_string_view<_CharT> __fmt,
  		    __format_context<_CharT>& __ctx)
      {
*************** namespace __format
*** 5241,5247 ****
  		  const char* __chars[] = { "false", "true" };
  		  if (auto __res = __out._M_reserve(__len))
  		    {
! 		      __builtin_memcpy(__res.get(), __chars[__arg], __len);
  		      __res._M_bump(__len);
  		      __done = true;
  		    }
--- 5322,5328 ----
  		  const char* __chars[] = { "false", "true" };
  		  if (auto __res = __out._M_reserve(__len))
  		    {
! 		      ranges::copy_n(__chars[__arg], __len, __res.get());
  		      __res._M_bump(__len);
  		      __done = true;
  		    }
*************** namespace __format
*** 5279,5285 ****
  		  string_view __sv = __arg;
  		  if (auto __res = __out._M_reserve(__sv.size()))
  		    {
! 		      __builtin_memcpy(__res.get(), __sv.data(), __sv.size());
  		      __res._M_bump(__sv.size());
  		      __done = true;
  		    }
--- 5360,5366 ----
  		  string_view __sv = __arg;
  		  if (auto __res = __out._M_reserve(__sv.size()))
  		    {
! 		      ranges::copy(__sv, __res.get());
  		      __res._M_bump(__sv.size());
  		      __done = true;
  		    }
*************** namespace __format
*** 5312,5318 ****
  #endif
  
    template<typename _Out, typename _CharT, typename _Context>
!     inline _Out
      __do_vformat_to(_Out __out, basic_string_view<_CharT> __fmt,
  		    const basic_format_args<_Context>& __args,
  		    const locale* __loc)
--- 5393,5399 ----
  #endif
  
    template<typename _Out, typename _CharT, typename _Context>
!     inline _GLIBCXX_CONSTEXPR_FORMAT _Out
      __do_vformat_to(_Out __out, basic_string_view<_CharT> __fmt,
  		    const basic_format_args<_Context>& __args,
  		    const locale* __loc)
*************** namespace __format
*** 5339,5345 ****
      }
  
    template<typename _Out, typename _CharT>
!     inline format_to_n_result<_Out>
      __do_vformat_to_n(_Out __out, iter_difference_t<_Out> __n,
  		      basic_string_view<_CharT> __fmt,
  		      const type_identity_t<
--- 5420,5426 ----
      }
  
    template<typename _Out, typename _CharT>
!     inline _GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_Out>
      __do_vformat_to_n(_Out __out, iter_difference_t<_Out> __n,
  		      basic_string_view<_CharT> __fmt,
  		      const type_identity_t<
*************** namespace __format
*** 5379,5385 ****
  	if constexpr (sizeof...(_Ts) != 0)
  	  {
  	    using _Parse_ctx = __format::_Scanner<_CharT>::_Parse_context;
! 	    auto __arg = static_cast<_Parse_ctx*>(this)->_M_types[__id];
  	    __format::_Arg_t __types[] = {
  	      __format::__to_arg_t_enum<_CharT, _Ts>()...
  	    };
--- 5460,5471 ----
  	if constexpr (sizeof...(_Ts) != 0)
  	  {
  	    using _Parse_ctx = __format::_Scanner<_CharT>::_Parse_context;
! 	    auto* __args = static_cast<_Parse_ctx*>(this)->_M_types;
! 	    // Formatting scanner, no type check.
! 	    if (!__args)
! 	      return;
! 
! 	    auto __arg = __args[__id];
  	    __format::_Arg_t __types[] = {
  	      __format::__to_arg_t_enum<_CharT, _Ts>()...
  	    };
*************** namespace __format
*** 5397,5403 ****
        requires convertible_to<const _Tp&, basic_string_view<_CharT>>
        consteval
        basic_format_string<_CharT, _Args...>::
!       basic_format_string(const _Tp& __s)
        : _M_str(__s)
        {
  	__format::_Checking_scanner<_CharT, remove_cvref_t<_Args>...>
--- 5483,5489 ----
        requires convertible_to<const _Tp&, basic_string_view<_CharT>>
        consteval
        basic_format_string<_CharT, _Args...>::
!       basic_format_string(const _Tp& __s) noexcept
        : _M_str(__s)
        {
  	__format::_Checking_scanner<_CharT, remove_cvref_t<_Args>...>
*************** namespace __format
*** 5409,5422 ****
  
    template<typename _Out> requires output_iterator<_Out, const char&>
      [[__gnu__::__always_inline__]]
!     inline _Out
      vformat_to(_Out __out, string_view __fmt, format_args __args)
      { return __format::__do_vformat_to(std::move(__out), __fmt, __args); }
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename _Out> requires output_iterator<_Out, const wchar_t&>
      [[__gnu__::__always_inline__]]
!     inline _Out
      vformat_to(_Out __out, wstring_view __fmt, wformat_args __args)
      { return __format::__do_vformat_to(std::move(__out), __fmt, __args); }
  #endif
--- 5495,5508 ----
  
    template<typename _Out> requires output_iterator<_Out, const char&>
      [[__gnu__::__always_inline__]]
!     inline _GLIBCXX_CONSTEXPR_FORMAT _Out
      vformat_to(_Out __out, string_view __fmt, format_args __args)
      { return __format::__do_vformat_to(std::move(__out), __fmt, __args); }
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename _Out> requires output_iterator<_Out, const wchar_t&>
      [[__gnu__::__always_inline__]]
!     inline _GLIBCXX_CONSTEXPR_FORMAT _Out
      vformat_to(_Out __out, wstring_view __fmt, wformat_args __args)
      { return __format::__do_vformat_to(std::move(__out), __fmt, __args); }
  #endif
*************** namespace __format
*** 5442,5448 ****
  #endif
  
    [[nodiscard]]
!   inline string
    vformat(string_view __fmt, format_args __args)
    {
      __format::_Str_sink<char> __buf;
--- 5528,5534 ----
  #endif
  
    [[nodiscard]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT string
    vformat(string_view __fmt, format_args __args)
    {
      __format::_Str_sink<char> __buf;
*************** namespace __format
*** 5452,5458 ****
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    [[nodiscard]]
!   inline wstring
    vformat(wstring_view __fmt, wformat_args __args)
    {
      __format::_Str_sink<wchar_t> __buf;
--- 5538,5544 ----
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    [[nodiscard]]
!   inline _GLIBCXX_CONSTEXPR_FORMAT wstring
    vformat(wstring_view __fmt, wformat_args __args)
    {
      __format::_Str_sink<wchar_t> __buf;
*************** namespace __format
*** 5483,5496 ****
  
    template<typename... _Args>
      [[nodiscard]]
!     inline string
      format(format_string<_Args...> __fmt, _Args&&... __args)
      { return std::vformat(__fmt.get(), std::make_format_args(__args...)); }
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename... _Args>
      [[nodiscard]]
!     inline wstring
      format(wformat_string<_Args...> __fmt, _Args&&... __args)
      { return std::vformat(__fmt.get(), std::make_wformat_args(__args...)); }
  #endif
--- 5569,5582 ----
  
    template<typename... _Args>
      [[nodiscard]]
!     inline _GLIBCXX_CONSTEXPR_FORMAT string
      format(format_string<_Args...> __fmt, _Args&&... __args)
      { return std::vformat(__fmt.get(), std::make_format_args(__args...)); }
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename... _Args>
      [[nodiscard]]
!     inline _GLIBCXX_CONSTEXPR_FORMAT wstring
      format(wformat_string<_Args...> __fmt, _Args&&... __args)
      { return std::vformat(__fmt.get(), std::make_wformat_args(__args...)); }
  #endif
*************** namespace __format
*** 5519,5525 ****
  
    template<typename _Out, typename... _Args>
      requires output_iterator<_Out, const char&>
!     inline _Out
      format_to(_Out __out, format_string<_Args...> __fmt, _Args&&... __args)
      {
        return std::vformat_to(std::move(__out), __fmt.get(),
--- 5605,5611 ----
  
    template<typename _Out, typename... _Args>
      requires output_iterator<_Out, const char&>
!     inline _GLIBCXX_CONSTEXPR_FORMAT _Out
      format_to(_Out __out, format_string<_Args...> __fmt, _Args&&... __args)
      {
        return std::vformat_to(std::move(__out), __fmt.get(),
*************** namespace __format
*** 5529,5535 ****
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename _Out, typename... _Args>
      requires output_iterator<_Out, const wchar_t&>
!     inline _Out
      format_to(_Out __out, wformat_string<_Args...> __fmt, _Args&&... __args)
      {
        return std::vformat_to(std::move(__out), __fmt.get(),
--- 5615,5621 ----
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename _Out, typename... _Args>
      requires output_iterator<_Out, const wchar_t&>
!     inline _GLIBCXX_CONSTEXPR_FORMAT _Out
      format_to(_Out __out, wformat_string<_Args...> __fmt, _Args&&... __args)
      {
        return std::vformat_to(std::move(__out), __fmt.get(),
*************** namespace __format
*** 5561,5567 ****
  
    template<typename _Out, typename... _Args>
      requires output_iterator<_Out, const char&>
!     inline format_to_n_result<_Out>
      format_to_n(_Out __out, iter_difference_t<_Out> __n,
  		format_string<_Args...> __fmt, _Args&&... __args)
      {
--- 5647,5653 ----
  
    template<typename _Out, typename... _Args>
      requires output_iterator<_Out, const char&>
!     inline _GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_Out>
      format_to_n(_Out __out, iter_difference_t<_Out> __n,
  		format_string<_Args...> __fmt, _Args&&... __args)
      {
*************** namespace __format
*** 5573,5579 ****
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename _Out, typename... _Args>
      requires output_iterator<_Out, const wchar_t&>
!     inline format_to_n_result<_Out>
      format_to_n(_Out __out, iter_difference_t<_Out> __n,
  		wformat_string<_Args...> __fmt, _Args&&... __args)
      {
--- 5659,5665 ----
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename _Out, typename... _Args>
      requires output_iterator<_Out, const wchar_t&>
!     inline _GLIBCXX_CONSTEXPR_FORMAT format_to_n_result<_Out>
      format_to_n(_Out __out, iter_difference_t<_Out> __n,
  		wformat_string<_Args...> __fmt, _Args&&... __args)
      {
*************** namespace __format
*** 5615,5624 ****
      class _Counting_sink final : public _Ptr_sink<_CharT>
      {
      public:
        _Counting_sink() : _Ptr_sink<_CharT>(nullptr, 0) { }
  
        [[__gnu__::__always_inline__]]
!       size_t
        count() const
        { return this->_M_count + this->_M_used().size(); }
      };
--- 5701,5711 ----
      class _Counting_sink final : public _Ptr_sink<_CharT>
      {
      public:
+       _GLIBCXX_CONSTEXPR_FORMAT
        _Counting_sink() : _Ptr_sink<_CharT>(nullptr, 0) { }
  
        [[__gnu__::__always_inline__]]
!       _GLIBCXX_CONSTEXPR_FORMAT size_t
        count() const
        { return this->_M_count + this->_M_used().size(); }
      };
*************** namespace __format
*** 5653,5659 ****
  
    template<typename... _Args>
      [[nodiscard]]
!     inline size_t
      formatted_size(format_string<_Args...> __fmt, _Args&&... __args)
      {
        __format::_Counting_sink<char> __buf;
--- 5740,5746 ----
  
    template<typename... _Args>
      [[nodiscard]]
!     inline _GLIBCXX_CONSTEXPR_FORMAT size_t
      formatted_size(format_string<_Args...> __fmt, _Args&&... __args)
      {
        __format::_Counting_sink<char> __buf;
*************** namespace __format
*** 5665,5671 ****
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename... _Args>
      [[nodiscard]]
!     inline size_t
      formatted_size(wformat_string<_Args...> __fmt, _Args&&... __args)
      {
        __format::_Counting_sink<wchar_t> __buf;
--- 5752,5758 ----
  #ifdef _GLIBCXX_USE_WCHAR_T
    template<typename... _Args>
      [[nodiscard]]
!     inline _GLIBCXX_CONSTEXPR_FORMAT size_t
      formatted_size(wformat_string<_Args...> __fmt, _Args&&... __args)
      {
        __format::_Counting_sink<wchar_t> __buf;
*************** namespace __format
*** 5736,5741 ****
--- 5823,5829 ----
  namespace __format
  {
    template<typename _CharT, typename _Out, typename _Callback>
+     _GLIBCXX_CONSTEXPR_FORMAT
      typename basic_format_context<_Out, _CharT>::iterator
      __format_padded(basic_format_context<_Out, _CharT>& __fc,
  		    const _Spec<_CharT>& __spec,
*************** namespace __format
*** 5755,5768 ****
  
  	 struct _Restore_out
  	 {
  	   _Restore_out(basic_format_context<_Sink_iter<_CharT>, _CharT>& __fc)
  	   : _M_ctx(std::addressof(__fc)), _M_out(__fc.out())
  	  { }
  
! 	  void
  	  _M_disarm()
  	  { _M_ctx = nullptr; }
  
  	  ~_Restore_out()
  	  {
  	    if (_M_ctx)
--- 5843,5858 ----
  
  	 struct _Restore_out
  	 {
+ 	   _GLIBCXX_CONSTEXPR_FORMAT
  	   _Restore_out(basic_format_context<_Sink_iter<_CharT>, _CharT>& __fc)
  	   : _M_ctx(std::addressof(__fc)), _M_out(__fc.out())
  	  { }
  
! 	  _GLIBCXX_CONSTEXPR_FORMAT void
  	  _M_disarm()
  	  { _M_ctx = nullptr; }
  
+ 	  _GLIBCXX_CONSTEXPR_FORMAT
  	  ~_Restore_out()
  	  {
  	    if (_M_ctx)
*************** namespace __format
*** 5796,5802 ****
        }
  
        template<typename _Out>
! 	void
  	_M_format(__maybe_const<_Tp, _CharT>& __elem,
  		  basic_format_context<_Out, _CharT>& __fc,
  		  basic_string_view<_CharT> __sep) const
--- 5886,5892 ----
        }
  
        template<typename _Out>
! 	_GLIBCXX_CONSTEXPR_FORMAT void
  	_M_format(__maybe_const<_Tp, _CharT>& __elem,
  		  basic_format_context<_Out, _CharT>& __fc,
  		  basic_string_view<_CharT> __sep) const
*************** namespace __format
*** 5894,5905 ****
--- 5984,5997 ----
  
      protected:
        template<typename _Tuple, typename _Out, size_t... _Ids>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	_M_format(_Tuple& __tuple, index_sequence<_Ids...>,
  		  basic_format_context<_Out, _CharT>& __fc) const
  	{ return _M_format_elems(std::get<_Ids>(__tuple)..., __fc); }
  
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	_M_format_elems(__maybe_const<_Tps, _CharT>&... __elems,
  			basic_format_context<_Out, _CharT>& __fc) const
*************** namespace __format
*** 5929,5935 ****
  	  }
  
  	  template<typename _Out>
! 	    void
  	    _M_format(__maybe_const<_Tps, _CharT>&... __elems,
  		      basic_format_context<_Out, _CharT>& __fc,
  		      _String_view __sep) const
--- 6021,6027 ----
  	  }
  
  	  template<typename _Out>
! 	    _GLIBCXX_CONSTEXPR_FORMAT void
  	    _M_format(__maybe_const<_Tps, _CharT>&... __elems,
  		      basic_format_context<_Out, _CharT>& __fc,
  		      _String_view __sep) const
*************** namespace __format
*** 5945,5951 ****
  	};
  
        template<size_t... _Ids>
! 	static auto
  	_S_create_storage(index_sequence<_Ids...>)
  	  -> __formatters_storage<_Ids...>;
        using _Formatters
--- 6037,6043 ----
  	};
  
        template<size_t... _Ids>
! 	static _GLIBCXX_CONSTEXPR_FORMAT auto
  	_S_create_storage(index_sequence<_Ids...>)
  	  -> __formatters_storage<_Ids...>;
        using _Formatters
*************** namespace __format
*** 5981,5986 ****
--- 6073,6079 ----
        // We deviate from standard, that declares this as template accepting
        // unconstrained FormatContext type, which seems unimplementable.
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(__maybe_const_pair& __p,
  	       basic_format_context<_Out, _CharT>& __fc) const
*************** namespace __format
*** 6008,6013 ****
--- 6101,6107 ----
        // We deviate from standard, that declares this as template accepting
        // unconstrained FormatContext type, which seems unimplementable.
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(__maybe_const_tuple& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
*************** namespace __format
*** 6171,6176 ****
--- 6265,6271 ----
        template<ranges::input_range _Rg, typename _Out>
  	requires formattable<ranges::range_reference_t<_Rg>, _CharT> &&
  		 same_as<remove_cvref_t<ranges::range_reference_t<_Rg>>, _Tp>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(_Rg&& __rg, basic_format_context<_Out, _CharT>& __fc) const
  	{
*************** namespace __format
*** 6189,6194 ****
--- 6284,6290 ----
  
      private:
        template<ranges::input_range _Rg, typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	_M_format(_Rg& __rg, basic_format_context<_Out, _CharT>& __fc) const
  	{
*************** namespace __format
*** 6206,6211 ****
--- 6302,6308 ----
  
  
        template<ranges::input_range _Rg, typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	_M_format_elems(_Rg& __rg,
  			basic_format_context<_Out, _CharT>& __fc) const
*************** namespace __format
*** 6305,6310 ****
--- 6402,6408 ----
        // We deviate from standard, that declares this as template accepting
        // unconstrained FormatContext type, which seems unimplementable.
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(__format::__maybe_const_range<_Rg, _CharT>& __rg,
  	       basic_format_context<_Out, _CharT>& __fc) const
*************** namespace __format
*** 6331,6336 ****
--- 6429,6435 ----
  
  #endif // C++23 formatting ranges
  #undef _GLIBCXX_WIDEN
+ #undef _GLIBCXX_CONSTEXPR_FORMAT
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/forward_list gcc-17-20260607/libstdc++-v3/include/std/forward_list
*** gcc-17-20260531/libstdc++-v3/include/std/forward_list	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/forward_list	Sun Jun  7 22:32:16 2026
***************
*** 51,56 ****
--- 51,57 ----
  #define __glibcxx_want_allocator_traits_is_always_equal
  #define __glibcxx_want_containers_ranges
  #define __glibcxx_want_erase_if
+ #define __glibcxx_want_hardened_forward_list
  #define __glibcxx_want_incomplete_container_elements
  #define __glibcxx_want_list_remove_return_type
  #define __glibcxx_want_nonmember_container_access
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/generator gcc-17-20260607/libstdc++-v3/include/std/generator
*** gcc-17-20260531/libstdc++-v3/include/std/generator	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/generator	Sun Jun  7 22:32:16 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 163,168 ****
--- 163,171 ----
  	  noexcept
  	{ return _Recursive_awaiter { std::move(__r.range) }; }
  
+ 	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+ 	// 4119. generator::promise_type::yield_value(elements_of<R, Alloc>)'s
+ 	// nested generator may be ill-formed
  	template<ranges::input_range _R, typename _Alloc>
  	requires convertible_to<ranges::range_reference_t<_R>, _Yielded>
  	auto
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 171,177 ****
  	  auto __n = [] (allocator_arg_t, _Alloc,
  			 ranges::iterator_t<_R> __i,
  			 ranges::sentinel_t<_R> __s)
! 	    -> generator<_Yielded, ranges::range_value_t<_R>, _Alloc> {
  	    for (; __i != __s; ++__i)
  	      co_yield static_cast<_Yielded>(*__i);
  	  };
--- 174,180 ----
  	  auto __n = [] (allocator_arg_t, _Alloc,
  			 ranges::iterator_t<_R> __i,
  			 ranges::sentinel_t<_R> __s)
! 	    -> generator<_Yielded, void, _Alloc> {
  	    for (; __i != __s; ++__i)
  	      co_yield static_cast<_Yielded>(*__i);
  	  };
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/inplace_vector gcc-17-20260607/libstdc++-v3/include/std/inplace_vector
*** gcc-17-20260531/libstdc++-v3/include/std/inplace_vector	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/inplace_vector	Sun Jun  7 22:32:16 2026
***************
*** 32,37 ****
--- 32,38 ----
  
  #pragma GCC system_header
  
+ #define __glibcxx_want_hardened_inplace_vector
  #define __glibcxx_want_inplace_vector
  #include <bits/version.h>
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/iterator gcc-17-20260607/libstdc++-v3/include/std/iterator
*** gcc-17-20260531/libstdc++-v3/include/std/iterator	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/iterator	Sun Jun  7 22:32:16 2026
***************
*** 71,76 ****
--- 71,78 ----
  
  #define __glibcxx_want_array_constexpr
  #define __glibcxx_want_constexpr_iterator
+ #define __glibcxx_want_hardened_common_iterator
+ #define __glibcxx_want_hardened_counted_iterator
  #define __glibcxx_want_make_reverse_iterator
  #define __glibcxx_want_move_iterator_concept
  #define __glibcxx_want_nonmember_container_access
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/list gcc-17-20260607/libstdc++-v3/include/std/list
*** gcc-17-20260531/libstdc++-v3/include/std/list	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/list	Sun Jun  7 22:32:16 2026
***************
*** 75,80 ****
--- 75,81 ----
  #define __glibcxx_want_allocator_traits_is_always_equal
  #define __glibcxx_want_containers_ranges
  #define __glibcxx_want_erase_if
+ #define __glibcxx_want_hardened_list
  #define __glibcxx_want_incomplete_container_elements
  #define __glibcxx_want_list_remove_return_type
  #define __glibcxx_want_nonmember_container_access
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/mdspan gcc-17-20260607/libstdc++-v3/include/std/mdspan
*** gcc-17-20260531/libstdc++-v3/include/std/mdspan	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/mdspan	Sun Jun  7 22:32:16 2026
***************
*** 40,45 ****
--- 40,46 ----
  
  #define __glibcxx_want_mdspan
  #define __glibcxx_want_aligned_accessor
+ #define __glibcxx_want_hardened_mdspan
  #define __glibcxx_want_submdspan
  #include <bits/version.h>
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 3062,3078 ****
  	{
  	  if constexpr (rank() == 0)
  	    return _M_accessor.access(_M_handle, _M_mapping());
! 	  else if constexpr (!(is_same_v<_OIndexTypes, index_type> && ...))
! 	    return operator[](
! 	      __mdspan::__index_type_cast<index_type>(std::move(__indices))...);
  	  else
  	   {
  	     auto __is_multi_index = [&]<size_t... _Counts>(index_sequence<_Counts...>)
! 	     { return ((__indices < extents().extent(_Counts)) && ...); };
  
  	     __glibcxx_assert(__is_multi_index(make_index_sequence<rank()>()));
! 	     return _M_accessor.access(_M_handle, _M_mapping(__indices...));
! 	   }
  	}
  
        template<typename _OIndexType>
--- 3063,3086 ----
  	{
  	  if constexpr (rank() == 0)
  	    return _M_accessor.access(_M_handle, _M_mapping());
! 	  else if constexpr (!(is_integral_v<_OIndexTypes> && ...))
! 	    return operator[](__index_int_t<_OIndexTypes>(std::move(__indices))...);
  	  else
  	   {
+ 	     auto __is_valid_index = [&]<typename _OIntType>(size_t __dim, _OIntType __index)
+ 	     {
+ 	       if constexpr (is_signed_v<_OIntType>)
+ 		 if (__index < 0)
+ 		   return false;
+ 	       return std::cmp_less(__index, extents().extent(__dim));
+ 	     };
  	     auto __is_multi_index = [&]<size_t... _Counts>(index_sequence<_Counts...>)
! 	     { return (__is_valid_index(_Counts, __indices) && ...); };
  
  	     __glibcxx_assert(__is_multi_index(make_index_sequence<rank()>()));
! 	     auto __index = _M_mapping(static_cast<index_type>(__indices)...);
! 	     return _M_accessor.access(_M_handle, __index);
!     	   }
  	}
  
        template<typename _OIndexType>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 3084,3090 ****
  	    -> reference
  	    {
  	       return operator[](
! 		 __mdspan::__index_type_cast<index_type>(as_const(__indices[_Counts]))...);
  	    };
  	  return __call(make_index_sequence<rank()>());
  	}
--- 3092,3098 ----
  	    -> reference
  	    {
  	       return operator[](
! 		 __index_int_t<_OIndexType>(as_const(__indices[_Counts]))...);
  	    };
  	  return __call(make_index_sequence<rank()>());
  	}
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/memory gcc-17-20260607/libstdc++-v3/include/std/memory
*** gcc-17-20260531/libstdc++-v3/include/std/memory	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/memory	Sun Jun  7 22:32:16 2026
***************
*** 110,115 ****
--- 110,116 ----
  #define __glibcxx_want_constexpr_dynamic_alloc
  #define __glibcxx_want_constexpr_memory
  #define __glibcxx_want_enable_shared_from_this
+ #define __glibcxx_want_hardened_shared_ptr_array
  #define __glibcxx_want_indirect
  #define __glibcxx_want_is_sufficiently_aligned
  #define __glibcxx_want_make_unique
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/optional gcc-17-20260607/libstdc++-v3/include/std/optional
*** gcc-17-20260531/libstdc++-v3/include/std/optional	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/optional	Sun Jun  7 22:32:16 2026
***************
*** 39,44 ****
--- 39,45 ----
  #define __glibcxx_want_optional_range_support
  #define __glibcxx_want_constrained_equality
  #define __glibcxx_want_constexpr_exceptions
+ #define __glibcxx_want_hardened_optional
  #include <bits/version.h>
  
  #ifdef __cpp_lib_optional // C++ >= 17
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/ranges gcc-17-20260607/libstdc++-v3/include/std/ranges
*** gcc-17-20260531/libstdc++-v3/include/std/ranges	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/ranges	Sun Jun  7 22:32:16 2026
***************
*** 56,61 ****
--- 56,62 ----
  #include <bits/refwrap.h>
  
  #define __glibcxx_want_algorithm_default_value_type
+ #define __glibcxx_want_hardened_view_interface
  #define __glibcxx_want_ranges
  #define __glibcxx_want_ranges_as_const
  #define __glibcxx_want_ranges_as_rvalue
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/span gcc-17-20260607/libstdc++-v3/include/std/span
*** gcc-17-20260531/libstdc++-v3/include/std/span	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/span	Sun Jun  7 22:32:16 2026
***************
*** 40,45 ****
--- 40,46 ----
  
  #define __glibcxx_want_span
  #define __glibcxx_want_span_initializer_list
+ #define __glibcxx_want_hardened_span
  #include <bits/version.h>
  
  #ifdef __cpp_lib_span // C++ >= 20 && concepts
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/stacktrace gcc-17-20260607/libstdc++-v3/include/std/stacktrace
*** gcc-17-20260531/libstdc++-v3/include/std/stacktrace	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/stacktrace	Sun Jun  7 22:32:16 2026
***************
*** 34,39 ****
--- 34,40 ----
  
  #define __glibcxx_want_stacktrace
  #define __glibcxx_want_formatters
+ #define __glibcxx_want_hardened_basic_stacktrace
  #include <bits/version.h>
  
  #ifdef __cpp_lib_stacktrace // C++ >= 23 && hosted && HAVE_STACKTRACE
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/string gcc-17-20260607/libstdc++-v3/include/std/string
*** gcc-17-20260531/libstdc++-v3/include/std/string	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/string	Sun Jun  7 22:32:16 2026
***************
*** 72,77 ****
--- 72,78 ----
  #define __glibcxx_want_constexpr_string
  #define __glibcxx_want_containers_ranges
  #define __glibcxx_want_erase_if
+ #define __glibcxx_want_hardened_basic_string
  #define __glibcxx_want_nonmember_container_access
  #define __glibcxx_want_string_resize_and_overwrite
  #define __glibcxx_want_string_subview
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/string_view gcc-17-20260607/libstdc++-v3/include/std/string_view
*** gcc-17-20260531/libstdc++-v3/include/std/string_view	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/string_view	Sun Jun  7 22:32:16 2026
***************
*** 40,45 ****
--- 40,46 ----
  #define __glibcxx_want_constexpr_char_traits
  #define __glibcxx_want_constexpr_string_view
  #define __glibcxx_want_freestanding_string_view
+ #define __glibcxx_want_hardened_basic_string_view
  #define __glibcxx_want_starts_ends_with
  #define __glibcxx_want_string_contains
  #define __glibcxx_want_string_subview
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/valarray gcc-17-20260607/libstdc++-v3/include/std/valarray
*** gcc-17-20260531/libstdc++-v3/include/std/valarray	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/valarray	Sun Jun  7 22:32:16 2026
***************
*** 46,51 ****
--- 46,52 ----
  #include <bits/range_access.h>
  #endif
  
+ #define __glibcxx_want_hardened_valarray
  #define __glibcxx_want_valarray
  #include <bits/version.h>
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/include/std/vector gcc-17-20260607/libstdc++-v3/include/std/vector
*** gcc-17-20260531/libstdc++-v3/include/std/vector	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/include/std/vector	Sun Jun  7 22:32:16 2026
***************
*** 83,88 ****
--- 83,89 ----
  #define __glibcxx_want_constexpr_vector
  #define __glibcxx_want_containers_ranges
  #define __glibcxx_want_erase_if
+ #define __glibcxx_want_hardened_vector
  #define __glibcxx_want_incomplete_container_elements
  #define __glibcxx_want_nonmember_container_access
  #include <bits/version.h>
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc	Sun Jun  7 22:32:16 2026
***************
*** 6,13 ****
  
  #ifndef __cpp_lib_constexpr_string
  # error "Feature-test macro for constexpr std::string missing in <string>"
! #elif __cpp_lib_constexpr_string != 201907L
! # error "Feature-test macro for constexpr std::string has wrong value in <string>"
  #endif
  
  #include <testsuite_hooks.h>
--- 6,13 ----
  
  #ifndef __cpp_lib_constexpr_string
  # error "Feature-test macro for constexpr std::string missing in <string>"
! #elif __cpp_lib_constexpr_string < 201907L
! # error "Feature-test macro for constexpr std::string has too small value in <string>"
  #endif
  
  #include <testsuite_hooks.h>
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc	Sun Jun  7 22:32:16 2026
***************
*** 6,13 ****
  
  #ifndef __cpp_lib_constexpr_string
  # error "Feature-test macro for constexpr std::string missing in <string>"
! #elif __cpp_lib_constexpr_string != 201907L
! # error "Feature-test macro for constexpr std::string has wrong value in <string>"
  #endif
  
  #include <testsuite_hooks.h>
--- 6,13 ----
  
  #ifndef __cpp_lib_constexpr_string
  # error "Feature-test macro for constexpr std::string missing in <string>"
! #elif __cpp_lib_constexpr_string < 201907L
! # error "Feature-test macro for constexpr std::string too small value in <string>"
  #endif
  
  #include <testsuite_hooks.h>
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_constexpr.cc	Sun Jun  7 22:32:16 2026
***************
*** 0 ****
--- 1,64 ----
+ // { dg-do compile { target c++26 } }
+ // { dg-require-effective-target cxx11_abi }
+ 
+ #include <string>
+ #include <type_traits>
+ #include <testsuite_hooks.h>
+ 
+ template<typename T>
+ constexpr void
+ test()
+ {
+   using namespace std;
+   string res;
+   T value;
+ 
+   value = 0;
+   res = to_string(value);
+   VERIFY( res == "0" );
+ 
+   value = 1;
+   res = to_string(value);
+   VERIFY( res == "1" );
+ 
+   value = 10;
+   res = to_string(value);
+   VERIFY( res == "10" );
+   
+   value = 3000;
+   res = to_string(value);
+   VERIFY( res == "3000" );
+ 
+   value = 32767;
+   res = to_string(value);
+   VERIFY( res == "32767" );
+ 
+   if (is_unsigned_v<T>)
+     return;
+ 
+   value = -1;
+   res = to_string(value);
+   VERIFY( res == "-1" );
+   
+   value = -40;
+   res = to_string(value);
+   VERIFY( res == "-40" );
+   
+   value = -32768;
+   res = to_string(value);
+   VERIFY( res == "-32768" );
+ }
+ 
+ constexpr bool
+ test_all()
+ {
+   test<int>();
+   test<unsigned int>();
+   test<long>();
+   test<unsigned long>();
+   test<long long>();
+   test<unsigned long long>();
+   return true;
+ }
+ 
+ static_assert(test_all());
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_constexpr.cc	Sun Jun  7 22:32:16 2026
***************
*** 0 ****
--- 1,64 ----
+ // { dg-do compile { target c++26 } }
+ // { dg-require-effective-target cxx11_abi }
+ 
+ #include <string>
+ #include <type_traits>
+ #include <testsuite_hooks.h>
+ 
+ template<typename T>
+ constexpr void
+ test()
+ {
+   using namespace std;
+   wstring res;
+   T value;
+ 
+   value = 0;
+   res = to_wstring(value);
+   VERIFY( res == L"0" );
+ 
+   value = 1;
+   res = to_wstring(value);
+   VERIFY( res == L"1" );
+ 
+   value = 10;
+   res = to_wstring(value);
+   VERIFY( res == L"10" );
+   
+   value = 3000;
+   res = to_wstring(value);
+   VERIFY( res == L"3000" );
+ 
+   value = 32767;
+   res = to_wstring(value);
+   VERIFY( res == L"32767" );
+ 
+   if (is_unsigned_v<T>)
+     return;
+ 
+   value = -1;
+   res = to_wstring(value);
+   VERIFY( res == L"-1" );
+   
+   value = -40;
+   res = to_wstring(value);
+   VERIFY( res == L"-40" );
+   
+   value = -32768;
+   res = to_wstring(value);
+   VERIFY( res == L"-32768" );
+ }
+ 
+ constexpr bool
+ test_all()
+ {
+   test<int>();
+   test<unsigned int>();
+   test<long>();
+   test<unsigned long>();
+   test<long long>();
+   test<unsigned long long>();
+   return true;
+ }
+ 
+ static_assert(test_all());
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/version.cc gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/21_strings/basic_string/version.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/21_strings/basic_string/version.cc	Sun Jun  7 22:32:16 2026
***************
*** 25,27 ****
--- 25,39 ----
  #  endif
  # endif
  #endif
+ 
+ #if __cplusplus > 202302L
+ # if _GLIBCXX_USE_CXX11_ABI
+ #  if __cpp_lib_constexpr_string != 202511L
+ #   error "Feature-test macro for constexpr std::string has wrong value for C++20 in <version>"
+ #  endif
+ # else // COW strings
+ #  if __cpp_lib_constexpr_string != 201811L
+ #   error "Feature-test macro for constexpr std::string has wrong value for C++20 in <version>"
+ #  endif
+ # endif
+ #endif
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc gcc-17-20260607/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc	Sun Jun  7 22:32:16 2026
*************** int n1 = std::get<1>(a);
*** 26,31 ****
  int n2 = std::get<1>(std::move(a));
  int n3 = std::get<1>(ca);
  
! // { dg-error "static assertion failed" "" { target *-*-* } 396 }
! // { dg-error "static assertion failed" "" { target *-*-* } 405 }
! // { dg-error "static assertion failed" "" { target *-*-* } 414 }
--- 26,31 ----
  int n2 = std::get<1>(std::move(a));
  int n3 = std::get<1>(ca);
  
! // { dg-error "static assertion failed" "" { target *-*-* } 397 }
! // { dg-error "static assertion failed" "" { target *-*-* } 406 }
! // { dg-error "static assertion failed" "" { target *-*-* } 415 }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc gcc-17-20260607/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc	Sun Jun  7 22:32:16 2026
***************
*** 0 ****
--- 1,43 ----
+ // { dg-do compile { target c++26 } }
+ #include <queue>
+ 
+ constexpr bool test_constexpr_priority_queue() {
+   std::priority_queue<int> pq;
+   if (!pq.empty()) return false;
+   if (pq.size() != 0) return false;
+ 
+   pq.push(10);
+   if (pq.empty()) return false;
+   if (pq.size() != 1) return false;
+   if (pq.top() != 10) return false;
+ 
+   pq.emplace(30);
+   pq.emplace(20);
+   if (pq.size() != 3) return false;
+   if (pq.top() != 30) return false;
+ 
+   pq.pop();
+   if (pq.size() != 2) return false;
+   if (pq.top() != 20) return false;
+ 
+   std::priority_queue<int> pq2;
+   pq2 = pq;
+   if (pq2.size() != 2) return false;
+   if (pq2.top() != 20) return false;
+ 
+   std::priority_queue<int> pq3;
+   pq3.push(100);
+   pq.swap(pq3);
+   if (pq.size() != 1 || pq.top() != 100) return false;
+   if (pq3.size() != 2 || pq3.top() != 20) return false;
+ 
+   int arr[] = {50, 200, 10};
+   pq.push_range(arr);
+   if (pq.size() != 4) return false;
+   if (pq.top() != 200) return false;
+ 
+   return true;
+ }
+ 
+ static_assert(test_constexpr_priority_queue(),
+               "constexpr priority_queue test failed!");
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/24_iterators/range_generators/lwg4119.cc gcc-17-20260607/libstdc++-v3/testsuite/24_iterators/range_generators/lwg4119.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/24_iterators/range_generators/lwg4119.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libstdc++-v3/testsuite/24_iterators/range_generators/lwg4119.cc	Sun Jun  7 22:32:17 2026
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do compile { target c++23 } }
+ 
+ #include <generator>
+ #include <vector>
+ 
+ std::generator<std::span<int>> f() {
+   std::vector<int> v;
+   co_yield v;
+ }
+ 
+ std::generator<std::span<int>> g() {
+   std::vector<std::vector<int>> v;
+   co_yield std::ranges::elements_of(v);
+ }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc	Sun Jun  7 22:32:17 2026
***************
*** 21,26 ****
--- 21,28 ----
  #include <filesystem>
  #include <testsuite_hooks.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  using std::filesystem::filesystem_error;
  
  bool contains(std::string_view what_str, std::string_view expected)
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc	Sun Jun  7 22:32:17 2026
***************
*** 22,27 ****
--- 22,29 ----
  #include <testsuite_hooks.h>
  #include <testsuite_fs.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  namespace fs = std::filesystem;
  using __gnu_test::compare_paths;
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc	Sun Jun  7 22:32:17 2026
***************
*** 25,30 ****
--- 25,32 ----
  #include <testsuite_fs.h>
  #include <testsuite_hooks.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  void
  test01()
  {
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc	Sun Jun  7 22:32:17 2026
***************
*** 24,29 ****
--- 24,31 ----
  #include <testsuite_hooks.h>
  #include <testsuite_fs.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  void
  clean_env()
  {
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc	Sun Jun  7 22:32:17 2026
*************** test03()
*** 96,102 ****
      {
        test(p, q.c_str());
        if constexpr (!std::is_same_v<path::value_type, char>)
! 	test(p, q.string().c_str());
      }
  }
  
--- 96,102 ----
      {
        test(p, q.c_str());
        if constexpr (!std::is_same_v<path::value_type, char>)
! 	test(p, q.string().c_str()); // { dg-warning "deprecated" "" { target c++26 } }
      }
  }
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc	Sun Jun  7 22:32:17 2026
***************
*** 24,29 ****
--- 24,31 ----
  #include <testsuite_iterators.h>
  #include <testsuite_fs.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  using std::filesystem::path;
  using __gnu_test::compare_paths;
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc	Sun Jun  7 22:32:17 2026
***************
*** 23,28 ****
--- 23,30 ----
  #include <testsuite_hooks.h>
  #include <testsuite_fs.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  using std::filesystem::path;
  
  void
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc	Sun Jun  7 22:32:17 2026
*************** test01()
*** 33,39 ****
    path p = "foo.bar.baz.tar";
    std::vector<std::string> v;
    for (; !p.extension().empty(); p = p.stem())
!     v.push_back(p.extension().string());
    VERIFY( v.at(0) == ".tar" );
    VERIFY( v.at(1) == ".baz" );
    VERIFY( v.at(2) == ".bar" );
--- 33,39 ----
    path p = "foo.bar.baz.tar";
    std::vector<std::string> v;
    for (; !p.extension().empty(); p = p.stem())
!     v.push_back(p.extension().string()); // { dg-warning "deprecated" "" { target c++26 } }
    VERIFY( v.at(0) == ".tar" );
    VERIFY( v.at(1) == ".baz" );
    VERIFY( v.at(2) == ".bar" );
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/generic/display_native_string.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/generic/display_native_string.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/generic/display_native_string.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/generic/display_native_string.cc	Sun Jun  7 22:32:17 2026
***************
*** 0 ****
--- 1,66 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <filesystem>
+ #include <testsuite_fs.h>
+ #include <testsuite_hooks.h>
+ 
+ using std::filesystem::path;
+ 
+ #define WIDEN(S) ::std::__format::_Widen<CharT>(S, L##S) 
+ 
+ template<typename CharT>
+ void
+ test_display_and_native()
+ {
+   std::string res;
+   path p;
+   auto verify_both = [&res](const path& p, std::string_view expected)
+   {
+     res = p.generic_display_string();
+     VERIFY( res == expected );
+     res = p.generic_native_encoded_string();
+     VERIFY( res == expected );
+   };
+ 
+   verify_both(WIDEN("/usr/include"), "/usr/include");
+   verify_both(WIDEN("foo///bar"), "foo/bar");
+   for (path p : __gnu_test::test_paths)
+     verify_both(p, p.generic_string()); // { dg-warning "deprecated" }
+ 
+   verify_both(
+     WIDEN("\u0428\u0447\u0443\u0447\u044B\u043D\u0448\u0447\u044B\u043D\u0430"),
+     "\u0428\u0447\u0443\u0447\u044B\u043D\u0448\u0447\u044B\u043D\u0430" );
+ 
+   if constexpr (path::preferred_separator == L'\\')
+     verify_both(WIDEN("C:\\foo\\bar"), "C:/foo/bar");
+ }
+ 
+ void
+ test_display_invalid()
+ {
+   std::string res;
+   auto verify_native_error = [&res](const path& p, std::string_view expected)
+   {
+     res = p.generic_display_string();
+     VERIFY( res == expected );
+     try { p.generic_native_encoded_string(); }
+     catch (const std::filesystem::filesystem_error&) {}
+   };
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   if constexpr (std::is_same_v<path::value_type, wchar_t>)
+   {
+     verify_native_error(L"\xd800", "\uFFFD");
+     verify_native_error(L"///\xd800", "/\uFFFD");
+   }
+ #endif
+ }
+ 
+ int main()
+ {
+   test_display_and_native<char>();
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   test_display_and_native<wchar_t>();
+   test_display_invalid();
+ #endif
+ }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc	Sun Jun  7 22:32:17 2026
***************
*** 23,28 ****
--- 23,30 ----
  #include <testsuite_fs.h>
  #include <testsuite_hooks.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  using std::filesystem::path;
  
  void
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc	Sun Jun  7 22:32:17 2026
***************
*** 25,30 ****
--- 25,32 ----
  #include <testsuite_hooks.h>
  #include <testsuite_fs.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  using std::filesystem::path;
  
  void
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/native/display_native_string.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/native/display_native_string.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/native/display_native_string.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/native/display_native_string.cc	Sun Jun  7 22:32:17 2026
***************
*** 0 ****
--- 1,66 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <filesystem>
+ #include <testsuite_fs.h>
+ #include <testsuite_hooks.h>
+ 
+ using std::filesystem::path;
+ 
+ #define WIDEN(S) ::std::__format::_Widen<CharT>(S, L##S) 
+ 
+ template<typename CharT>
+ void
+ test_display_and_native()
+ {
+   std::string res;
+   path p;
+   auto verify_both = [&res](const path& p, std::string_view expected)
+   {
+     res = p.display_string();
+     VERIFY( res == expected );
+     res = p.native_encoded_string();
+     VERIFY( res == expected );
+   };
+ 
+   verify_both(WIDEN("/usr/include"), "/usr/include");
+   verify_both(WIDEN("foo///bar"), "foo///bar");
+   for (path p : __gnu_test::test_paths)
+     verify_both(p, p.string()); // { dg-warning "deprecated" }
+ 
+   verify_both(
+     WIDEN("\u0428\u0447\u0443\u0447\u044B\u043D\u0448\u0447\u044B\u043D\u0430"),
+     "\u0428\u0447\u0443\u0447\u044B\u043D\u0448\u0447\u044B\u043D\u0430" );
+ 
+   if constexpr (path::preferred_separator == L'\\')
+     verify_both(WIDEN("C:\\foo\\bar"), "C:\\foo\\bar");
+ }
+ 
+ void
+ test_display_invalid()
+ {
+   std::string res;
+   auto verify_native_error = [&res](const path& p, std::string_view expected)
+   {
+     res = p.display_string();
+     VERIFY( res == expected );
+     try { p.native_encoded_string(); }
+     catch (const std::filesystem::filesystem_error&) {}
+   };
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   if constexpr (std::is_same_v<path::value_type, wchar_t>)
+   {
+     verify_native_error(L"\xd800", "\uFFFD");
+     verify_native_error(L"///\xd800", "///\uFFFD");
+   }
+ #endif
+ }
+ 
+ int main()
+ {
+   test_display_and_native<char>();
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   test_display_and_native<wchar_t>();
+   test_display_invalid();
+ #endif
+ }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc	Sun Jun  7 22:32:17 2026
*************** test02()
*** 48,54 ****
  
    auto str = p.string<char>();
    VERIFY( str == "abc" );
!   VERIFY( str == p.string() );
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    auto strw = p.string<wchar_t>();
--- 48,54 ----
  
    auto str = p.string<char>();
    VERIFY( str == "abc" );
!   VERIFY( str == p.string() ); // { dg-warning "deprecated" "" { target c++26 } }
  
  #ifdef _GLIBCXX_USE_WCHAR_T
    auto strw = p.string<wchar_t>();
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/print/1.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/print/1.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/print/1.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/print/1.cc	Sun Jun  7 22:32:17 2026
***************
*** 7,12 ****
--- 7,14 ----
  #include <testsuite_hooks.h>
  #include <testsuite_fs.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  void
  test_print_default()
  {
*************** void
*** 25,31 ****
  test_print_file()
  {
    __gnu_test::scoped_file f;
!   FILE* strm = std::fopen(f.path.string().c_str(), "w");
    VERIFY( strm );
    std::print(strm, "File under '{}' for {}", 'O', "OUT OF FILE");
    std::fclose(strm);
--- 27,33 ----
  test_print_file()
  {
    __gnu_test::scoped_file f;
!   FILE* strm = std::fopen(f.path.string().c_str(), "w"); 
    VERIFY( strm );
    std::print(strm, "File under '{}' for {}", 'O', "OUT OF FILE");
    std::fclose(strm);
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/print/2.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/print/2.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/print/2.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/print/2.cc	Sun Jun  7 22:32:17 2026
***************
*** 14,19 ****
--- 14,21 ----
  #include <io.h>
  #endif
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  namespace std
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/27_io/print/3.cc gcc-17-20260607/libstdc++-v3/testsuite/27_io/print/3.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/27_io/print/3.cc	Sun May 31 22:32:15 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/27_io/print/3.cc	Sun Jun  7 22:32:17 2026
***************
*** 7,12 ****
--- 7,14 ----
  #include <testsuite_hooks.h>
  #include <testsuite_fs.h>
  
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ 
  void
  test_println_blank()
  {
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/arguments/args_neg.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/arguments/args_neg.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/arguments/args_neg.cc	Sun Jun  7 22:32:17 2026
*************** void test_missing_specialization()
*** 15,21 ****
  {
    struct X { };
    X x;
!   (void)std::make_format_args(x); // { dg-error "here" }
  // { dg-error "std::formatter must be specialized" "" { target *-*-* } 0 }
  }
  
--- 15,21 ----
  {
    struct X { };
    X x;
!   (void)std::make_format_args(x); // { dg-error "(here|in 'constexpr' expansion of)" }
  // { dg-error "std::formatter must be specialized" "" { target *-*-* } 0 }
  }
  
*************** void test(std::formatter<Y>& f, std::for
*** 37,43 ****
  void test_const_arg()
  {
    const Y y;
!   (void)std::make_format_args(y); // { dg-error "here" }
  // { dg-error "format arg must be non-const" "" { target *-*-* } 0 }
  }
  
--- 37,43 ----
  void test_const_arg()
  {
    const Y y;
!   (void)std::make_format_args(y); // { dg-error "(here|in 'constexpr' expansion of)" }
  // { dg-error "format arg must be non-const" "" { target *-*-* } 0 }
  }
  
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/constexpr.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/constexpr.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/constexpr.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/constexpr.cc	Sun Jun  7 22:32:17 2026
***************
*** 0 ****
--- 1,166 ----
+ // { dg-do compile { target c++26 } }
+ 
+ #include <format>
+ #include <string>
+ #include <string_view>
+ #include <tuple>
+ #include <vector>
+ #include <testsuite_hooks.h>
+ 
+ #if _GLIBCXX_USE_CXX11_ABI
+ 
+ #ifndef __glibcxx_constexpr_format
+ # error "Feature test macro for constexpr std::format is missing in <format>"
+ #elif __glibcxx_constexpr_format < 202511L
+ # error "Feature test macro for constexpr std::format has wrong value in <format>"
+ #endif
+ 
+ // Slightly more general from __format::_Widen, works with character literals.
+ template<typename CharT>
+ consteval auto widen(auto narrow, auto wide)
+ {
+   if constexpr (std::is_same_v<CharT, wchar_t>)
+     return wide;
+   else
+     return narrow;
+ }
+ 
+ #define WIDEN_(C, S) widen<C>(S, L##S)
+ #define WIDEN(S) WIDEN_(CharT, S)
+ 
+ template<typename CharT>
+ constexpr void
+ test_format()
+ {
+   using namespace std;
+ 
+   basic_string<CharT> res;
+ 
+   res = format(WIDEN("{}"), WIDEN('c'));
+   VERIFY( res == WIDEN("c") );
+   res = format(WIDEN("{1} {0} {0}"), WIDEN('a'), WIDEN('b'));
+   VERIFY( res == WIDEN("b a a") );
+   res = format(WIDEN("{:?}"), WIDEN('\n'));
+   VERIFY( res == WIDEN("'\\n'") );
+   res = format(WIDEN("{:.^10}"), WIDEN("hello"));
+   VERIFY( res == WIDEN("..hello...") );
+   res = format(WIDEN("{:.>{}}"), WIDEN("world"), 8);
+   VERIFY( res == WIDEN("...world") );
+   res = format(WIDEN("{:+#06X}"), 0xa);
+   VERIFY( res == WIDEN("+0X00A") );
+   res = format(WIDEN("{:p}"), nullptr);
+   VERIFY( res == WIDEN("0x0") );
+   res = format(WIDEN("{:07P}"), nullptr);
+   VERIFY( res == WIDEN("0X00000") );
+   res = format(WIDEN("{} {}"), true, false);
+   VERIFY( res == WIDEN("true false") );
+   res = format(WIDEN("{:+#06b}"), true);
+   VERIFY( res == WIDEN("+0b001") );
+   res = format(WIDEN("{} {} {}"), WIDEN("abc"), basic_string_view<CharT>(WIDEN("def")), basic_string<CharT>(WIDEN("ghi")));
+   VERIFY( res == WIDEN("abc def ghi") );
+   res = format(WIDEN("{:?}"), WIDEN("hello\nworld"));
+   VERIFY( res == WIDEN("\"hello\\nworld\"") );
+   res = format(WIDEN("{}"), tuple(1, true));
+   VERIFY( res == WIDEN("(1, true)") );
+   res = format(WIDEN("{:t<12m}"), tuple(WIDEN('a'), WIDEN("bc")));
+   VERIFY( res == WIDEN("'a': \"bc\"ttt") );
+   res = format(WIDEN("{:n}"), tuple(nullptr, -1, 1));
+   VERIFY( res == WIDEN("0x0, -1, 1") );
+   res = format(WIDEN("{}"), vector{1, 2, 3, 4});
+   VERIFY( res == WIDEN("[1, 2, 3, 4]") );
+   res = format(WIDEN("{:?s}"), vector{WIDEN('a'), WIDEN('\n'), WIDEN('b')});
+   VERIFY( res == WIDEN("\"a\\nb\"") );
+   res = format(WIDEN("{:n:+}"), vector{1, 2, 3});
+   VERIFY( res == WIDEN("+1, +2, +3") );
+ }
+ 
+ template<typename CharT>
+ constexpr void
+ test_format_to()
+ {
+   using namespace std;
+ 
+   CharT buf[100];
+   CharT* out;
+ 
+   out = format_to(buf, WIDEN("{:.^5}"), WIDEN("foo"));
+   VERIFY( basic_string_view<CharT>(buf, out) == WIDEN(".foo.") );
+   out = format_to(buf, WIDEN("{} {}"), nullptr, true);
+   VERIFY( basic_string_view<CharT>(buf, out) == WIDEN("0x0 true") );
+ }
+ 
+ template<typename CharT>
+ constexpr void
+ test_vformat()
+ {
+   using namespace std;
+   using context = __format::__format_context<CharT>;
+ 
+   basic_string<CharT> res;
+ 
+   int arg1 = 1;
+   CharT arg2 = WIDEN('a');
+   bool arg3 = true;
+   res = vformat(WIDEN("{} {:?} {}"), make_format_args<context>(arg1, arg2, arg3));
+   VERIFY( res == WIDEN("1 'a' true") );
+ }
+ 
+ template<typename CharT>
+ constexpr void
+ test_vformat_to()
+ {
+   using namespace std;
+   using context = __format::__format_context<CharT>;
+ 
+   CharT buf[100];
+   CharT* out;
+ 
+   nullptr_t arg1 = nullptr;
+   basic_string<CharT> arg2 = WIDEN("foo");
+   tuple<int, int> arg3{-3, 5};
+   out = vformat_to(buf, WIDEN("{} {:?} {}"), make_format_args<context>(arg1, arg2, arg3));
+   VERIFY( basic_string_view<CharT>(buf, out) == WIDEN("0x0 \"foo\" (-3, 5)") );
+ }
+ 
+ template<typename CharT>
+ constexpr void
+ test_format_to_n()
+ {
+   using namespace std;
+ 
+   CharT buf[100];
+   format_to_n_result<CharT*> out;
+   int n;
+ 
+   n = 100;
+   out = format_to_n(buf, n, WIDEN("{:+} {:?} {}"), 1, WIDEN("\n\n"), vector{1, 2, 3});
+   VERIFY( out.size <= n );
+   VERIFY( out.out - buf == out.size );
+   VERIFY( basic_string_view<CharT>(buf, out.size) == WIDEN("+1 \"\\n\\n\" [1, 2, 3]") );
+   n = 12;
+   out = format_to_n(buf, n, WIDEN("{} {} {}"), true, nullptr, WIDEN("long string"));
+   VERIFY( out.size > n );
+   VERIFY( out.out - buf == n );
+   VERIFY( basic_string_view<CharT>(buf, out.out) == WIDEN("true 0x0 lon") );
+ }
+ 
+ constexpr bool
+ all_tests()
+ {
+   test_format<char>();
+   test_format<wchar_t>();
+   test_format_to<char>();
+   test_format_to<wchar_t>();
+   test_vformat<char>();
+   test_vformat<wchar_t>();
+   test_vformat_to<char>();
+   test_vformat_to<wchar_t>();
+   test_format_to_n<char>();
+   test_format_to_n<wchar_t>();
+ 
+   return true;
+ }
+ 
+ static_assert(all_tests());
+ 
+ #endif // _GLIBCXX_USE_CXX11_ABI
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/debug.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/debug.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/debug.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/debug.cc	Sun Jun  7 22:32:17 2026
***************
*** 1,5 ****
! // { dg-options "-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32LE -DUNICODE_ENC" { target le } }
! // { dg-options "-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32BE -DUNICODE_ENC" { target be } }
  // { dg-do run { target c++23 } }
  // { dg-require-effective-target 4byte_wchar_t }
  // { dg-add-options no_pch }
--- 1,5 ----
! // { dg-options "-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32LE -DUNICODE_ENC -fconstexpr-ops-limit=500000000" { target le } }
! // { dg-options "-fexec-charset=UTF-8 -fwide-exec-charset=UTF-32BE -DUNICODE_ENC -fconstexpr-ops-limit=500000000" { target be } }
  // { dg-do run { target c++23 } }
  // { dg-require-effective-target 4byte_wchar_t }
  // { dg-add-options no_pch }
***************
*** 8,26 ****
  #include <format>
  #include <testsuite_hooks.h>
  
! std::string
  fdebug(char t)
  { return std::format("{:?}", t); }
  
! std::wstring
  fdebug(wchar_t t)
  { return std::format(L"{:?}", t); }
  
! std::string
  fdebug(std::string_view t)
  { return std::format("{:?}", t); }
  
! std::wstring
  fdebug(std::wstring_view t)
  { return std::format(L"{:?}", t); }
  
--- 8,32 ----
  #include <format>
  #include <testsuite_hooks.h>
  
! #ifdef __glibcxx_constexpr_format
! # define CONSTEXPR constexpr
! #else
! # define CONSTEXPR
! #endif
! 
! CONSTEXPR std::string
  fdebug(char t)
  { return std::format("{:?}", t); }
  
! CONSTEXPR std::wstring
  fdebug(wchar_t t)
  { return std::format(L"{:?}", t); }
  
! CONSTEXPR std::string
  fdebug(std::string_view t)
  { return std::format("{:?}", t); }
  
! CONSTEXPR std::wstring
  fdebug(std::wstring_view t)
  { return std::format(L"{:?}", t); }
  
*************** fdebug(std::wstring_view t)
*** 29,35 ****
  #define WIDEN(S) WIDEN_(CharT, S)
  
  template<typename CharT>
! void
  test_basic_escapes()
  {
    std::basic_string<CharT> res;
--- 35,41 ----
  #define WIDEN(S) WIDEN_(CharT, S)
  
  template<typename CharT>
! CONSTEXPR void
  test_basic_escapes()
  {
    std::basic_string<CharT> res;
*************** test_basic_escapes()
*** 69,78 ****
    VERIFY( res == WIDEN(R"("'")") );
    res = fdebug(apos[0]);
    VERIFY( res == WIDEN(R"('\'')") );
  }
  
  template<typename CharT>
! void
  test_ascii_escapes()
  {
    std::basic_string<CharT> res;
--- 75,91 ----
    VERIFY( res == WIDEN(R"("'")") );
    res = fdebug(apos[0]);
    VERIFY( res == WIDEN(R"('\'')") );
+ 
+   // This is not standard escape, but still supported at compile time.
+   const std::basic_string<CharT> null(WIDEN("\0"), 1);
+   res = fdebug(null);
+   VERIFY( res == WIDEN(R"("\u{0}")") );
+   res = fdebug(null[0]);
+   VERIFY( res == WIDEN(R"('\u{0}')") );
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_ascii_escapes()
  {
    std::basic_string<CharT> res;
*************** test_ascii_escapes()
*** 89,95 ****
  }
  
  template<typename CharT>
! void
  test_extended_ascii()
  {
    std::basic_string<CharT> res;
--- 102,108 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_extended_ascii()
  {
    std::basic_string<CharT> res;
*************** test_extended_ascii()
*** 117,123 ****
  }
  
  template<typename CharT>
! void
  test_unicode_escapes()
  {
  #if UNICODE_ENC
--- 130,136 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_unicode_escapes()
  {
  #if UNICODE_ENC
*************** test_unicode_escapes()
*** 166,172 ****
  }
  
  template<typename CharT>
! void
  test_grapheme_extend()
  {
  #if UNICODE_ENC
--- 179,185 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_grapheme_extend()
  {
  #if UNICODE_ENC
*************** test_grapheme_extend()
*** 192,198 ****
  }
  
  template<typename CharT>
! void
  test_replacement_char()
  {
  #if UNICODE_ENC
--- 205,211 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_replacement_char()
  {
  #if UNICODE_ENC
*************** test_replacement_char()
*** 206,212 ****
  #endif // UNICODE_ENC
  }
  
! void
  test_ill_formed_utf8_seq()
  {
  #if UNICODE_ENC
--- 219,225 ----
  #endif // UNICODE_ENC
  }
  
! CONSTEXPR void
  test_ill_formed_utf8_seq()
  {
  #if UNICODE_ENC
*************** test_ill_formed_utf8_seq()
*** 244,250 ****
  #endif // UNICODE_ENC
  }
  
! void
  test_ill_formed_utf32()
  {
  #if UNICODE_ENC
--- 257,263 ----
  #endif // UNICODE_ENC
  }
  
! CONSTEXPR void
  test_ill_formed_utf32()
  {
  #if UNICODE_ENC
*************** test_ill_formed_utf32()
*** 269,275 ****
  }
  
  template<typename CharT>
! void
  test_fill()
  {
    std::basic_string<CharT> res;
--- 282,288 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_fill()
  {
    std::basic_string<CharT> res;
*************** test_fill()
*** 315,321 ****
  }
  
  template<typename CharT>
! void
  test_prec()
  {
    std::basic_string<CharT> res;
--- 328,334 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_prec()
  {
    std::basic_string<CharT> res;
*************** test_prec()
*** 341,347 ****
  #endif // UNICODE_ENC
  }
  
! bool strip_quote(std::string_view& v)
  {
    if (!v.starts_with('"'))
      return false;
--- 354,361 ----
  #endif // UNICODE_ENC
  }
  
! CONSTEXPR bool
! strip_quote(std::string_view& v)
  {
    if (!v.starts_with('"'))
      return false;
*************** bool strip_quote(std::string_view& v)
*** 349,355 ****
    return true;
  }
  
! bool strip_quotes(std::string_view& v)
  {
    if (!v.starts_with('"') || !v.ends_with('"'))
      return false;
--- 363,370 ----
    return true;
  }
  
! CONSTEXPR bool
! strip_quotes(std::string_view& v)
  {
    if (!v.starts_with('"') || !v.ends_with('"'))
      return false;
*************** bool strip_quotes(std::string_view& v)
*** 358,364 ****
    return true;
  }
  
! bool strip_prefix(std::string_view& v, size_t n, char c)
  {
    size_t pos = v.find_first_not_of(c);
    if (pos == std::string_view::npos)
--- 373,380 ----
    return true;
  }
  
! CONSTEXPR bool
! strip_prefix(std::string_view& v, size_t n, char c)
  {
    size_t pos = v.find_first_not_of(c);
    if (pos == std::string_view::npos)
*************** bool strip_prefix(std::string_view& v, s
*** 369,375 ****
    return true;
  }
  
! void test_padding()
  {
    std::string res;
    std::string_view resv;
--- 385,392 ----
    return true;
  }
  
! CONSTEXPR void
! test_padding()
  {
    std::string res;
    std::string_view resv;
*************** void test_padding()
*** 719,725 ****
  #endif // UNICODE_ENC
  }
  
! void test_char_as_wchar()
  {
    std::wstring res;
  
--- 736,743 ----
  #endif // UNICODE_ENC
  }
  
! CONSTEXPR void
! test_char_as_wchar()
  {
    std::wstring res;
  
*************** struct std::formatter<DebugWrapper<T>, C
*** 751,758 ****
    }
  
    template<typename Out>
!   Out format(DebugWrapper<T> const& t,
! 	     std::basic_format_context<Out, CharT>& fc) const
    { return under.format(t.val, fc); }
  
  private:
--- 769,777 ----
    }
  
    template<typename Out>
!   CONSTEXPR Out
!   format(DebugWrapper<T> const& t,
! 	 std::basic_format_context<Out, CharT>& fc) const
    { return under.format(t.val, fc); }
  
  private:
*************** private:
*** 760,766 ****
  };
  
  template<typename CharT, typename StrT>
! void
  test_formatter_str()
  {
    CharT buf[]{ 'a', 'b', 'c', 0 };
--- 779,785 ----
  };
  
  template<typename CharT, typename StrT>
! CONSTEXPR void
  test_formatter_str()
  {
    CharT buf[]{ 'a', 'b', 'c', 0 };
*************** test_formatter_str()
*** 770,776 ****
  }
  
  template<typename CharT>
! void
  test_formatter_arr()
  {
    std::basic_string<CharT> res;
--- 789,795 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_formatter_arr()
  {
    std::basic_string<CharT> res;
*************** test_formatter_arr()
*** 786,792 ****
  }
  
  template<typename CharT, typename SrcT>
! void
  test_formatter_char()
  {
    DebugWrapper<SrcT> in{ 'a' };
--- 805,811 ----
  }
  
  template<typename CharT, typename SrcT>
! CONSTEXPR void
  test_formatter_char()
  {
    DebugWrapper<SrcT> in{ 'a' };
*************** test_formatter_char()
*** 795,801 ****
  }
  
  template<typename CharT>
! void
  test_formatters()
  {
    test_formatter_char<CharT, CharT>();
--- 814,820 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_formatters()
  {
    test_formatter_char<CharT, CharT>();
*************** test_formatters()
*** 806,812 ****
    test_formatter_arr<CharT>();
  }
  
! void
  test_formatters_c()
  {
    test_formatters<char>();
--- 825,831 ----
    test_formatter_arr<CharT>();
  }
  
! CONSTEXPR void
  test_formatters_c()
  {
    test_formatters<char>();
*************** test_formatters_c()
*** 814,823 ****
    test_formatter_char<wchar_t, char>();
  }
  
! int main()
  {
    test_basic_escapes<char>();
    test_basic_escapes<wchar_t>();
    test_ascii_escapes<char>();
    test_ascii_escapes<wchar_t>();
    test_extended_ascii<char>();
--- 833,851 ----
    test_formatter_char<wchar_t, char>();
  }
  
! CONSTEXPR bool
! test_all()
  {
    test_basic_escapes<char>();
    test_basic_escapes<wchar_t>();
+ 
+ #ifndef UNICODE_ENC
+   // For non-unicode literal encoding debug output only supports
+   // printable ASCII and standard escapes at compile time
+   if (std::is_constant_evaluated())
+     return true;
+ #endif
+ 
    test_ascii_escapes<char>();
    test_ascii_escapes<wchar_t>();
    test_extended_ascii<char>();
*************** int main()
*** 840,843 ****
--- 868,882 ----
    test_padding();
  
    test_formatters_c();
+ 
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/debug_nonunicode_neg.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/debug_nonunicode_neg.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/debug_nonunicode_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/debug_nonunicode_neg.cc	Sun Jun  7 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ // { dg-options "-fexec-charset=ISO-8859-1" }
+ // { dg-do compile { target c++26 } }
+ // { dg-require-effective-target cxx11_abi }
+ // { dg-require-iconv "ISO-8859-1" }
+ 
+ #include <format>
+ 
+ constexpr bool
+ test_format(std::string_view str)
+ {
+   (void)std::format("{:?}", str);
+   return true;
+ }
+ 
+ static_assert(test_format("\x10")); // { dg-error "in 'constexpr' expansion of" }
+ static_assert(test_format("Åëÿ")); // { dg-error "in 'constexpr' expansion of" }
+ 
+ // { dg-prune-output "for non-Unicode literal encodings, only printable ASCII characters and standard" }
+ 
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/dynamic_format.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/dynamic_format.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/dynamic_format.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/dynamic_format.cc	Sun Jun  7 22:32:17 2026
***************
*** 3,9 ****
  #include <format>
  #include <testsuite_hooks.h>
  
! void
  test_char()
  {
    std::string fmt = "{}";
--- 3,15 ----
  #include <format>
  #include <testsuite_hooks.h>
  
! #ifdef __glibcxx_constexpr_format
! # define CONSTEXPR constexpr
! #else
! # define CONSTEXPR
! #endif
! 
! CONSTEXPR void
  test_char()
  {
    std::string fmt = "{}";
*************** test_char()
*** 11,17 ****
    VERIFY( s == "123" );
  }
  
! void
  test_wchar()
  {
    std::wstring fmt = L"{:#o}";
--- 17,23 ----
    VERIFY( s == "123" );
  }
  
! CONSTEXPR void
  test_wchar()
  {
    std::wstring fmt = L"{:#o}";
*************** test_wchar()
*** 19,25 ****
    VERIFY( s == L"0710" );
  }
  
! void
  test_internal_api()
  {
    // Using _Dynamic_format_string directly works even in C++20 mode.
--- 25,31 ----
    VERIFY( s == L"0710" );
  }
  
! CONSTEXPR void
  test_internal_api()
  {
    // Using _Dynamic_format_string directly works even in C++20 mode.
*************** static_assert( !std::is_constructible_v<
*** 40,48 ****
  static_assert( !std::is_constructible_v<std::wformat_string<>,
  					decltype(std::dynamic_format(L""))&&> );
  
! int main()
  {
    test_char();
    test_wchar();
    test_internal_api();
  }
--- 46,65 ----
  static_assert( !std::is_constructible_v<std::wformat_string<>,
  					decltype(std::dynamic_format(L""))&&> );
  
! CONSTEXPR bool
! test_all()
  {
    test_char();
    test_wchar();
    test_internal_api();
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/functions/format.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/functions/format.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/functions/format.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/functions/format.cc	Sun Jun  7 22:32:17 2026
***************
*** 5,10 ****
--- 5,16 ----
  
  #include <format>
  
+ #ifdef __glibcxx_constexpr_format
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  #ifndef __cpp_lib_format
  # error "Feature test macro for std::format is missing in <format>"
  #elif __cpp_lib_format < 202110L
***************
*** 41,47 ****
  #include <cstdio>
  #include <testsuite_hooks.h>
  
! void
  test_no_args()
  {
    std::string s;
--- 47,53 ----
  #include <cstdio>
  #include <testsuite_hooks.h>
  
! CONSTEXPR void
  test_no_args()
  {
    std::string s;
*************** test_no_args()
*** 55,61 ****
    VERIFY( s == "128bpm }" );
  }
  
! void
  test_unescaped()
  {
  #ifdef __cpp_exceptions
--- 61,67 ----
    VERIFY( s == "128bpm }" );
  }
  
! CONSTEXPR void
  test_unescaped()
  {
  #ifdef __cpp_exceptions
*************** struct brit_punc : std::numpunct<char>
*** 78,84 ****
    std::string do_falsename() const override { return "nah bruv"; }
  };
  
! void
  test_std_examples()
  {
    using namespace std;
--- 84,90 ----
    std::string do_falsename() const override { return "nah bruv"; }
  };
  
! CONSTEXPR void
  test_std_examples()
  {
    using namespace std;
*************** test_std_examples()
*** 125,134 ****
      VERIFY(s0 == "1,+1,1, 1");
      string s1 = format("{0:},{0:+},{0:-},{0: }", -1);
      VERIFY(s1 == "-1,-1,-1,-1");
!     string s2 = format("{0:},{0:+},{0:-},{0: }", inf);
!     VERIFY(s2 == "inf,+inf,inf, inf");
!     string s3 = format("{0:},{0:+},{0:-},{0: }", nan);
!     VERIFY(s3 == "nan,+nan,nan, nan");
    }
  
    // alternate form and zero fill
--- 131,143 ----
      VERIFY(s0 == "1,+1,1, 1");
      string s1 = format("{0:},{0:+},{0:-},{0: }", -1);
      VERIFY(s1 == "-1,-1,-1,-1");
!     if (!std::is_constant_evaluated())
!       {
! 	string s2 = format("{0:},{0:+},{0:-},{0: }", inf);
! 	VERIFY(s2 == "inf,+inf,inf, inf");
! 	string s3 = format("{0:},{0:+},{0:-},{0: }", nan);
! 	VERIFY(s3 == "nan,+nan,nan, nan");
!       }
    }
  
    // alternate form and zero fill
*************** test_std_examples()
*** 143,176 ****
    }
  
    // integer presentation types
!   {
!     // Change global locale so "{:L}" adds digit separators.
!     std::locale::global(std::locale({}, new brit_punc));
  
!     string s0 = format("{}", 42);
!     VERIFY(s0 == "42");
!     string s1 = format("{0:b} {0:d} {0:o} {0:x}", 42);
!     VERIFY(s1 == "101010 42 52 2a");
!     string s2 = format("{0:#x} {0:#X}", 42);
!     VERIFY(s2 == "0x2a 0X2A");
!     string s3 = format("{:L}", 1234);
!     VERIFY(s3 == "1,234");
  
!     // Test locale's "byte-and-a-half" grouping (Imperial word? tribble?).
!     string s4 = format("{:#Lx}", 0xfffff);
!     VERIFY(s4 == "0xff,fff");
  
!     // Restore
!     std::locale::global(std::locale::classic());
  
!     string s5 = format("{}", -100); // PR libstdc++/114325
!     VERIFY(s5 == "-100");
!     string s6 = format("{:d} {:d}", -123, 999);
!     VERIFY(s6 == "-123 999");
!   }
  }
  
! void
  test_alternate_forms()
  {
    std::string s;
--- 152,186 ----
    }
  
    // integer presentation types
!   if (!std::is_constant_evaluated())
!     {
!       // Change global locale so "{:L}" adds digit separators.
!       std::locale::global(std::locale({}, new brit_punc));
  
!       string s0 = format("{}", 42);
!       VERIFY(s0 == "42");
!       string s1 = format("{0:b} {0:d} {0:o} {0:x}", 42);
!       VERIFY(s1 == "101010 42 52 2a");
!       string s2 = format("{0:#x} {0:#X}", 42);
!       VERIFY(s2 == "0x2a 0X2A");
!       string s3 = format("{:L}", 1234);
!       VERIFY(s3 == "1,234");
  
!       // Test locale's "byte-and-a-half" grouping (Imperial word? tribble?).
!       string s4 = format("{:#Lx}", 0xfffff);
!       VERIFY(s4 == "0xff,fff");
  
!       // Restore
!       std::locale::global(std::locale::classic());
  
!       string s5 = format("{}", -100); // PR libstdc++/114325
!       VERIFY(s5 == "-100");
!       string s6 = format("{:d} {:d}", -123, 999);
!       VERIFY(s6 == "-123 999");
!     }
  }
  
! CONSTEXPR void
  test_alternate_forms()
  {
    std::string s;
*************** test_alternate_forms()
*** 180,202 ****
    s = std::format("{0:#b} {0:+#B} {0:#o} {0:#x} {0:+#X} {0: #d}", 0);
    VERIFY( s == "0b0 +0B0 0 0x0 +0X0  0" );
  
!   s = std::format("{0:+#012g} {0:+#014g} {0:+#014g}", 1234.0);
!   VERIFY( s == "+00001234.00 +0000001234.00 +0000001234.00" );
!   s = std::format("{0:+#0{1}g} {0:+#0{2}g} {0:+#0{2}g}", 1234.5, 12, 14);
!   VERIFY( s == "+00001234.50 +0000001234.50 +0000001234.50" );
  
!   s = std::format("{:#.2g}", -0.0);
!   VERIFY( s == "-0.0" );
  
!   // PR libstdc++/108046
!   s = std::format("{0:#.0} {0:#.1} {0:#.0g}", 10.0);
!   VERIFY( s == "1.e+01 1.e+01 1.e+01" );
  
!   // PR libstdc++/113512
!   s = std::format("{:#.3g}", 0.025);
!   VERIFY( s == "0.0250" );
!   s = std::format("{:#07.3g}", 0.02);
!   VERIFY( s == "00.0200" );
  }
  
  void
--- 190,215 ----
    s = std::format("{0:#b} {0:+#B} {0:#o} {0:#x} {0:+#X} {0: #d}", 0);
    VERIFY( s == "0b0 +0B0 0 0x0 +0X0  0" );
  
!   if (!std::is_constant_evaluated())
!     {
!       s = std::format("{0:+#012g} {0:+#014g} {0:+#014g}", 1234.0);
!       VERIFY( s == "+00001234.00 +0000001234.00 +0000001234.00" );
!       s = std::format("{0:+#0{1}g} {0:+#0{2}g} {0:+#0{2}g}", 1234.5, 12, 14);
!       VERIFY( s == "+00001234.50 +0000001234.50 +0000001234.50" );
  
!       s = std::format("{:#.2g}", -0.0);
!       VERIFY( s == "-0.0" );
  
!       // PR libstdc++/108046
!       s = std::format("{0:#.0} {0:#.1} {0:#.0g}", 10.0);
!       VERIFY( s == "1.e+01 1.e+01 1.e+01" );
  
!       // PR libstdc++/113512
!       s = std::format("{:#.3g}", 0.025);
!       VERIFY( s == "0.0250" );
!       s = std::format("{:#07.3g}", 0.02);
!       VERIFY( s == "00.0200" );
!     }
  }
  
  void
*************** test_locale()
*** 275,281 ****
    std::locale::global(cloc);
  }
  
! void
  test_width()
  {
    std::string s;
--- 288,294 ----
    std::locale::global(cloc);
  }
  
! CONSTEXPR void
  test_width()
  {
    std::string s;
*************** test_width()
*** 317,323 ****
    }
  }
  
! void
  test_char()
  {
    std::string s;
--- 330,336 ----
    }
  }
  
! CONSTEXPR void
  test_char()
  {
    std::string s;
*************** test_char()
*** 347,353 ****
    VERIFY( s == "11110000 11110000 240 360 f0 F0" );
  }
  
! void
  test_wchar()
  {
    using namespace std::literals;
--- 360,366 ----
    VERIFY( s == "11110000 11110000 240 360 f0 F0" );
  }
  
! CONSTEXPR void
  test_wchar()
  {
    using namespace std::literals;
*************** test_wchar()
*** 356,379 ****
    s = std::format(L"{}", L'a');
    VERIFY( s == L"a" );
  
!   s = std::format(L"{} {} {} {} {} {}", L'0', 1, 2LL, 3.4, L"five", L"six"s);
!   VERIFY( s == L"0 1 2 3.4 five six" );
  
!   std::locale loc;
!   s = std::format(loc, L"{:L} {:.3s}{:Lc}", true, L"data"sv, '.');
!   VERIFY( s == L"true dat." );
  
!   s = std::format(L"{}", 0.0625);
!   VERIFY( s == L"0.0625" );
!   s = std::format(L"{}", 0.25);
!   VERIFY( s == L"0.25" );
!   s = std::format(L"{:+a} {:A}", 0x1.23p45, -0x1.abcdefp-15);
!   VERIFY( s == L"+1.23p+45 -1.ABCDEFP-15" );
  
!   double inf = std::numeric_limits<double>::infinity();
!   double nan = std::numeric_limits<double>::quiet_NaN();
!   s = std::format(L"{0} {0:F} {1} {1:E}", -inf, -nan);
!   VERIFY( s == L"-inf -INF -nan -NAN" );
  
    s = std::format(L"{0:#b} {0:#B} {0:#x} {0:#X}", 99);
    VERIFY( s == L"0b1100011 0B1100011 0x63 0X63" );
--- 369,395 ----
    s = std::format(L"{}", L'a');
    VERIFY( s == L"a" );
  
!   if (!std::is_constant_evaluated())
!     {
!       s = std::format(L"{} {} {} {} {} {}", L'0', 1, 2LL, 3.4, L"five", L"six"s);
!       VERIFY( s == L"0 1 2 3.4 five six" );
  
!       std::locale loc;
!       s = std::format(loc, L"{:L} {:.3s}{:Lc}", true, L"data"sv, '.');
!       VERIFY( s == L"true dat." );
  
!       s = std::format(L"{}", 0.0625);
!       VERIFY( s == L"0.0625" );
!       s = std::format(L"{}", 0.25);
!       VERIFY( s == L"0.25" );
!       s = std::format(L"{:+a} {:A}", 0x1.23p45, -0x1.abcdefp-15);
!       VERIFY( s == L"+1.23p+45 -1.ABCDEFP-15" );
  
!       double inf = std::numeric_limits<double>::infinity();
!       double nan = std::numeric_limits<double>::quiet_NaN();
!       s = std::format(L"{0} {0:F} {1} {1:E}", -inf, -nan);
!       VERIFY( s == L"-inf -INF -nan -NAN" );
!     }
  
    s = std::format(L"{0:#b} {0:#B} {0:#x} {0:#X}", 99);
    VERIFY( s == L"0b1100011 0B1100011 0x63 0X63" );
*************** test_wchar()
*** 382,401 ****
    s = std::format(L"{:d} {:d}", wchar_t(-1), char(-1));
    VERIFY( s.find('-') == std::wstring::npos );
  
!   auto ws = std::format(L"{:L}", 0.5);
!   VERIFY( ws == L"0.5" );
!   // The default C locale.
!   std::locale cloc = std::locale::classic();
!   // PR libstdc++/119671 use-after-free formatting floating-point to wstring
!   ws = std::format(cloc, L"{:L}", 0.5);
!   VERIFY( ws == L"0.5" );
!   // A locale with no name, but with the same facets as the C locale.
!   std::locale locx(cloc, &std::use_facet<std::ctype<char>>(cloc));
!   ws = std::format(locx, L"{:L}", 0.5);
!   VERIFY( ws == L"0.5" );
  }
  
! void
  test_minmax()
  {
    auto check = []<typename T, typename U = std::make_unsigned_t<T>>(T, U = 0) {
--- 398,420 ----
    s = std::format(L"{:d} {:d}", wchar_t(-1), char(-1));
    VERIFY( s.find('-') == std::wstring::npos );
  
!   if (!std::is_constant_evaluated())
!     {
!       auto ws = std::format(L"{:L}", 0.5);
!       VERIFY( ws == L"0.5" );
!       // The default C locale.
!       std::locale cloc = std::locale::classic();
!       // PR libstdc++/119671 use-after-free formatting floating-point to wstring
!       ws = std::format(cloc, L"{:L}", 0.5);
!       VERIFY( ws == L"0.5" );
!       // A locale with no name, but with the same facets as the C locale.
!       std::locale locx(cloc, &std::use_facet<std::ctype<char>>(cloc));
!       ws = std::format(locx, L"{:L}", 0.5);
!       VERIFY( ws == L"0.5" );
!     }
  }
  
! CONSTEXPR void
  test_minmax()
  {
    auto check = []<typename T, typename U = std::make_unsigned_t<T>>(T, U = 0) {
*************** test_minmax()
*** 422,428 ****
  #endif
  }
  
! void
  test_p1652r1() // printf corner cases in std::format
  {
    std::string s;
--- 441,447 ----
  #endif
  }
  
! CONSTEXPR void
  test_p1652r1() // printf corner cases in std::format
  {
    std::string s;
*************** test_p1652r1() // printf corner cases in
*** 436,462 ****
    s = std::format("{:c}", c);
    VERIFY( s == "A" );
  
!   // Problem 3: "-000nan" is not a floating point value
!   double nan = std::numeric_limits<double>::quiet_NaN();
!   try {
!     s = std::vformat("{:0=6}", std::make_format_args(nan));
!     VERIFY( false );
!   } catch (const std::format_error&) {
!   }
! 
!   s = std::format("{:06}", nan);
!   VERIFY( s == "   nan" );
  
    // Problem 4: bool needs a type format specifier
    s = std::format("{:s}", true);
    VERIFY( s == "true" );
  
!   // Problem 5: double does not roundtrip float
!   s = std::format("{}", 3.31f);
!   VERIFY( s == "3.31" );
  }
  
! void
  test_pointer()
  {
    void* p = nullptr;
--- 455,487 ----
    s = std::format("{:c}", c);
    VERIFY( s == "A" );
  
!   if (!std::is_constant_evaluated())
!     {
!       // Problem 3: "-000nan" is not a floating point value
!       double nan = std::numeric_limits<double>::quiet_NaN();
!       try {
! 	s = std::vformat("{:0=6}", std::make_format_args(nan));
! 	VERIFY( false );
!       } catch (const std::format_error&) {
!       }
!   
!       s = std::format("{:06}", nan);
!       VERIFY( s == "   nan" );
!     }
  
    // Problem 4: bool needs a type format specifier
    s = std::format("{:s}", true);
    VERIFY( s == "true" );
  
!   if (!std::is_constant_evaluated())
!     {
!       // Problem 5: double does not roundtrip float
!       s = std::format("{}", 3.31f);
!       VERIFY( s == "3.31" );
!     }
  }
  
! CONSTEXPR void
  test_pointer()
  {
    void* p = nullptr;
*************** test_pointer()
*** 477,504 ****
    s = std::format("{:o<4},{:o>5},{:o^7}", p, pc, nullptr); // fill+align+width
    VERIFY( s == "0x0o,oo0x0,oo0x0oo" );
  
!   pc = p = &s;
!   str_int = std::format("{:#x}", reinterpret_cast<std::uintptr_t>(p));
!   s = std::format("{} {} {}", p, pc, nullptr);
!   VERIFY( s == (str_int + ' ' + str_int + " 0x0") );
!   str_int = std::format("{:#20x}", reinterpret_cast<std::uintptr_t>(p));
!   s = std::format("{:20} {:20p}", p, pc);
!   VERIFY( s == (str_int + ' ' + str_int) );
  
  #if __cpp_lib_format >= 202304L
!   // P2510R3 Formatting pointers
!   s = std::format("{:06} {:07P} {:08p}", (void*)0, (const void*)0, nullptr);
!   VERIFY( s == "0x0000 0X00000 0x000000" );
!   str_int = std::format("{:#016x}", reinterpret_cast<std::uintptr_t>(p));
!   s = std::format("{:016} {:016}", p, pc);
!   VERIFY( s == (str_int + ' ' + str_int) );
!   str_int = std::format("{:#016X}", reinterpret_cast<std::uintptr_t>(p));
!   s = std::format("{:016P} {:016P}", p, pc);
!   VERIFY( s == (str_int + ' ' + str_int) );
  #endif
  }
  
! void
  test_bool()
  {
    std::string s;
--- 502,532 ----
    s = std::format("{:o<4},{:o>5},{:o^7}", p, pc, nullptr); // fill+align+width
    VERIFY( s == "0x0o,oo0x0,oo0x0oo" );
  
!   if (!std::is_constant_evaluated())
!     {
!       pc = p = &s;
!       str_int = std::format("{:#x}", reinterpret_cast<std::uintptr_t>(p));
!       s = std::format("{} {} {}", p, pc, nullptr);
!       VERIFY( s == (str_int + ' ' + str_int + " 0x0") );
!       str_int = std::format("{:#20x}", reinterpret_cast<std::uintptr_t>(p));
!       s = std::format("{:20} {:20p}", p, pc);
!       VERIFY( s == (str_int + ' ' + str_int) );
  
  #if __cpp_lib_format >= 202304L
!       // P2510R3 Formatting pointers
!       s = std::format("{:06} {:07P} {:08p}", (void*)0, (const void*)0, nullptr);
!       VERIFY( s == "0x0000 0X00000 0x000000" );
!       str_int = std::format("{:#016x}", reinterpret_cast<std::uintptr_t>(p));
!       s = std::format("{:016} {:016}", p, pc);
!       VERIFY( s == (str_int + ' ' + str_int) );
!       str_int = std::format("{:#016X}", reinterpret_cast<std::uintptr_t>(p));
!       s = std::format("{:016P} {:016P}", p, pc);
!       VERIFY( s == (str_int + ' ' + str_int) );
  #endif
+     }
  }
  
! CONSTEXPR void
  test_bool()
  {
    std::string s;
*************** test_bool()
*** 519,525 ****
    VERIFY( s == "0 0x1 0X0" );
  }
  
! void
  test_unicode()
  {
  #ifdef UNICODE
--- 547,553 ----
    VERIFY( s == "0 0x1 0X0" );
  }
  
! CONSTEXPR void
  test_unicode()
  {
  #ifdef UNICODE
*************** test_unicode()
*** 579,591 ****
  #endif
  }
  
! int main()
  {
    test_no_args();
    test_unescaped();
    test_std_examples();
    test_alternate_forms();
-   test_locale();
    test_width();
    test_char();
    test_wchar();
--- 607,619 ----
  #endif
  }
  
! CONSTEXPR bool
! test_all()
  {
    test_no_args();
    test_unescaped();
    test_std_examples();
    test_alternate_forms();
    test_width();
    test_char();
    test_wchar();
*************** int main()
*** 594,597 ****
--- 622,642 ----
    test_pointer();
    test_bool();
    test_unicode();
+ 
+   if (!std::is_constant_evaluated())
+     {
+       test_infnan();
+       test_locale();
+     }
+ 
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/functions/format_to.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/functions/format_to.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/functions/format_to.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/functions/format_to.cc	Sun Jun  7 22:32:17 2026
***************
*** 6,27 ****
  #include <cstring>
  #include <testsuite_hooks.h>
  
  struct punct : std::numpunct<char>
  {
    std::string do_grouping() const override { return "\2"; }
  };
  
! void
  test()
  {
    char buf[32] = { };
    auto out = std::format_to(buf, "test");
    VERIFY( out == buf+4 );
  
!   std::locale loc({}, new punct);
!   auto out2 = std::format_to(buf, loc, "{:Ld}", 12345);
!   VERIFY( out2 == buf+7 );
!   VERIFY( std::string_view(buf, out2 - buf) == "1,23,45" );
  }
  
  struct wpunct : std::numpunct<wchar_t>
--- 6,36 ----
  #include <cstring>
  #include <testsuite_hooks.h>
  
+ #ifdef __glibcxx_constexpr_format
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  struct punct : std::numpunct<char>
  {
    std::string do_grouping() const override { return "\2"; }
  };
  
! CONSTEXPR void
  test()
  {
    char buf[32] = { };
    auto out = std::format_to(buf, "test");
    VERIFY( out == buf+4 );
  
!   if (!std::is_constant_evaluated())
!     {
!       std::locale loc({}, new punct);
!       auto out2 = std::format_to(buf, loc, "{:Ld}", 12345);
!       VERIFY( out2 == buf+7 );
!       VERIFY( std::string_view(buf, out2 - buf) == "1,23,45" );
!     }
  }
  
  struct wpunct : std::numpunct<wchar_t>
*************** struct wpunct : std::numpunct<wchar_t>
*** 29,45 ****
    std::string do_grouping() const override { return "\2"; }
  };
  
! void
  test_wchar()
  {
    wchar_t buf[32] = { };
    auto out = std::format_to(buf, L"123 + 456 = {}", 579);
    VERIFY( out == buf+15 );
  
!   std::locale loc({}, new wpunct);
!   auto out2 = std::format_to(buf, loc, L"{:Ld}", 12345);
!   VERIFY( out2 == buf+7 );
!   VERIFY( std::wstring_view(buf, out2 - buf) == L"1,23,45" );
  }
  
  template<typename I>
--- 38,57 ----
    std::string do_grouping() const override { return "\2"; }
  };
  
! CONSTEXPR void
  test_wchar()
  {
    wchar_t buf[32] = { };
    auto out = std::format_to(buf, L"123 + 456 = {}", 579);
    VERIFY( out == buf+15 );
  
!   if (!std::is_constant_evaluated())
!     {
!       std::locale loc({}, new wpunct);
!       auto out2 = std::format_to(buf, loc, L"{:Ld}", 12345);
!       VERIFY( out2 == buf+7 );
!       VERIFY( std::wstring_view(buf, out2 - buf) == L"1,23,45" );
!     }
  }
  
  template<typename I>
*************** struct move_only_iterator
*** 50,69 ****
    using difference_type = iterator::difference_type;
    using iterator_category = std::output_iterator_tag;
  
!   move_only_iterator(iterator b) : base_(b) { }
    move_only_iterator(move_only_iterator&&) = default;
    move_only_iterator& operator=(move_only_iterator&&) = default;
  
!   move_only_iterator& operator++() { ++base_; return *this; }
!   move_only_iterator operator++(int) { auto tmp = *this; ++base_; return tmp; }
  
!   decltype(auto) operator*() { return *base_; }
  
  private:
    iterator base_;
  };
  
! void
  test_move_only()
  {
    std::string str;
--- 62,81 ----
    using difference_type = iterator::difference_type;
    using iterator_category = std::output_iterator_tag;
  
!   constexpr move_only_iterator(iterator b) : base_(b) { }
    move_only_iterator(move_only_iterator&&) = default;
    move_only_iterator& operator=(move_only_iterator&&) = default;
  
!   constexpr move_only_iterator& operator++() { ++base_; return *this; }
!   constexpr move_only_iterator operator++(int) { auto tmp = *this; ++base_; return tmp; }
  
!   constexpr decltype(auto) operator*() { return *base_; }
  
  private:
    iterator base_;
  };
  
! CONSTEXPR void
  test_move_only()
  {
    std::string str;
*************** test_move_only()
*** 79,85 ****
    VERIFY( std::wstring_view(vec.data(), vec.size()) == L"format hat!" );
  }
  
! void
  test_pr110917()
  {
    // PR libstdc++/110917
--- 91,97 ----
    VERIFY( std::wstring_view(vec.data(), vec.size()) == L"format hat!" );
  }
  
! CONSTEXPR void
  test_pr110917()
  {
    // PR libstdc++/110917
*************** test_pr110917()
*** 90,99 ****
    VERIFY( ! std::memcmp(buf, "abc 123", 7) );
  }
  
! int main()
  {
    test();
    test_wchar();
    test_move_only();
    test_pr110917();
  }
--- 102,123 ----
    VERIFY( ! std::memcmp(buf, "abc 123", 7) );
  }
  
! CONSTEXPR bool
! test_all()
  {
    test();
    test_wchar();
    test_move_only();
    test_pr110917();
+ 
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/functions/size.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/functions/size.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/functions/size.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/functions/size.cc	Sun Jun  7 22:32:17 2026
***************
*** 4,10 ****
  #include <string>
  #include <testsuite_hooks.h>
  
! void
  test()
  {
    auto n = std::formatted_size("");
--- 4,16 ----
  #include <string>
  #include <testsuite_hooks.h>
  
! #ifdef __glibcxx_constexpr_format
! # define CONSTEXPR constexpr
! #else
! # define CONSTEXPR
! #endif
! 
! CONSTEXPR void
  test()
  {
    auto n = std::formatted_size("");
*************** test()
*** 24,30 ****
    VERIFY( n == 5 );
  }
  
! void
  test_wchar()
  {
    auto n = std::formatted_size(L"");
--- 30,36 ----
    VERIFY( n == 5 );
  }
  
! CONSTEXPR void
  test_wchar()
  {
    auto n = std::formatted_size(L"");
*************** test_wchar()
*** 44,51 ****
    VERIFY( n == 5 );
  }
  
! int main()
  {
    test();
    test_wchar();
  }
--- 50,68 ----
    VERIFY( n == 5 );
  }
  
! CONSTEXPR bool
! test_all()
  {
    test();
    test_wchar();
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/ranges/format_kind.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/ranges/format_kind.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/ranges/format_kind.cc	Sun Jun  7 22:32:17 2026
***************
*** 12,17 ****
--- 12,23 ----
  #include <unordered_set>
  #include <vector>
  
+ #ifdef __glibcxx_constexpr_format
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  static_assert( std::format_kind<std::vector<int>> == std::range_format::sequence );
  static_assert( std::format_kind<std::deque<int>> == std::range_format::sequence );
  static_assert( std::format_kind<std::list<int>> == std::range_format::sequence );
*************** struct CustFormat : std::vector<T>
*** 64,70 ****
  template<typename T, std::range_format rf>
  constexpr auto std::format_kind<CustFormat<T, rf>> = rf;
  
! void test_override()
  {
    CustFormat<int, std::range_format::disabled> disabledf;
    static_assert( !std::formattable<decltype(disabledf), char> );
--- 70,77 ----
  template<typename T, std::range_format rf>
  constexpr auto std::format_kind<CustFormat<T, rf>> = rf;
  
! CONSTEXPR bool
! test_override()
  {
    CustFormat<int, std::range_format::disabled> disabledf;
    static_assert( !std::formattable<decltype(disabledf), char> );
*************** void test_override()
*** 88,95 ****
--- 95,108 ----
    VERIFY( std::format("{}", debugf) == R"("abcd")" );
    // Support precision as string do
    VERIFY( std::format("{:.3}", debugf) == R"("ab)" );
+ 
+   return true;
  }
  
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_override());
+ #endif
+ 
  int main()
  {
    test_override();
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/ranges/formatter.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/ranges/formatter.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/ranges/formatter.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/ranges/formatter.cc	Sun Jun  7 22:32:17 2026
***************
*** 6,11 ****
--- 6,17 ----
  #include <vector>
  #include <span>
  
+ #ifdef __glibcxx_constexpr_format
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
  #define WIDEN(S) WIDEN_(CharT, S)
  
*************** struct std::formatter<MyVector<T, Format
*** 32,38 ****
    { return _formatter.parse(pc);  }
  
    template<typename Out>
!   typename std::basic_format_context<Out, CharT>::iterator
    format(const MyVector<T, Formatter>& mv,
  	 std::basic_format_context<Out, CharT>& fc) const
    { return _formatter.format(mv, fc); }
--- 38,44 ----
    { return _formatter.parse(pc);  }
  
    template<typename Out>
!   CONSTEXPR std::basic_format_context<Out, CharT>::iterator
    format(const MyVector<T, Formatter>& mv,
  	 std::basic_format_context<Out, CharT>& fc) const
    { return _formatter.format(mv, fc); }
*************** private:
*** 42,48 ****
  };
  
  template<typename CharT, template<typename, typename> class Formatter>
! void
  test_default()
  {
    MyVector<int, Formatter> vec{1, 2, 3};
--- 48,54 ----
  };
  
  template<typename CharT, template<typename, typename> class Formatter>
! CONSTEXPR void
  test_default()
  {
    MyVector<int, Formatter> vec{1, 2, 3};
*************** test_default()
*** 94,100 ****
  }
  
  template<typename CharT, template<typename, typename> class Formatter>
! void
  test_override()
  {
    MyVector<CharT, Formatter> vc{'a', 'b', 'c', 'd'};
--- 100,106 ----
  }
  
  template<typename CharT, template<typename, typename> class Formatter>
! CONSTEXPR void
  test_override()
  {
    MyVector<CharT, Formatter> vc{'a', 'b', 'c', 'd'};
*************** test_override()
*** 115,121 ****
  }
  
  template<template<typename, typename> class Formatter>
! void test_outputs()
  {
    test_default<char, Formatter>();
    test_default<wchar_t, Formatter>();
--- 121,128 ----
  }
  
  template<template<typename, typename> class Formatter>
! CONSTEXPR void
! test_outputs()
  {
    test_default<char, Formatter>();
    test_default<wchar_t, Formatter>();
*************** void test_outputs()
*** 123,129 ****
    test_override<wchar_t, Formatter>();
  }
  
! void
  test_nested()
  {
    MyVector<MyVector<int>> v
--- 130,136 ----
    test_override<wchar_t, Formatter>();
  }
  
! CONSTEXPR void
  test_nested()
  {
    MyVector<MyVector<int>> v
*************** struct std::formatter<MyFlatMap, CharT>
*** 152,158 ****
    : std::range_formatter<MyFlatMap::reference>
  {};
  
! void test_const_ref_type_mismatch()
  {
    MyFlatMap m{{1, 11}, {2, 22}};
    std::string res = std::format("{:m}", m);
--- 159,166 ----
    : std::range_formatter<MyFlatMap::reference>
  {};
  
! CONSTEXPR void
! test_const_ref_type_mismatch()
  {
    MyFlatMap m{{1, 11}, {2, 22}};
    std::string res = std::format("{:m}", m);
*************** template<typename T, typename CharT>
*** 163,175 ****
  using VectorFormatter = std::formatter<std::vector<T>, CharT>;
  
  template<template<typename> typename Range>
! void test_nonblocking()
  {
    static_assert(!std::enable_nonlocking_formatter_optimization<
  		  Range<int>>);
  }
  
! int main()
  {
    test_outputs<std::range_formatter>();
    test_outputs<VectorFormatter>();
--- 171,185 ----
  using VectorFormatter = std::formatter<std::vector<T>, CharT>;
  
  template<template<typename> typename Range>
! CONSTEXPR void
! test_nonblocking()
  {
    static_assert(!std::enable_nonlocking_formatter_optimization<
  		  Range<int>>);
  }
  
! CONSTEXPR bool
! test_all()
  {
    test_outputs<std::range_formatter>();
    test_outputs<VectorFormatter>();
*************** int main()
*** 179,182 ****
--- 189,203 ----
    test_nonblocking<std::span>();
    test_nonblocking<std::vector>();
    test_nonblocking<MyVector>();
+ 
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/ranges/sequence.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/ranges/sequence.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/ranges/sequence.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/ranges/sequence.cc	Sun Jun  7 22:32:17 2026
***************
*** 1,5 ****
  // { dg-do run { target c++23 } }
! // { dg-options "-fexec-charset=UTF-8" }
  // { dg-timeout-factor 2 }
  
  #include <array>
--- 1,5 ----
  // { dg-do run { target c++23 } }
! // { dg-options "-fexec-charset=UTF-8 -fconstexpr-ops-limit=5000000000" }
  // { dg-timeout-factor 2 }
  
  #include <array>
***************
*** 12,17 ****
--- 12,23 ----
  #include <testsuite_iterators.h>
  #include <vector>
  
+ #ifdef __glibcxx_constexpr_format
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  struct NotFormattable
  {};
  
*************** static_assert(!std::formattable<std::vec
*** 19,25 ****
  static_assert(!std::formattable<std::span<NotFormattable>, wchar_t>);
  
  template<typename... Args>
! bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
--- 25,31 ----
  static_assert(!std::formattable<std::span<NotFormattable>, wchar_t>);
  
  template<typename... Args>
! CONSTEXPR bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
*************** is_format_string_for(const char* str, Ar
*** 31,37 ****
  }
  
  template<typename... Args>
! bool
  is_format_string_for(const wchar_t* str, Args&&... args)
  {
    try {
--- 37,43 ----
  }
  
  template<typename... Args>
! CONSTEXPR bool
  is_format_string_for(const wchar_t* str, Args&&... args)
  {
    try {
*************** is_format_string_for(const wchar_t* str,
*** 43,49 ****
  }
  
  template<typename Rg, typename CharT>
! bool is_range_formatter_spec_for(CharT const* spec, Rg&& rg)
  {
    using V = std::remove_cvref_t<std::ranges::range_reference_t<Rg>>;
    std::range_formatter<V, CharT> fmt;
--- 49,56 ----
  }
  
  template<typename Rg, typename CharT>
! CONSTEXPR bool
! is_range_formatter_spec_for(CharT const* spec, Rg&& rg)
  {
    using V = std::remove_cvref_t<std::ranges::range_reference_t<Rg>>;
    std::range_formatter<V, CharT> fmt;
*************** bool is_range_formatter_spec_for(CharT c
*** 56,62 ****
    }
  }
  
! void
  test_format_string()
  {
    // invalid format spec 'p'
--- 63,69 ----
    }
  }
  
! CONSTEXPR void
  test_format_string()
  {
    // invalid format spec 'p'
*************** test_format_string()
*** 79,85 ****
  #define WIDEN(S) WIDEN_(CharT, S)
  
  template<typename CharT, typename Range, typename Storage>
! void test_output()
  {
    using Sv = std::basic_string_view<CharT>;
    using T = std::ranges::range_value_t<Range>;
--- 86,93 ----
  #define WIDEN(S) WIDEN_(CharT, S)
  
  template<typename CharT, typename Range, typename Storage>
! CONSTEXPR void
! test_output()
  {
    using Sv = std::basic_string_view<CharT>;
    using T = std::ranges::range_value_t<Range>;
*************** void test_output()
*** 153,177 ****
  }
  
  template<typename Cont>
! void test_output_cont()
  {
    test_output<char, Cont&, Cont>();
    test_output<wchar_t, Cont const&, Cont>();
  }
  
  template<typename View>
! void test_output_view()
  {
    test_output<char, View, int[3]>();
    test_output<wchar_t, View, int[3]>();
  }
  
! void
  test_outputs()
  {
    using namespace __gnu_test;
    test_output_cont<std::vector<int>>();
!   test_output_cont<std::list<int>>();
    test_output_cont<std::array<int, 3>>();
  
    test_output_view<std::span<int>>();
--- 161,190 ----
  }
  
  template<typename Cont>
! CONSTEXPR void
! test_output_cont()
  {
    test_output<char, Cont&, Cont>();
    test_output<wchar_t, Cont const&, Cont>();
  }
  
  template<typename View>
! CONSTEXPR void
! test_output_view()
  {
    test_output<char, View, int[3]>();
    test_output<wchar_t, View, int[3]>();
  }
  
! CONSTEXPR void
  test_outputs()
  {
    using namespace __gnu_test;
    test_output_cont<std::vector<int>>();
! 
!   if (!std::is_constant_evaluated())
!     test_output_cont<std::list<int>>();
! 
    test_output_cont<std::array<int, 3>>();
  
    test_output_view<std::span<int>>();
*************** test_outputs()
*** 185,191 ****
    test_output_view<test_forward_range<const int>>();
  }
  
! void
  test_nested()
  {
    std::vector<std::vector<int>> v
--- 198,204 ----
    test_output_view<test_forward_range<const int>>();
  }
  
! CONSTEXPR void
  test_nested()
  {
    std::vector<std::vector<int>> v
*************** test_nested()
*** 201,207 ****
    VERIFY( res == "+[01, 02, 11, 12]+" );
  }
  
! bool strip_quote(std::string_view& v)
  {
    if (!v.starts_with('"'))
      return false;
--- 214,221 ----
    VERIFY( res == "+[01, 02, 11, 12]+" );
  }
  
! CONSTEXPR bool
! strip_quote(std::string_view& v)
  {
    if (!v.starts_with('"'))
      return false;
*************** bool strip_quote(std::string_view& v)
*** 209,215 ****
    return true;
  }
  
! bool strip_prefix(std::string_view& v, std::string_view expected, bool quoted = false)
  {
    if (quoted && !strip_quote(v))
      return false;
--- 223,230 ----
    return true;
  }
  
! CONSTEXPR bool
! strip_prefix(std::string_view& v, std::string_view expected, bool quoted = false)
  {
    if (quoted && !strip_quote(v))
      return false;
*************** bool strip_prefix(std::string_view& v, s
*** 221,227 ****
    return true;
  }
  
! bool strip_squares(std::string_view& v)
  {
    if (!v.starts_with('[') || !v.ends_with(']'))
      return false;
--- 236,243 ----
    return true;
  }
  
! CONSTEXPR bool
! strip_squares(std::string_view& v)
  {
    if (!v.starts_with('[') || !v.ends_with(']'))
      return false;
*************** bool strip_squares(std::string_view& v)
*** 230,236 ****
    return true;
  }
  
! bool strip_prefix(std::string_view& v, size_t n, char c)
  {
    size_t pos = v.find_first_not_of(c);
    if (pos == std::string_view::npos)
--- 246,253 ----
    return true;
  }
  
! CONSTEXPR bool
! strip_prefix(std::string_view& v, size_t n, char c)
  {
    size_t pos = v.find_first_not_of(c);
    if (pos == std::string_view::npos)
*************** bool strip_prefix(std::string_view& v, s
*** 241,247 ****
    return true;
  }
  
! void test_padding()
  {
    std::string res;
    std::string_view resv;
--- 258,265 ----
    return true;
  }
  
! CONSTEXPR void
! test_padding()
  {
    std::string res;
    std::string_view resv;
*************** void test_padding()
*** 323,332 ****
    VERIFY( check_elems(resv, false) );
  }
  
! int main()
  {
    test_format_string();
    test_outputs();
    test_nested();
    test_padding();
  }
--- 341,362 ----
    VERIFY( check_elems(resv, false) );
  }
  
! CONSTEXPR bool
! test_all()
  {
    test_format_string();
    test_outputs();
    test_nested();
    test_padding();
+   
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/string.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/string.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/string.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/string.cc	Sun Jun  7 22:32:17 2026
***************
*** 1,10 ****
  // { dg-do run { target c++20 } }
  
  #include <format>
  #include <testsuite_hooks.h>
  
  template<typename... Args>
! bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
--- 1,17 ----
  // { dg-do run { target c++20 } }
+ // { dg-options "-fconstexpr-ops-limit=100000000" }
  
  #include <format>
  #include <testsuite_hooks.h>
  
+ #ifdef __glibcxx_constexpr_format
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  template<typename... Args>
! CONSTEXPR bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
*************** is_format_string_for(const char* str, Ar
*** 16,22 ****
  }
  
  template<typename... Args>
! bool
  is_format_string_for(const wchar_t* str, Args&&... args)
  {
    try {
--- 23,29 ----
  }
  
  template<typename... Args>
! CONSTEXPR bool
  is_format_string_for(const wchar_t* str, Args&&... args)
  {
    try {
*************** is_format_string_for(const wchar_t* str,
*** 27,33 ****
    }
  }
  
! void
  test_no_args()
  {
    VERIFY( is_format_string_for("") );
--- 34,40 ----
    }
  }
  
! CONSTEXPR void
  test_no_args()
  {
    VERIFY( is_format_string_for("") );
*************** test_no_args()
*** 42,48 ****
    VERIFY( ! is_format_string_for("{{{{{") );
  }
  
! void
  test_indexing()
  {
    VERIFY( is_format_string_for("{} to {}", "a", "b") );   // automatic indexing
--- 49,55 ----
    VERIFY( ! is_format_string_for("{{{{{") );
  }
  
! CONSTEXPR void
  test_indexing()
  {
    VERIFY( is_format_string_for("{} to {}", "a", "b") );   // automatic indexing
*************** constexpr bool escaped_strings_supported
*** 68,74 ****
  constexpr bool escaped_strings_supported = false;
  #endif
  
! void
  test_format_spec()
  {
    VERIFY( is_format_string_for("{:}", 1) );
--- 75,81 ----
  constexpr bool escaped_strings_supported = false;
  #endif
  
! CONSTEXPR void
  test_format_spec()
  {
    VERIFY( is_format_string_for("{:}", 1) );
*************** test_format_spec()
*** 78,86 ****
    VERIFY( is_format_string_for("{0:} {0:c}", 'c') );
    VERIFY( is_format_string_for("{0:p} {0:}", nullptr) );
    VERIFY( is_format_string_for("{:d} {:+d}", true, true) );
!   VERIFY( is_format_string_for("{:0<-#03Ld}", 1) );
!   VERIFY( is_format_string_for("{1:0<-#03.4Lf}", 1, 2.3) );
!   VERIFY( is_format_string_for("{1:3.3f}", 1, 2.3) );
    VERIFY( is_format_string_for("{:#d}", 'c') );
    VERIFY( is_format_string_for("{:#d}", true) );
    VERIFY( is_format_string_for("{0:s} {0:?}", "str") == escaped_strings_supported );
--- 85,98 ----
    VERIFY( is_format_string_for("{0:} {0:c}", 'c') );
    VERIFY( is_format_string_for("{0:p} {0:}", nullptr) );
    VERIFY( is_format_string_for("{:d} {:+d}", true, true) );
! 
!   if (!std::is_constant_evaluated())
!     {
!       VERIFY( is_format_string_for("{:0<-#03Ld}", 1) );
!       VERIFY( is_format_string_for("{1:0<-#03.4Lf}", 1, 2.3) );
!       VERIFY( is_format_string_for("{1:3.3f}", 1, 2.3) );
!     }
!   
    VERIFY( is_format_string_for("{:#d}", 'c') );
    VERIFY( is_format_string_for("{:#d}", true) );
    VERIFY( is_format_string_for("{0:s} {0:?}", "str") == escaped_strings_supported );
*************** test_format_spec()
*** 130,142 ****
    VERIFY( ! is_format_string_for("{:3.3p}", nullptr) );
  
    // Dynamic precision arg must be a standard integer type.
!   VERIFY( ! is_format_string_for("{:.{}f}", 1.0, 1.5) );
!   VERIFY( ! is_format_string_for("{:.{}f}", 1.0, true) );
!   VERIFY( ! is_format_string_for("{:.{}f}", 1.0, "str") );
!   VERIFY( ! is_format_string_for("{:.{}f}", 1.0, nullptr) );
  #ifdef __SIZEOF_INT128__
!   VERIFY( ! is_format_string_for("{:{}f}", 1.0, static_cast<unsigned __int128>(1)) );
  #endif
  
    // Invalid presentation types for integers.
    VERIFY( ! is_format_string_for("{:f}", 1) );
--- 142,157 ----
    VERIFY( ! is_format_string_for("{:3.3p}", nullptr) );
  
    // Dynamic precision arg must be a standard integer type.
!   if (!std::is_constant_evaluated())
!     {
!       VERIFY( ! is_format_string_for("{:.{}f}", 1.0, 1.5) );
!       VERIFY( ! is_format_string_for("{:.{}f}", 1.0, true) );
!       VERIFY( ! is_format_string_for("{:.{}f}", 1.0, "str") );
!       VERIFY( ! is_format_string_for("{:.{}f}", 1.0, nullptr) );
  #ifdef __SIZEOF_INT128__
!       VERIFY( ! is_format_string_for("{:{}f}", 1.0, static_cast<unsigned __int128>(1)) );
  #endif
+     }
  
    // Invalid presentation types for integers.
    VERIFY( ! is_format_string_for("{:f}", 1) );
*************** test_format_spec()
*** 164,170 ****
    VERIFY( ! is_format_string_for(L"{:9999999}", 1) );
  }
  
! void
  test_pr110862()
  {
    try {
--- 179,185 ----
    VERIFY( ! is_format_string_for(L"{:9999999}", 1) );
  }
  
! CONSTEXPR void
  test_pr110862()
  {
    try {
*************** test_pr110862()
*** 178,184 ****
    }
  }
  
! void
  test_pr110974()
  {
    try {
--- 193,199 ----
    }
  }
  
! CONSTEXPR void
  test_pr110974()
  {
    try {
*************** test_pr110974()
*** 197,207 ****
    }
  }
  
! int main()
  {
    test_no_args();
    test_indexing();
    test_format_spec();
    test_pr110862();
    test_pr110974();
  }
--- 212,234 ----
    }
  }
  
! CONSTEXPR bool
! test_all()
  {
    test_no_args();
    test_indexing();
    test_format_spec();
    test_pr110862();
    test_pr110974();
+ 
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/format/tuple.cc gcc-17-20260607/libstdc++-v3/testsuite/std/format/tuple.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/format/tuple.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/format/tuple.cc	Sun Jun  7 22:32:17 2026
***************
*** 1,5 ****
  // { dg-do run { target c++23 } }
! // { dg-options "-fexec-charset=UTF-8" }
  // { dg-timeout-factor 2 }
  
  #include <format>
--- 1,5 ----
  // { dg-do run { target c++23 } }
! // { dg-options "-fexec-charset=UTF-8 -fconstexpr-ops-limit=500000000" }
  // { dg-timeout-factor 2 }
  
  #include <format>
***************
*** 8,13 ****
--- 8,19 ----
  #include <tuple>
  #include <utility>
  
+ #ifdef __glibcxx_constexpr_format
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  struct NotFormattable
  {};
  
*************** static_assert( !std::formattable<std::pa
*** 15,21 ****
  static_assert( !std::formattable<std::tuple<int, NotFormattable, int>, wchar_t> );
  
  template<typename... Args>
! bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
--- 21,27 ----
  static_assert( !std::formattable<std::tuple<int, NotFormattable, int>, wchar_t> );
  
  template<typename... Args>
! CONSTEXPR bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
*************** is_format_string_for(const char* str, Ar
*** 27,33 ****
  }
  
  template<typename... Args>
! bool
  is_format_string_for(const wchar_t* str, Args&&... args)
  {
    try {
--- 33,39 ----
  }
  
  template<typename... Args>
! CONSTEXPR bool
  is_format_string_for(const wchar_t* str, Args&&... args)
  {
    try {
*************** is_format_string_for(const wchar_t* str,
*** 41,47 ****
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
  #define WIDEN(S) WIDEN_(CharT, S)
  
! void
  test_format_string()
  {
    // invalid format stringss
--- 47,53 ----
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
  #define WIDEN(S) WIDEN_(CharT, S)
  
! CONSTEXPR void
  test_format_string()
  {
    // invalid format stringss
*************** void test_multi()
*** 123,129 ****
  }
  
  template<typename CharT, typename Tuple>
! void test_empty()
  {
    std::basic_string<CharT> res;
  
--- 129,136 ----
  }
  
  template<typename CharT, typename Tuple>
! CONSTEXPR void
! test_empty()
  {
    std::basic_string<CharT> res;
  
*************** void test_empty()
*** 142,148 ****
  }
  
  template<typename CharT, typename Pair>
! void test_pair()
  {
    using Ft = std::remove_cvref_t<std::tuple_element_t<0, Pair>>;
    using St = std::remove_cvref_t<std::tuple_element_t<1, Pair>>;
--- 149,156 ----
  }
  
  template<typename CharT, typename Pair>
! CONSTEXPR void
! test_pair()
  {
    using Ft = std::remove_cvref_t<std::tuple_element_t<0, Pair>>;
    using St = std::remove_cvref_t<std::tuple_element_t<1, Pair>>;
*************** void test_pair()
*** 167,173 ****
  }
  
  template<typename CharT, template<typename, typename> class PairT>
! void test_pair_e()
  {
    test_pair<CharT, PairT<int, std::basic_string<CharT>>>();
    test_pair<CharT, PairT<int, const CharT*>>();
--- 175,182 ----
  }
  
  template<typename CharT, template<typename, typename> class PairT>
! CONSTEXPR void
! test_pair_e()
  {
    test_pair<CharT, PairT<int, std::basic_string<CharT>>>();
    test_pair<CharT, PairT<int, const CharT*>>();
*************** struct std::formatter<MyPair<Pair>, Char
*** 196,202 ****
    { return _formatter.parse(pc);  }
  
    template<typename Out>
!   typename std::basic_format_context<Out, CharT>::iterator
    format(const MyPair<Pair>& mp,
  	 std::basic_format_context<Out, CharT>& fc) const
    { return _formatter.format(mp, fc); }
--- 205,211 ----
    { return _formatter.parse(pc);  }
  
    template<typename Out>
!   CONSTEXPR typename std::basic_format_context<Out, CharT>::iterator
    format(const MyPair<Pair>& mp,
  	 std::basic_format_context<Out, CharT>& fc) const
    { return _formatter.format(mp, fc); }
*************** private:
*** 206,212 ****
  };
  
  template<typename CharT, template<typename, typename> class PairT>
! void test_custom()
  {
    std::basic_string<CharT> res;
    MyPair<PairT<int, const CharT*>> c1(1, WIDEN("abc"));
--- 215,222 ----
  };
  
  template<typename CharT, template<typename, typename> class PairT>
! CONSTEXPR void
! test_custom()
  {
    std::basic_string<CharT> res;
    MyPair<PairT<int, const CharT*>> c1(1, WIDEN("abc"));
*************** void test_custom()
*** 228,236 ****
  }
  
  template<typename CharT>
! void test_outputs()
  {
!   test_multi<CharT>();
    test_empty<CharT, std::tuple<>>();
    test_pair_e<CharT, std::pair>();
    test_pair_e<CharT, std::tuple>();
--- 238,249 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
! test_outputs()
  {
!   if (!std::is_constant_evaluated())
!     test_multi<CharT>();
! 
    test_empty<CharT, std::tuple<>>();
    test_pair_e<CharT, std::pair>();
    test_pair_e<CharT, std::tuple>();
*************** void test_outputs()
*** 238,244 ****
    test_custom<CharT, std::tuple>();
  }
  
! void test_nested()
  {
    std::string res;
    std::tuple<std::tuple<>, std::pair<int, std::string>> tt{{}, {1, "abc"}};
--- 251,258 ----
    test_custom<CharT, std::tuple>();
  }
  
! CONSTEXPR void
! test_nested()
  {
    std::string res;
    std::tuple<std::tuple<>, std::pair<int, std::string>> tt{{}, {1, "abc"}};
*************** void test_nested()
*** 251,257 ****
    VERIFY( res == R"((): (1, "abc"))" );
  }
  
! bool strip_quote(std::string_view& v)
  {
    if (!v.starts_with('"'))
      return false;
--- 265,272 ----
    VERIFY( res == R"((): (1, "abc"))" );
  }
  
! CONSTEXPR bool
! strip_quote(std::string_view& v)
  {
    if (!v.starts_with('"'))
      return false;
*************** bool strip_quote(std::string_view& v)
*** 259,265 ****
    return true;
  }
  
! bool strip_prefix(std::string_view& v, std::string_view expected, bool quoted = false)
  {
    if (quoted && !strip_quote(v))
      return false;
--- 274,281 ----
    return true;
  }
  
! CONSTEXPR bool
! strip_prefix(std::string_view& v, std::string_view expected, bool quoted = false)
  {
    if (quoted && !strip_quote(v))
      return false;
*************** bool strip_prefix(std::string_view& v, s
*** 271,277 ****
    return true;
  }
  
! bool strip_parens(std::string_view& v)
  {
    if (!v.starts_with('(') || !v.ends_with(')'))
      return false;
--- 287,294 ----
    return true;
  }
  
! CONSTEXPR bool
! strip_parens(std::string_view& v)
  {
    if (!v.starts_with('(') || !v.ends_with(')'))
      return false;
*************** bool strip_parens(std::string_view& v)
*** 280,286 ****
    return true;
  }
  
! bool strip_prefix(std::string_view& v, size_t n, char c)
  {
    size_t pos = v.find_first_not_of(c);
    if (pos == std::string_view::npos)
--- 297,304 ----
    return true;
  }
  
! CONSTEXPR bool
! strip_prefix(std::string_view& v, size_t n, char c)
  {
    size_t pos = v.find_first_not_of(c);
    if (pos == std::string_view::npos)
*************** bool strip_prefix(std::string_view& v, s
*** 291,297 ****
    return true;
  }
  
! void test_padding()
  {
    std::string res;
    std::string_view resv;
--- 309,316 ----
    return true;
  }
  
! CONSTEXPR void
! test_padding()
  {
    std::string res;
    std::string_view resv;
*************** struct std::formatter<Custom, CharT>
*** 351,363 ****
    { return pc.begin();  }
  
    template<typename Out>
!   typename std::basic_format_context<Out, CharT>::iterator
    format(Custom, const std::basic_format_context<Out, CharT>& fc) const
    { return fc.out(); }
  };
  
  template<template<typename...> typename Tuple>
! void test_nonblocking()
  {
    static_assert(std::enable_nonlocking_formatter_optimization<
  		  Tuple<int, float>>);
--- 370,383 ----
    { return pc.begin();  }
  
    template<typename Out>
!   CONSTEXPR typename std::basic_format_context<Out, CharT>::iterator
    format(Custom, const std::basic_format_context<Out, CharT>& fc) const
    { return fc.out(); }
  };
  
  template<template<typename...> typename Tuple>
! CONSTEXPR void
! test_nonblocking()
  {
    static_assert(std::enable_nonlocking_formatter_optimization<
  		  Tuple<int, float>>);
*************** void test_nonblocking()
*** 374,380 ****
  		  Tuple<Custom&, float&>>);
  }
  
! int main()
  {
    test_format_string();
    test_outputs<char>();
--- 394,401 ----
  		  Tuple<Custom&, float&>>);
  }
  
! CONSTEXPR bool
! test_all()
  {
    test_format_string();
    test_outputs<char>();
*************** int main()
*** 384,387 ****
--- 405,419 ----
  
    test_nonblocking<std::pair>();
    test_nonblocking<std::tuple>();
+ 
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc gcc-17-20260607/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc
*** gcc-17-20260531/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc	Sun Jun  7 22:32:17 2026
*************** auto si7 = std::format("{:%Q}", sys_info
*** 161,164 ****
  auto si8 = std::format("{:%Z}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } }
  #endif
  
! // { dg-error "call to non-'constexpr' function" "" { target *-*-* } 0 }
--- 161,165 ----
  auto si8 = std::format("{:%Z}", sys_info()); // { dg-error "call to consteval function" "" { target cxx11_abi } }
  #endif
  
! // { dg-error "call to non-'constexpr' function" "" { target { c++23_down || { ! cxx11_abi } } } 0 }
! // { dg-error "'std::terminate' called after throwing an exception" "" { target { { ! c++23_down } && cxx11_abi } } 0 }
diff -Nrcpad gcc-17-20260531/libstdc++-v3/testsuite/util/testsuite_fs.h gcc-17-20260607/libstdc++-v3/testsuite/util/testsuite_fs.h
*** gcc-17-20260531/libstdc++-v3/testsuite/util/testsuite_fs.h	Sun May 31 22:32:16 2026
--- gcc-17-20260607/libstdc++-v3/testsuite/util/testsuite_fs.h	Sun Jun  7 22:32:17 2026
*************** namespace __gnu_test
*** 67,72 ****
--- 67,74 ----
    compare_paths(const test_fs::path& p1,
  		const test_fs::path& p2)
    {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
      PATH_CHK( p1, p2, native );
      PATH_CHK( p1, p2, string );
      PATH_CHK( p1, p2, empty );
*************** namespace __gnu_test
*** 90,96 ****
        throw test_fs::filesystem_error(
  	  "!equal(begin1, end1, begin2)", p1, p2,
  	  std::make_error_code(std::errc::invalid_argument) );
! 
    }
  
    const std::string test_paths[] = {
--- 92,98 ----
        throw test_fs::filesystem_error(
  	  "!equal(begin1, end1, begin2)", p1, p2,
  	  std::make_error_code(std::errc::invalid_argument) );
! #pragma GCC diagnostic pop
    }
  
    const std::string test_paths[] = {
